Dela via


Microsoft Intune App SDK Xamarin-bindningar

Viktigt

Xamarin. Forms har utvecklats till .NET Multi-Platform App UI (MAUI). Befintliga Xamarin-projekt bör migreras till .NET MAUI. Mer information om hur du uppgraderar Xamarin-projekt till .NET finns i dokumentationen Uppgradera från Xamarin till .NET & .NET MAUI .

Xamarin-supporten upphörde den 1 maj 2024 för alla Xamarin-SDK:er inklusive Xamarin. Forms och Intune App SDK Xamarin-bindningar. Mer Intune stöd på Android- och iOS-plattformar finns i Intune App SDK för .NET MAUI – Androidoch Microsoft Intune App SDK för MAUI.iOS.

Översikt

Xamarin-bindningar Intune App SDK möjliggör Intune appskyddsprincip i iOS- och Android-appar som skapats med Xamarin. Bindningarna gör det möjligt för utvecklare att enkelt bygga in Intune appskyddsfunktioner i sin Xamarin-baserade app.

Med Microsoft Intune App SDK Xamarin-bindningar kan du införliva Intune appskyddsprinciper (även kallade APP- eller MAM-principer) i dina appar som utvecklats med Xamarin. Ett MAM-aktiverat program är ett program som är integrerat med Intune App SDK. IT-administratörer kan distribuera appskyddsprinciper till din mobilapp när Intune aktivt hanterar appen.

Vad stöds?

Utvecklardatorer

  • Windows (Visual Studio version 15.7+)
  • macOS

Plattformar för mobilappar

  • Android
  • iOS

Intune scenarier för hantering av mobilprogram

  • Intune MAM
  • Intune MDM-registrerade enheter
  • EMM-registrerade enheter från tredje part

Xamarin-appar som skapats med Intune App SDK Xamarin-bindningar kan nu ta emot Intune appskyddsprinciper på både Intune MDM-registrerade enheter och oregistrerade enheter.

Förutsättningar

Granska licensvillkoren. Skriv ut och behåll en kopia av licensvillkoren för dina poster. Genom att ladda ned och använda Intune App SDK Xamarin-bindningar godkänner du sådana licensvillkor. Om du inte accepterar dem ska du inte använda programvaran.

Intune SDK förlitar sig på Microsoft Authentication Library (MSAL) för sina autentiserings- och villkorsstyrda startscenarier, som kräver att appar konfigureras med Microsoft Entra ID.

Om ditt program redan har konfigurerats för att använda MSAL och har ett eget anpassat klient-ID som används för att autentisera med Microsoft Entra ID kontrollerar du att stegen för att ge Xamarin-appen behörighet till Intune MAM-tjänsten (Mobile Application Management) följs. Följ anvisningarna i avsnittet "Ge din app åtkomst till Intune Mobile App Management Service" i guiden komma igång med Intune SDK.

Säkerhetshänsyn

För att förhindra potentiell förfalskning, avslöjande av information och utökade privilegier:

  • Se till att Xamarin-apputvecklingen utförs på en säker arbetsstation.
  • Kontrollera att bindningarna kommer från en giltig Microsoft-källa:
  • Konfigurera NuGet-konfigurationen för projektet så att den litar på signerade, oförändrade NuGet-paket. Mer information finns i Installera signerade paket .
  • Skydda utdatakatalogen som innehåller Xamarin-appen. Överväg att använda en katalog på användarnivå för utdata.

Aktivera Intune appskyddsprinciper i din iOS-mobilapp

Viktigt

Intune släpper regelbundet uppdateringar av Intune App SDK. Kontrollera regelbundet Intune App SDK Xamarin-bindningar för uppdateringar och införliva i din programutvecklingsversionscykel för att säkerställa att dina appar stöder de senaste appskyddsprincipinställningarna.

  1. Lägg till Microsoft.Intune. MAM. Xamarin.iOS NuGet-paketet till ditt Xamarin.iOS-projekt.

  2. Följ de allmänna steg som krävs för att integrera Intune App SDK i en iOS-mobilapp. Du kan börja med steg 3 i integreringsanvisningarna i Intune App SDK för iOS Developer Guide. Du kan hoppa över det sista steget i avsnittet om att köra IntuneMAMConfigurator, eftersom det här verktyget ingår i Microsoft. Intune. MAM. Xamarin.iOS-paketet och kommer att köras automatiskt vid byggtiden. Viktigt! Aktivering av nyckelringsdelning för en app skiljer sig något från Xcode i Visual Studio. Öppna appens plist för berättiganden och kontrollera att alternativet "Aktivera nyckelring" är aktiverat och att lämpliga delningsgrupper för nyckelringar läggs till i det avsnittet. Kontrollera sedan att plisten Berättiganden anges i fältet "Anpassade berättiganden" i projektets alternativ "iOS-paketsignering" för alla lämpliga kombinationer av konfiguration/plattform.

  3. När bindningarna har lagts till och appen har konfigurerats korrekt kan appen börja använda api:erna för Intune SDK. Om du vill göra det måste du inkludera följande namnområde:

    using Microsoft.Intune.MAM;
    
  4. Om du vill börja ta emot appskyddsprinciper måste din app registreras i Intune MAM-tjänsten. Om din app inte använder Microsoft Authentication Library (MSAL) för att autentisera användare, och du vill att Intune SDK ska hantera autentisering, bör appen tillhandahålla användarens UPN till IntuneMAMEnrollmentManagers LoginAndEnrollAccount-metod:

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

    Appar kan skicka null om användarens UPN är okänt vid tidpunkten för anropet. I det här fallet uppmanas användarna att ange både sin e-postadress och sitt lösenord.

    Om din app redan använder MSAL för att autentisera användare kan du konfigurera en enkel inloggning (SSO) mellan din app och Intune SDK. Först måste du åsidosätta standardinställningarna för Microsoft Entra som används av Intune SDK med appens. Du kan göra det via ordlistan IntuneMAMSettings i appens Info.plist, som nämns i utvecklarguiden för Intune App SDK för iOS, eller så kan du göra det i kod via Microsoft Entra ID åsidosättningsegenskaperna för klassen IntuneMAMSettings. Metoden Info.plist rekommenderas för program vars MSAL-inställningar är statiska medan åsidosättningsegenskaperna rekommenderas för program som fastställer dessa värden vid körning. När alla SSO-inställningar har konfigurerats bör appen ange användarens UPN till IntuneMAMEnrollmentManagers RegisterAndEnrollAccount-metod när den har autentiserats:

    IntuneMAMEnrollmentManager.Instance.RegisterAndEnrollAccount(string identity);
    

    Appar kan fastställa resultatet av ett registreringsförsök genom att implementera metoden EnrollmentRequestWithStatus i en underklass av IntuneMAMEnrollmentDelegate och ange egenskapen IntuneMAMEnrollmentManager som en instans av den klassen.

    Vid en lyckad registrering kan appar fastställa UPN för det registrerade kontot (om det tidigare är okänt) genom att fråga följande egenskap:

     string enrolledAccount = IntuneMAMEnrollmentManager.Instance.EnrolledAccount;
    

Exempelprogram

Exempelprogram som markerar MAM-funktioner i Xamarin.iOS-appar är tillgängliga på GitHub.

Obs!

Det finns ingen ommappning för iOS/iPadOS. Integrera i en Xamarin. Forms app ska vara samma som för ett vanligt Xamarin.iOS-projekt.

Aktivera Intune appskyddsprinciper i din Android-mobilapp

  1. Lägg till Microsoft.Intune. MAM. Xamarin.Android NuGet-paketet till Xamarin.Android-projektet.
    1. För en Xamarin. Forms app lägger du till Microsoft.Intune. MAM. Remapper.Tasks NuGet-paketet till ditt Xamarin.Android-projekt också.
  2. Följ de allmänna stegen som krävs för att integrera Intune App SDK i en Android-mobilapp medan du refererar till det här dokumentet för ytterligare information.

Xamarin.Android-integrering

En fullständig översikt för integrering av Intune App SDK finns i utvecklarguiden för Microsoft Intune App SDK för Android. När du läser igenom guiden och integrerar Intune App SDK med din Xamarin-app är följande avsnitt avsedda att belysa skillnaderna mellan implementeringen för en inbyggd Android-app som utvecklats i Java och en Xamarin-app som utvecklats i C#. Dessa avsnitt bör behandlas som kompletterande och kan inte fungera som en ersättning för att läsa guiden i sin helhet.

Mappa om

Från och med versionen Microsoft.Intune.MAM.Remapper 1.4428.1 kan paketet läggas till i ett Xamarin.Android-program som byggverktyg för att utföra mam-klass-, metod- och systemtjänstersättningar. Om ommappningen ingår utförs MAM-motsvarande ersättningsdelar i avsnitten Omdöpta metoder och MAM-program automatiskt när programmet skapas.

Om du vill undanta en klass från MAM-ification av Remapper kan följande egenskap läggas till i projektfilen .csproj .

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

Obs!

Ommappningen förhindrar för närvarande felsökning i Xamarin.Android-appar. Manuell integrering rekommenderas för att felsöka ditt program.

Metoder som har bytt namn

I många fall har en metod som är tillgänglig i Android-klassen markerats som slutgiltig i MAM-ersättningsklassen. I det här fallet tillhandahåller MAM-ersättningsklassen en metod med liknande namn (suffixet med MAM) som du bör åsidosätta i stället. När du till exempel härleder från MAMActivitymåste du åsidosätta OnMAMCreate() och anropa i stället för att OnCreate() åsidosätta och anropa Activitybase.OnCreate()base.OnMAMCreate().

MAM-program

Din app måste definiera en Android.App.Application klass. Om mam integreras manuellt måste det ärva från MAMApplication. Se till att underklassen är korrekt dekorerad med [Application] attributet och åsidosätter (IntPtr, JniHandleOwnership) konstruktorn.

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

Obs!

Ett problem med MAM Xamarin-bindningar kan göra att programmet kraschar när det distribueras i felsökningsläge. Som en lösning Debuggable=false måste attributet läggas till i Application klassen och android:debuggable="true" flaggan måste tas bort från manifestet om den har angetts manuellt.

Aktivera funktioner som kräver att appen deltar

Exempel: Avgöra om PIN-kod krävs för appen

MAMPolicyManager.GetPolicy(currentActivity).IsPinRequired;

Exempel: Fastställa den primära Intune användaren

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

Exempel: Avgöra om det är tillåtet att spara till enhet eller molnlagring

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

Registrera dig för meddelanden från SDK

Din app måste registrera sig för meddelanden från SDK genom att skapa en MAMNotificationReceiver och registrera den med MAMNotificationReceiverRegistry. Detta görs genom att tillhandahålla mottagaren och den typ av meddelande som önskas i App.OnMAMCreate, som exemplet nedan illustrerar:

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-registreringshanteraren

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

Xamarin. Forms integrering

För Xamarin.Forms program Microsoft.Intune.MAM.Remapper utför paketet MAM-klassbyte automatiskt genom att MAM infoga klasser i klasshierarkin för vanliga Xamarin.Forms klasser.

Obs!

The Xamarin. Forms integrering måste göras utöver Xamarin.Android-integreringen som beskrivs ovan. Ommappningen fungerar annorlunda för Xamarin. Forms appar, så manuella MAM-ersättningar måste fortfarande göras.

När ommappningen har lagts till i projektet måste du utföra MOTSVARANDE MAM-ersättningar. Och kan till exempel FormsAppCompatActivityFormsApplicationActivity fortsätta att användas i ditt program som åsidosätts till OnCreate och OnResume ersätts med MAM-motsvarigheterna OnMAMCreate respektive OnMAMResume .

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

Om ersättningarna inte görs kan du stöta på följande kompileringsfel tills du gör ersättningarna:

  • Kompilatorfel CS0239. Det här felet visas ofta i det här formuläret 'MainActivity.OnCreate(Bundle)': cannot override inherited member 'MAMAppCompatActivityBase.OnCreate(Bundle)' because it is sealed. Detta förväntas eftersom när ommappningen ändrar arvet av Xamarin-klasser, skapas sealed vissa funktioner och en ny MAM-variant läggs till för att åsidosätta i stället.
  • Kompilatorfel CS0507: Det här felet visas ofta i det här formuläret 'MyActivity.OnRequestPermissionsResult()' cannot change access modifiers when overriding 'public' inherited member .... När Remapper ändrar arvet för några av Xamarin-klasserna ändras vissa medlemsfunktioner till public. Om du åsidosätter någon av dessa funktioner måste du också ändra åtkomstmodifierarna för dessa åsidosättningar public .

Obs!

Ommappningen skriver om ett beroende som Visual Studio använder för automatisk slutförande av IntelliSense. Därför kan du behöva läsa in och återskapa projektet igen när ommappningen läggs till för att IntelliSense ska känna igen ändringarna korrekt.

Felsökning

  • Om du stöter på en tom vit skärm i programmet vid start kan du behöva tvinga navigeringsanropen att köras på huvudtråden.
  • Intune SDK Xamarin-bindningar stöder inte appar som använder ett plattformsoberoende ramverk som MvvmCross på grund av konflikter mellan MvvmCross- och Intune MAM-klasser. Vissa kunder kan ha haft framgång med integreringen efter att ha flyttat sina appar till vanlig Xamarin. Forms ger vi inte uttrycklig vägledning eller plugin-program för apputvecklare som använder MvvmCross.

Företagsportal app

Intune SDK Xamarin-bindningar förlitar sig på förekomsten av Företagsportal Android-appen på enheten för att aktivera appskyddsprinciper. Företagsportal hämtar appskyddsprinciper från Intune-tjänsten. När appen initieras läser den in principer och kod för att framtvinga principen från Företagsportal. Användaren behöver inte vara inloggad.

Obs!

När Företagsportal inte finns på Android-enheten fungerar en Intune hanterad app på samma sätt som en normal app som inte stöder Intune appskyddsprinciper.

För appskydd utan enhetsregistrering behöver användaren inte registrera enheten med hjälp av Företagsportal-appen.

Exempelprogram

Exempelprogram som visar MAM-funktioner i Xamarin.Android och Xamarin. Forms appar är tillgängliga på GitHub.

Support

Om din organisation är en befintlig Intune kund kan du kontakta din Microsoft-supportrepresentant för att öppna ett supportärende och skapa ett problem på sidan med GitHub-ärenden. Vi hjälper till så snart vi kan.