Megosztás a következőn keresztül:


Microsoft Intune App SDK Xamarin-kötések

Fontos

A Xamarin.Forms a .NET többplatformos alkalmazás felhasználói felületére (MAUI) vált. A meglévő Xamarin-projekteket át kell telepíteni a .NET MAUI-ba. A Xamarin-projektek .NET-re való frissítéséről további információt a Frissítés Xamarinról .NET-re & .NET MAUI-ra című dokumentációban talál.

A Xamarin támogatása 2024. május 1-ével megszűnt az összes Xamarin SDK esetében, beleértve a Xamarin.Formst és az Intune App SDK Xamarin-kötéseket. Az Intune támogatása Android és iOS platformokon: Intune App SDK for .NET MAUI – Androidés Microsoft Intune App SDK for MAUI.iOS.

Áttekintés

Az Intune App SDK Xamarin-kötések lehetővé teszik az Intune alkalmazásvédelmi szabályzatát a Xamarinnal készült iOS- és Android-alkalmazásokban. A kötések lehetővé teszik a fejlesztők számára, hogy könnyen beépítsék az Intune alkalmazásvédelmi funkcióit a Xamarin-alapú alkalmazásukba.

A Microsoft Intune App SDK Xamarin-kötések lehetővé teszik, hogy intune alkalmazásvédelmi szabályzatokat (más néven APP- vagy MAM-szabályzatokat) építsen be a Xamarinnal fejlesztett alkalmazásokba. A MAM-kompatibilis alkalmazások integrálva lesznek az Intune App SDK-val. A rendszergazdák akkor helyezhetnek üzembe alkalmazásvédelmi szabályzatokat a mobilalkalmazásban, ha az Intune aktívan kezeli az alkalmazást.

Mi támogatott?

Fejlesztői gépek

  • Windows (Visual Studio 15.7-es vagy újabb verzió)
  • macOS

Mobilalkalmazás-platformok

  • Android
  • iOS

Intune mobilalkalmazás-kezelési forgatókönyvek

  • Intune MAM
  • Intune MDM-ben regisztrált eszközök
  • Külső EMM-ben regisztrált eszközök

Az Intune App SDK Xamarin-kötésekkel létrehozott Xamarin-alkalmazások mostantól intune-alkalmazásvédelmi szabályzatokat kaphatnak az Intune mobileszköz-kezelési (MDM) regisztrált és nem regisztrált eszközökön is.

Előfeltételek

Tekintse át a licencfeltételeket. Nyomtassa ki és őrizze meg a rekordok licencfeltételeinek másolatát. Az Intune App SDK Xamarin Bindings letöltésével és használatával Ön elfogadja az ilyen licencfeltételeket. Ha nem fogadja el őket, ne használja a szoftvert.

Az Intune SDK a Microsoft Authentication Libraryre (MSAL) támaszkodik a hitelesítési és feltételes indítási forgatókönyvekhez, amelyekhez az alkalmazásokat a Microsoft Entra ID azonosítóval kell konfigurálni.

Ha az alkalmazás már konfigurálva van az MSAL használatára, és saját egyéni ügyfél-azonosítóval rendelkezik a Microsoft Entra-azonosítóval való hitelesítéshez, győződjön meg arról, hogy a Xamarin-alkalmazás engedélyeit az Intune Mobilalkalmazás-kezelés (MAM) szolgáltatáshoz kell adni. Az Intune SDK használatának első lépéseiről az Intune SDK útmutatójának "Az alkalmazás hozzáférésének biztosítása az Intune Mobile App Management szolgáltatáshoz" című szakaszában található utasításokat használhatja.

Biztonsági szempontok

A lehetséges hamisítás, információfelfedés és jogosultságszint-emelési támadások megelőzése érdekében:

  • Győződjön meg arról, hogy a Xamarin-alkalmazásfejlesztés biztonságos munkahelyen történik.
  • Győződjön meg arról, hogy a kötések érvényes Microsoft-forrásból származnak:
  • Konfigurálja a NuGet-konfigurációt a projekthez, hogy megbízhatónak minősítse az aláírt, nem módosított NuGet-csomagokat. További információt az aláírt csomagok telepítésével kapcsolatos cikkben talál.
  • Biztonságossá teheti a Xamarin-alkalmazást tartalmazó kimeneti könyvtárat. Érdemes lehet felhasználói szintű könyvtárat használni a kimenethez.

Az Intune alkalmazásvédelmi szabályzatok engedélyezése iOS-mobilalkalmazásban

Fontos

Az Intune rendszeresen kiadja az Intune App SDK frissítéseit. Rendszeresen ellenőrizze, hogy az Intune App SDK Xamarin-kötései tartalmazzák-e a frissítéseket, és beépítik-e a szoftverfejlesztési kiadási ciklusba annak biztosítása érdekében, hogy az alkalmazások támogatják az alkalmazásvédelmi szabályzat legújabb beállításait.

  1. Adja hozzá a Microsoft.Intune.MAM.Xamarin.iOS NuGet-csomagot a Xamarin.iOS-projekthez.

  2. Kövesse az Intune App SDK iOS-mobilalkalmazásba való integrálásához szükséges általános lépéseket. Kezdje az iOS-hez készült Intune App SDK fejlesztői útmutatójának 3. lépésével. Az IntuneMAMConfigurator futtatásának ezen szakaszában kihagyhatja az utolsó lépést, mivel ez az eszköz megtalálható a Microsoft.Intune.MAM.Xamarin.iOS csomagban, és a buildeléskor automatikusan futni fog. Fontos: A kulcsláncmegosztás engedélyezése egy alkalmazáshoz kissé eltér a Visual Studióban az Xcode-tól. Nyissa meg az alkalmazás Jogosultságok plist elemét, és győződjön meg arról, hogy a "Kulcskarika engedélyezése" lehetőség engedélyezve van, és a megfelelő kulcsláncmegosztási csoportokat hozzáadja a szakaszhoz. Ezután győződjön meg arról, hogy a jogosultságok plist értéke a projekt "iOS-csomagaláírási" beállításainak "Egyéni jogosultságok" mezőjében van megadva az összes megfelelő konfiguráció-/platformkombinációhoz.

  3. A kötések hozzáadása és az alkalmazás megfelelő konfigurálása után az alkalmazás elkezdheti használni az Intune SDK API-jait. Ehhez a következő névteret kell tartalmaznia:

    using Microsoft.Intune.MAM;
    
  4. Az alkalmazásvédelmi szabályzatok fogadásának megkezdéséhez az alkalmazásnak regisztrálnia kell az Intune MAM szolgáltatásban. Ha az alkalmazás nem használja a Microsoft Authentication Libraryt (MSAL) a felhasználók hitelesítésére, és azt szeretné, hogy az Intune SDK kezelje a hitelesítést, az alkalmazásnak meg kell adnia a felhasználó egyszerű felhasználónevét az IntuneMAMEnrollmentManager LoginAndEnrollAccount metódusának:

     IntuneMAMEnrollmentManager.Instance.LoginAndEnrollAccount([NullAllowed] string identity);
    

    Előfordulhat, hogy az alkalmazások null értéket adnak át, ha a felhasználó UPN-je ismeretlen a hívás időpontjában. Ebben az esetben a rendszer arra kéri a felhasználókat, hogy mind az e-mail-címüket, mind a jelszavukat meg kell adniuk.

    Ha az alkalmazás már használja az MSAL-t a felhasználók hitelesítésére, konfigurálhat egyszeri bejelentkezést (SSO) az alkalmazás és az Intune SDK között. Először felül kell bírálnia az Intune SDK által az alkalmazáshoz használt alapértelmezett Microsoft Entra-beállításokat. Ezt az alkalmazás Info.plist fájljában található IntuneMAMSettings szótárban teheti meg az iOS-hez készült Intune App SDK fejlesztői útmutatójában leírtak szerint, de kódban is megteheti az IntuneMAMSettings osztály Microsoft Entra ID felülbírálási tulajdonságaival. Az Info.plist megközelítés azoknál az alkalmazásoknál ajánlott, amelyek MSAL-beállításai statikusak, míg a felülbírálási tulajdonságokat olyan alkalmazások esetében javasoljuk, amelyek futásidőben határozzák meg ezeket az értékeket. Miután az összes SSO-beállítás konfigurálva lett, az alkalmazásnak meg kell adnia a felhasználó egyszerű felhasználónevét az IntuneMAMEnrollmentManager RegisterAndEnrollAccount metódusának a sikeres hitelesítés után:

    IntuneMAMEnrollmentManager.Instance.RegisterAndEnrollAccount(string identity);
    

    Az alkalmazások az EnrollmentRequestWithStatus metódus intuneMAMEnrollmentDelegate alosztályában történő implementálásával és az IntuneMAMEnrollmentManager Delegate tulajdonságának az adott osztály egy példányára való beállításával állapíthatják meg a regisztrációs kísérlet eredményét.

    Sikeres regisztráció esetén az alkalmazások a következő tulajdonság lekérdezésével megállapíthatják a regisztrált fiók egyszerű felhasználónevét (ha korábban ismeretlen):

     string enrolledAccount = IntuneMAMEnrollmentManager.Instance.EnrolledAccount;
    

Az Intune alkalmazásvédelmi szabályzatok engedélyezése androidos mobilalkalmazásban

  1. Adja hozzá a Microsoft.Intune.MAM.Xamarin.Android NuGet-csomagot a Xamarin.Android-projekthez.
    1. Xamarin.Forms-alkalmazás esetén adja hozzá a Microsoft.Intune.MAM.Remapper.Tasks NuGet-csomagot a Xamarin.Android-projekthez is.
  2. További részletekért kövesse az Intune App SDK Android-mobilalkalmazásba való integrálásához szükséges általános lépéseket, és tekintse meg ezt a dokumentumot.

Xamarin.Android-integráció

Az Intune App SDK integrálásának teljes áttekintését az Androidhoz készült Microsoft Intune App SDK fejlesztői útmutatójában találja. Ahogy végigolvasta az útmutatót, és integrálja az Intune App SDK-t a Xamarin-alkalmazással, az alábbi szakaszok a Java-ban fejlesztett natív Android-alkalmazás és a C# nyelven fejlesztett Xamarin-alkalmazás implementációja közötti különbségeket hivatottak kiemelni. Ezeket a szakaszokat kiegészítőként kell kezelni, és nem helyettesíthetik az útmutató teljes olvasását.

Remapper

Az 1.4428.1-es kiadástól kezdve a Microsoft.Intune.MAM.Remapper csomag hozzáadható egy Xamarin.Android-alkalmazáshoz buildelési eszközként a MAM-osztály, a metódus és a rendszerszolgáltatások cseréjének végrehajtásához. Ha a Remapper szerepel a fájlban, az átnevezett metódusok és MAM-alkalmazások szakasz MAM-egyenértékű helyettesítő részei automatikusan el lesznek hajtva az alkalmazás létrehozásakor.

Ha ki szeretne zárni egy osztályt a MAM-ificationből a Remapper által, a következő tulajdonság adható hozzá a projektfájlhoz .csproj .

  <PropertyGroup>
    <ExcludeClasses>Semicolon separated list of relative class paths to exclude from MAM-ification</ExcludeClasses>
  </PropertyGroup>

Megjegyzés:

A Remapper jelenleg megakadályozza a Xamarin.Android-alkalmazások hibakeresését. Az alkalmazás hibakereséséhez javasolt a manuális integráció.

Átnevezett metódusok

Az Android-osztályban elérhető metódusok sok esetben véglegesként vannak megjelölve a MAM csereosztályban. Ebben az esetben a MAM helyettesítő osztálya egy hasonló nevű metódust biztosít (utótaggal MAM), amelyet felül kell bírálni. Ha például a parancsból MAMActivityszármazik, a felülbírálás OnCreate() és a hívás Activitybase.OnCreate()helyett felül kell bírálnia OnMAMCreate() és meghívnia a parancsotbase.OnMAMCreate().

MAM-alkalmazás

Az alkalmazásnak definiálnia kell egy osztályt Android.App.Application . Ha manuálisan integrálja a MAM-t, akkor a-tól MAMApplicationkell örökölnie. Győződjön meg arról, hogy az alosztály megfelelően van díszítve a [Application] attribútummal, és felülbírálja a konstruktort (IntPtr, JniHandleOwnership) .

    [Application]
    class TaskrApp : MAMApplication
    {
    public TaskrApp(IntPtr handle, JniHandleOwnership transfer)
        : base(handle, transfer) { }

Megjegyzés:

A MAM Xamarin-kötésekkel kapcsolatos probléma az alkalmazás összeomlását okozhatja, amikor hibakeresési módban van üzembe helyezve. Áthidaló megoldásként az Debuggable=false attribútumot hozzá kell adni az Application osztályhoz, és a android:debuggable="true" jelölőt el kell távolítani a jegyzékfájlból, ha manuálisan lett beállítva.

Az alkalmazás részvételét igénylő funkciók engedélyezése

Példa: Annak meghatározása, hogy szükséges-e PIN-kód az alkalmazáshoz

MAMPolicyManager.GetPolicy(currentActivity).IsPinRequired;

Példa: Az elsődleges Intune-felhasználó meghatározása

IMAMUserInfo info = MAMComponents.Get<IMAMUserInfo>();
return info?.PrimaryUser;

Példa: Annak megállapítása, hogy engedélyezett-e az eszközre vagy a felhőbeli tárhelyre való mentés

MAMPolicyManager.GetPolicy(currentActivity).GetIsSaveToLocationAllowed(SaveLocation service, String username);

Regisztráció az SDK értesítéseihez

Az alkalmazásnak regisztrálnia kell az értesítésekre az SDK-ból egy MAMNotificationReceiver létrehozásával és a használatával történő regisztrálásával MAMNotificationReceiverRegistry. Ehhez meg kell adnia a fogadót és a kívánt értesítéstípust a fájlban App.OnMAMCreate, ahogy az alábbi példában látható:

public override void OnMAMCreate()
{
    // Register the notification receivers
    IMAMNotificationReceiverRegistry registry = MAMComponents.Get<IMAMNotificationReceiverRegistry>();
    foreach (MAMNotificationType notification in MAMNotificationType.Values())
    {
        registry.RegisterReceiver(new ToastNotificationReceiver(this), notification);
    }
    ...

MAM-regisztrációkezelő

IMAMEnrollmentManager mgr = MAMComponents.Get<IMAMEnrollmentManager>();

Xamarin.Forms-integráció

Az alkalmazások esetében Xamarin.Forms a csomag automatikusan elvégzi a Microsoft.Intune.MAM.Remapper MAM-osztály cseréjét úgy, hogy osztályokat injektál MAM a gyakran használt Xamarin.Forms osztályok osztályhierarchiájába.

Megjegyzés:

A Xamarin.Forms-integrációt a fent részletezett Xamarin.Android-integráció mellett kell elvégezni. A Remapper eltérően viselkedik a Xamarin.Forms-alkalmazások esetében, ezért a manuális MAM-cserét továbbra is végre kell hajtani.

Miután hozzáadta a Remappert a projekthez, el kell végeznie a MAM-egyenértékű cserét. Például a FormsAppCompatActivity és FormsApplicationActivity a továbbra is használható az alkalmazásban, feltéve, hogy OnCreate felülbírálja a és OnResume a értékét a MAM-megfelelőkkel OnMAMCreate , illetve OnMAMResume a helyett.

    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
    {
        protected override void OnMAMCreate(Bundle savedInstanceState)
        {
            base.OnMAMCreate(savedInstanceState);
            global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
            LoadApplication(new App());
        }

Ha a csere nem történik meg, akkor a következő fordítási hibákba ütközhet, amíg el nem végezte a cserét:

  • CS0239-ás fordítóhiba. Ez a hiba gyakran jelenik meg ebben az formában 'MainActivity.OnCreate(Bundle)': cannot override inherited member 'MAMAppCompatActivityBase.OnCreate(Bundle)' because it is sealed. Ez azért várható, mert amikor a Remapper módosítja a Xamarin-osztályok öröklését, bizonyos függvények lesznek létrehozva sealed , és egy új MAM-változatot ad hozzá a felülbíráláshoz.
  • CS0507-ös fordítói hiba: Ez a hiba gyakran jelenik meg ebben az formában 'MyActivity.OnRequestPermissionsResult()' cannot change access modifiers when overriding 'public' inherited member .... Amikor a Remapper megváltoztatja egyes Xamarin-osztályok öröklését, bizonyos tagfüggvények értékre publicváltoznak. Ha felülbírálja ezen függvények bármelyikét, a felülbírálások public hozzáférési módosítóit is módosítania kell.

Megjegyzés:

A Remapper újraírja a Visual Studio által az IntelliSense automatikus kiegészítéséhez használt függőséget. Ezért előfordulhat, hogy újra kell betöltenie és újra kell építenie a projektet, amikor a Remapper hozzá van adva az IntelliSense-hez a módosítások helyes felismeréséhez.

Hibaelhárítás

  • Ha indításkor üres, fehér képernyő jelenik meg az alkalmazásban, előfordulhat, hogy a fő szálon kell végrehajtania a navigációs hívásokat.
  • Az Intune SDK Xamarin-kötések nem támogatják a platformfüggetlen keretrendszert (például MvvmCross) használó alkalmazásokat az MvvmCross és az Intune MAM-osztályok közötti ütközések miatt. Bár egyes ügyfeleknek sikeres volt az integráció, miután az alkalmazásaikat egyszerű Xamarin.Formsra helyezték át, nem biztosítunk explicit útmutatást vagy beépülő modulokat az MvvmCrosst használó alkalmazásfejlesztők számára.

Céges portál alkalmazás

Az Intune SDK Xamarin-kötések a Céges portál Android-alkalmazásának jelenlétére támaszkodnak az eszközön az alkalmazásvédelmi szabályzatok engedélyezéséhez. A Céges portál alkalmazásvédelmi szabályzatokat kér le az Intune szolgáltatásból. Amikor az alkalmazás inicializál, betölti a szabályzatot és a kódot, hogy kényszerítse a szabályzatot a Céges portálról. A felhasználónak nem kell bejelentkeznie.

Megjegyzés:

Ha a Céges portál alkalmazás nem az Android-eszközön található, az Intune által felügyelt alkalmazások ugyanúgy viselkednek, mint az Intune alkalmazásvédelmi szabályzatait nem támogató normál alkalmazások.

Az eszközregisztráció nélküli alkalmazásvédelem esetén a felhasználónak nem kell regisztrálnia az eszközt a Céges portál alkalmazással.

Támogatás

Ha a szervezete egy meglévő Intune-ügyfél, a Microsoft támogatási képviselőjével együttműködve nyisson meg egy támogatási jegyet, és hozzon létre egy problémát a GitHub-problémák oldalán. Segíteni fogunk, amint tudunk.