Xamarinové vazby sady Microsoft Intune App SDK

Důležité

Xamarin. Forms se vyvinulo 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 1. května 2024 pro všechny sady Xamarin SDK včetně Xamarinu. Forms a Intune vazby sady App SDK Xamarin. Informace o podpoře Intune na platformách Android a iOS najdete v tématu sada Intune App SDK pro .NET MAUI – Androida sada Microsoft Intune App SDK pro MAUI.iOS.

Přehled

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

Vazby Xamarin 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 vaší mobilní aplikace, když Intune aplikaci 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
  • Intune zařízení zaregistrovaných v MDM
  • Zařízení zaregistrovaná v EMM třetích stran

Aplikace Xamarin vytvořené pomocí vazeb Xamarin sady Intune App SDK teď můžou přijímat zásady ochrany aplikací Intune na zařízeních zaregistrovaných Intune mobilních zařízeních (MDM) i na nezaregistrovaný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 sad Xamarin Bindings sady Intune App SDK vyjadřujete souhlas s těmito licenčními podmínkami. Pokud je nepřijmete, software nepoužívejte.

Sada Intune SDK spoléhá ve scénářích ověřování a podmíněného spuštění na knihovnu Microsoft Authentication Library (MSAL), která vyžaduje, 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 jsou dodrženy kroky pro udělení oprávnění aplikace Xamarin službě Intune Správa mobilních aplikací (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í:

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 vazeb Xamarin 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 microsoft.Intune. MAM. Balíček NuGet 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í nástroje IntuneMAMConfigurator můžete přeskočit, protože tento nástroj je součástí Microsoftu. Intune. MAM. Balíček Xamarin.iOS a se spustí 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 nepoužívá k ověřování uživatelů 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 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 vaše aplikace už k ověřování uživatelů používá MSAL, můžete nakonfigurovat jednotné přihlašování (SSO) mezi aplikací a sadou Intune SDK. Nejprve budete muset přepsat výchozí nastavení Microsoft Entra, které používá sada Intune SDK, nastavením vaší 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 Microsoft Entra ID přepsání vlastností 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;
    

Ukázkové aplikace

Ukázkové aplikace zvýrazňující funkce MAM v aplikacích Xamarin.iOS jsou dostupné na GitHubu.

Poznámka

Pro iOS/iPadOS neexistuje žádný přemapovač. Integrace do Xamarinu Forms aplikace by měla být stejná jako u běžného projektu Xamarin.iOS.

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

  1. Přidejte microsoft.Intune. MAM. Balíček NuGet Xamarin.Android do projektu Xamarin.Android
    1. Pro Xamarin. Forms aplikaci přidejte Microsoft.Intune. MAM. Balíček NuGet Remapper.Tasks také na váš projekt Xamarin.Android.
  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í Xamarin 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>();

Xamarin. integrace 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

The Xamarin. Forms integraci je potřeba provést společně s integrací Xamarin.Android uvedenou výše. Přemapovač se pro Xamarin chová jinak. Forms aplikace, takže je potřeba provést ruční nahrazení MAM.

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ě.
  • Vazby Xamarin 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řesunu svých aplikací do prostého Xamarinu úspěch s integrací. Forms neposkytujeme explicitní pokyny ani moduly plug-in pro vývojáře aplikací, kteří používají MvvmCross.

Portál společnosti aplikace

Xamarinové vazby sady Intune SDK se při povolení zásad ochrany aplikací spoléhají na přítomnost Portál společnosti aplikace 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ásady a kód pro vynucení této zásady z Portál společnosti. Uživatel nemusí být přihlášený.

Poznámka

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

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

Ukázkové aplikace

Ukázkové aplikace zvýrazňující funkce MAM v Xamarin.Androidu a Xamarinu Forms aplikace jsou dostupné na GitHubu.

Podpora

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