Sdílet prostřednictvím


Xamarinové vazby sady Microsoft Intune App SDK

Důležité

Xamarin.Forms se vyvinul do uživatelského rozhraní .NET Multi-platform App UI (MAUI). Existující projekty Xamarin by se měly migrovat do .NET MAUI. Další informace o upgradu projektů Xamarin na .NET najdete v dokumentaci Upgrade z Xamarinu na .NET & .NET MAUI .

Podpora Xamarinu skončila k 1. květnu 2024 pro všechny sady Xamarin SDK, včetně Xamarin.Forms a Xamarinových vazeb sady Intune App SDK. Informace o podpoře Intune na platformách Android a iOS najdete v tématu Intune App SDK pro .NET MAUI – Androida Microsoft Intune App SDK pro MAUI.iOS.

Přehled

Xamarinové vazby sady Intune App SDK umožňují zásady ochrany aplikací Intune v aplikacích pro iOS a Android vytvořených pomocí Xamarinu. Vazby umožňují vývojářům snadno zabudovat funkce ochrany aplikací Intune do aplikace založené na Xamarinu.

Xamarinové vazby sady Microsoft Intune App SDK umožňují začlenit zásady ochrany aplikací Intune (označované také jako zásady APP nebo MAM) do aplikací vyvinutých pomocí Xamarinu. Aplikace s podporou MAM je aplikace integrovaná se sadou Intune App SDK. Správci IT můžou nasadit zásady ochrany aplikací do mobilní aplikace, když ji Intune aktivně spravuje.

Co se podporuje?

Počítače pro vývojáře

  • Windows (Visual Studio verze 15.7+)
  • macOS

Platformy mobilních aplikací

  • Android
  • iOS

Scénáře správy mobilních aplikací Intune

  • Intune MAM
  • Zařízení zaregistrovaná v Intune MDM
  • Zařízení zaregistrovaná v EMM třetích stran

Aplikace Xamarin vytvořené pomocí xamarinových vazeb sady Intune App SDK teď můžou přijímat zásady ochrany aplikací Intune na zařízeních zaregistrovaných ve správě mobilních zařízení (MDM) Intune i na neregistrovaných zařízeních.

Požadavky

Přečtěte si licenční podmínky. Vytiskněte a uchovávejte kopii licenčních podmínek pro své záznamy. Stažením a používáním xamarinových vazeb sady Intune App SDK vyjadřujete souhlas s těmito licenčními podmínkami. Pokud je nepřijmete, software nepoužívejte.

Intune SDK spoléhá na microsoftovou knihovnu MSAL (Microsoft Authentication Library) pro scénáře ověřování a podmíněného spouštění, které vyžadují, aby aplikace byly nakonfigurované pomocí Microsoft Entra ID.

Pokud je vaše aplikace už nakonfigurovaná tak, aby používala MSAL, a má vlastní ID klienta, které se používá k ověření pomocí Microsoft Entra ID, ujistěte se, že je postup udělení oprávnění vaší aplikaci Xamarin službě Intune Mobile Application Management (MAM). Postupujte podle pokynů v části Udělení přístupu aplikace ke službě Intune Mobile App Management Service v příručce Začínáme se sadou Intune SDK.

Důležité informace o zabezpečení

Pokud chcete zabránit potenciálnímu falšování identity, zpřístupnění informací a útokům na zvýšení oprávnění:

  • Ujistěte se, že se vývoj aplikací Xamarin provádí na zabezpečené pracovní stanici.
  • Ujistěte se, že vazby pocházejí z platného zdroje Microsoftu:
  • Nakonfigurujte konfiguraci NuGet pro váš projekt tak, aby důvěřovala podepsaným, neupraveným balíčkům NuGet. Další informace najdete v tématu instalace podepsaných balíčků .
  • Zabezpečte výstupní adresář, který obsahuje aplikaci Xamarin. Zvažte použití adresáře na úrovni uživatele pro výstup.

Povolení zásad ochrany aplikací Intune v mobilní aplikaci pro iOS

Důležité

Intune pravidelně vydává aktualizace sady Intune App SDK. Pravidelně kontrolujte aktualizace xamarinových vazeb sady Intune App SDK a zařaďte je do cyklu vydávání verzí softwaru, abyste měli jistotu, že vaše aplikace podporují nejnovější nastavení zásad ochrany aplikací.

  1. Přidejte balíček NuGet Microsoft.Intune.MAM.Xamarin.iOS do projektu Xamarin.iOS.

  2. Postupujte podle obecných kroků potřebných k integraci sady Intune App SDK do mobilní aplikace pro iOS. Můžete začít krokem 3 pokynů k integraci z Příručky pro vývojáře sady Intune App SDK pro iOS. Poslední krok v této části spuštění IntuneMAMConfigurator můžete přeskočit, protože tento nástroj je součástí balíčku Microsoft.Intune.MAM.Xamarin.iOS a spustí se automaticky v době sestavení. Důležité: Povolení sdílení řetězce klíčů pro aplikaci se v sadě Visual Studio od Xcode mírně liší. Otevřete soubor plist nároků aplikace a ujistěte se, že je povolená možnost Povolit řetězce klíčů a že jsou v této části přidány příslušné skupiny sdílení řetězce klíčů. Pak se ujistěte, že je v poli Vlastní nároky v možnostech podepisování balíčků pro iOS projektu zadán seznam nároků plist pro všechny vhodné kombinace konfigurace a platformy.

  3. Po přidání vazeb a správné konfiguraci aplikace může vaše aplikace začít používat rozhraní API sady Intune SDK. Chcete-li to provést, musíte zahrnout následující obor názvů:

    using Microsoft.Intune.MAM;
    
  4. Pokud chcete začít přijímat zásady ochrany aplikací, musí se vaše aplikace zaregistrovat ve službě Intune MAM. Pokud vaše aplikace k ověřování uživatelů nepoužívá knihovnu Microsoft Authentication Library (MSAL) a chcete, aby ověřování zpracovávala sada Intune SDK, měla by vaše aplikace poskytnout hlavní název uživatele (UPN) metody LoginAndEnrollaccount intuneMAMEnrollmentManager:

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

    Aplikace můžou předat hodnotu null, pokud je hlavní název uživatele (UPN) v době volání neznámý. V takovém případě se uživatelům zobrazí výzva k zadání e-mailové adresy i hesla.

    Pokud už vaše aplikace k ověřování uživatelů používá MSAL, můžete mezi aplikací a sadou Intune SDK nakonfigurovat prostředí jednotného přihlašování. Nejprve budete muset přepsat výchozí nastavení Microsoft Entra používané sadou Intune SDK tím, co používá vaše aplikace. Můžete to udělat prostřednictvím slovníku IntuneMAMSettings v souboru Info.plist aplikace, jak je uvedeno v Příručce pro vývojáře sady Intune App SDK pro iOS, nebo to můžete udělat v kódu prostřednictvím vlastností přepsání ID Microsoft Entra třídy IntuneMAMSettings. Přístup Info.plist se doporučuje pro aplikace, jejichž nastavení knihovny MSAL je statické, zatímco vlastnosti přepsání se doporučují pro aplikace, které určují tyto hodnoty za běhu. Po nakonfigurování všech nastavení jednotného přihlašování by vaše aplikace měla po úspěšném ověření poskytnout hlavní název uživatele metodě RegisterAndEnrollAccount správce IntuneMAMEnrollmentManager:

    IntuneMAMEnrollmentManager.Instance.RegisterAndEnrollAccount(string identity);
    

    Aplikace můžou určit výsledek pokusu o registraci implementací metody EnrollmentRequestWithStatus v podtřídě IntuneMAMEnrollmentDelegate a nastavením vlastnosti Delegát IntuneMAMEnrollmentManager na instanci této třídy.

    Po úspěšné registraci můžou aplikace určit hlavní název uživatele zaregistrovaného účtu (pokud byl dříve neznámý) dotazem na následující vlastnost:

     string enrolledAccount = IntuneMAMEnrollmentManager.Instance.EnrolledAccount;
    

Povolení zásad ochrany aplikací Intune v mobilní aplikaci pro Android

  1. Přidejte balíček NuGet Microsoft.Intune.MAM.Xamarin.Android do projektu Xamarin.Android.
    1. V případě aplikace Xamarin.Forms přidejte do projektu Xamarin.Android také balíček NuGet Microsoft.Intune.MAM.Remapper.Tasks .
  2. Postupujte podle obecných kroků požadovaných pro integraci sady Intune App SDK do mobilní aplikace pro Android a další podrobnosti najdete v tomto dokumentu.

Integrace Xamarin.Android

Úplný přehled integrace sady Intune App SDK najdete v příručce pro vývojáře sady Microsoft Intune App SDK pro Android. Při čtení příručky a integraci sady Intune App SDK s aplikací Xamarin jsou následující části určené ke zvýraznění rozdílů mezi implementací nativní aplikace pro Android vyvinutou v Javě a aplikací Xamarinu vyvinutou v jazyce C#. Tyto části by měly být považovány za doplňující a nemohou sloužit jako náhrada za čtení příručky v celém rozsahu.

Přemapovač

Počínaje verzí Microsoft.Intune.MAM.Remapper 1.4428.1 je možné balíček přidat do aplikace Xamarin.Android jako nástroje sestavení pro provádění nahrazení tříd, metod a systémových služeb MAM. Pokud je přemapovač zahrnutý, ekvivalentní náhradní části MAM v oddílech Přejmenované metody a Aplikace MAM se automaticky provedou při sestavení aplikace.

Chcete-li vyloučit třídu z mam-ification pomocí Remapper následující vlastnost lze přidat do souboru projektů .csproj .

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

Poznámka

Remapper aktuálně brání ladění v aplikacích Xamarin.Android. K ladění aplikace se doporučuje ruční integrace.

Přejmenované metody

V mnoha případech byla metoda dostupná ve třídě Androidu v náhradní třídě MAM označena jako konečná. V tomto případě náhradní třída MAM poskytuje podobně pojmenovanou metodu (s příponou MAM), kterou byste měli místo toho přepsat. Například při odvození z MAMActivitymusí místo přepsání OnCreate() a volání base.OnCreate()Activity přepsat OnMAMCreate() a volat base.OnMAMCreate().

Aplikace MAM

Vaše aplikace musí definovat Android.App.Application třídu. Pokud mam integrujete ručně, musí dědit z MAMApplication. Ujistěte se, že vaše podtřída je správně opatřena atributem [Application] a přepíše (IntPtr, JniHandleOwnership) konstruktor.

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

Poznámka

Problém s vazbami Xamarin MAM může způsobit chybové ukončení aplikace při nasazení v režimu ladění. Jako alternativní řešení Debuggable=false musí být atribut přidán do Application třídy a android:debuggable="true" příznak musí být odebrán z manifestu, pokud byl ručně nastaven.

Povolení funkcí, které vyžadují účast aplikace

Příklad: Určení, jestli se pro aplikaci vyžaduje PIN kód

MAMPolicyManager.GetPolicy(currentActivity).IsPinRequired;

Příklad: Určení primárního uživatele Intune

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

Příklad: Určení, jestli je povolené ukládání do zařízení nebo cloudového úložiště

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

Registrace oznámení ze sady SDK

Vaše aplikace se musí zaregistrovat k oznámením ze sady SDK tak, že MAMNotificationReceiver vytvoří a zaregistruje ho pomocí MAMNotificationReceiverRegistry. To se provádí tak, že zadáte příjemce a typ požadovaného oznámení v App.OnMAMCreatenástroji , jak ukazuje následující příklad:

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);
    }
    ...

Správce registrace MAM

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

Integrace Xamarin.Forms

Pro Xamarin.Forms aplikace Microsoft.Intune.MAM.Remapper balíček provádí nahrazení třídy MAM automaticky vložením MAM tříd do hierarchie tříd běžně používaných Xamarin.Forms tříd.

Poznámka

Integrace Xamarin.Forms musí být provedena kromě integrace Xamarin.Android popsané výše. Remapper se u aplikací Xamarin.Forms chová jinak, takže ruční nahrazení MAM musí být pořád hotové.

Po přidání remapperu do projektu budete muset provést ekvivalentní nahrazení MAM. Například a FormsApplicationActivity se dají ve vaší aplikaci dál používat za předpokladu, FormsAppCompatActivity že dojde k OnCreate přepsání a OnResume nahradí se ekvivalenty OnMAMCreate MAM a OnMAMResume v uvedeném pořadí.

    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());
        }

Pokud se nenahrazuje, může docházet k následujícím chybám kompilace, dokud nenahrazujete:

  • Chyba kompilátoru CS0239. Tato chyba se běžně zobrazuje v tomto tvaru 'MainActivity.OnCreate(Bundle)': cannot override inherited member 'MAMAppCompatActivityBase.OnCreate(Bundle)' because it is sealed. To se očekává, protože když remapper změní dědičnost tříd Xamarin, vytvoří se sealed určité funkce a místo toho se přidá nová varianta MAM, která přepíše.
  • Chyba kompilátoru CS0507: Tato chyba se běžně zobrazuje v tomto formátu 'MyActivity.OnRequestPermissionsResult()' cannot change access modifiers when overriding 'public' inherited member .... Když remapper změní dědičnost některých tříd Xamarin, některé členské funkce se změní na public. Pokud některou z těchto funkcí přepíšete, budete muset změnit i modifikátory přístupu, aby public tato přepsání byla také.

Poznámka

Přemapovač znovu zapíše závislost, kterou sada Visual Studio používá pro automatické dokončování IntelliSense. Proto může být nutné znovu načíst a znovu sestavit projekt při přidání remapper, aby IntelliSense správně rozpoznal změny.

Řešení problémů

  • Pokud ve vaší aplikaci při spuštění narazíte na prázdnou bílou obrazovku, možná budete muset vynutit spuštění navigačních volání v hlavním vlákně.
  • Xamarinové vazby sady Intune SDK nepodporují aplikace, které používají multiplatformní architekturu, jako je MvvmCross, kvůli konfliktům mezi třídami MvvmCross a Intune MAM. I když někteří zákazníci mohli mít po přesunutí svých aplikací do prostého Xamarin.Forms úspěch s integrací, neposkytujeme explicitní pokyny ani moduly plug-in pro vývojáře aplikací používající MvvmCross.

Aplikace Portál společnosti

Xamarinové vazby sady Intune SDK spoléhají při povolení zásad ochrany aplikací na přítomnost aplikace Portál společnosti pro Android na zařízení. Portál společnosti načte zásady ochrany aplikací ze služby Intune. Když se aplikace inicializuje, načte z Portálu společnosti zásady a kód pro vynucování těchto zásad. Uživatel nemusí být přihlášený.

Poznámka

Pokud aplikace Portál společnosti není na zařízení s Androidem , aplikace spravovaná pomocí Intune se chová stejně jako normální aplikace, která nepodporuje zásady ochrany aplikací Intune.

Pro ochranu aplikací bez registrace zařízení nemusí uživatel zařízení registrovat pomocí aplikace Portál společnosti.

Podpora

Pokud je vaše organizace stávajícím zákazníkem Intune, ve spolupráci se zástupcem podpory Microsoftu vytvořte lístek podpory a vytvořte problém na stránce problémů na GitHubu. Pomůžeme vám, jakmile to bude možné.