Xamarin-Bindungen für Microsoft Intune App SDK

Wichtig

Xamarin. Forms hat sich zu .NET Multi-Platform App UI (MAUI) entwickelt. Vorhandene Xamarin-Projekte sollten zu .NET MAUI migriert werden. Weitere Informationen zum Aktualisieren von Xamarin-Projekten auf .NET finden Sie in der Dokumentation Upgrade von Xamarin auf .NET & .NET MAUI .

Der Xamarin-Support wurde am 1. Mai 2024 für alle Xamarin SDKs einschließlich Xamarin eingestellt. Forms und Intune App SDK Xamarin-Bindungen. Informationen zur unterstützung Intune auf Android- und iOS-Plattformen finden Sie unter Intune App SDK für .NET MAUI – Androidund Microsoft Intune App SDK für MAUI.iOS.

Übersicht

Die Intune App SDK Xamarin-Bindungen ermöglichen Intune App-Schutzrichtlinie in iOS- und Android-Apps, die mit Xamarin erstellt wurden. Mit den Bindungen können Entwickler problemlos Intune App-Schutzfeatures in ihre Xamarin-basierte App integrieren.

Mit Microsoft Intune App SDK Xamarin-Bindungen können Sie Intune App-Schutzrichtlinien (auch als APP- oder MAM-Richtlinien bezeichnet) in Ihre mit Xamarin entwickelten Apps integrieren. Eine MAM-fähige Anwendung ist eine Anwendung, die in das Intune App SDK integriert ist. IT-Administratoren können App-Schutzrichtlinien für Ihre mobile App bereitstellen, wenn Intune die App aktiv verwaltet.

Was wird unterstützt?

Entwicklercomputer

  • Windows (Visual Studio Version 15.7 und höher)
  • macOS

Plattformen für mobile Apps

  • Android
  • iOS

Intune Szenarien für die Verwaltung mobiler Anwendungen

  • Intune MAM
  • Intune MDM-registrierter Geräte
  • Emm-registrierte Drittanbietergeräte

Xamarin-Apps, die mit dem Intune App SDK Xamarin-Bindungen erstellt wurden, können jetzt Intune App-Schutzrichtlinien sowohl auf Intune registrierten Geräten als auch auf nicht registrierten Geräten empfangen.

Voraussetzungen

Lesen Sie die Lizenzbedingungen. Drucken und aufbewahren Sie eine Kopie der Lizenzbedingungen für Ihre Aufzeichnungen. Durch das Herunterladen und Verwenden der Intune App SDK Xamarin Bindings stimmen Sie diesen Lizenzbedingungen zu. Wenn Sie sie nicht akzeptieren, verwenden Sie die Software nicht.

Das Intune SDK basiert auf der Microsoft-Authentifizierungsbibliothek (Microsoft Authentication Library, MSAL) für Authentifizierungs- und bedingte Startszenarien, bei denen Apps mit Microsoft Entra ID konfiguriert werden müssen.

Wenn Ihre Anwendung bereits für die Verwendung von MSAL konfiguriert ist und über eine eigene benutzerdefinierte Client-ID verfügt, die für die Authentifizierung bei Microsoft Entra ID verwendet wird, stellen Sie sicher, dass die Schritte zum Erteilen von Berechtigungen für Ihre Xamarin-App für den Intune MAM-Dienst (Mobile Application Management) ausgeführt werden. Befolgen Sie die Anweisungen im Abschnitt "Gewähren Sie Ihrer App Zugriff auf den Intune Verwaltungsdienst für mobile Apps" des Leitfadens zu den ersten Schritten mit dem Intune SDK.

Überlegungen zur Sicherheit

So verhindern Sie potenzielle Spoofing-, Informationsveröffentlichungs- und Rechteerweiterungsangriffe:

  • Stellen Sie sicher, dass die Xamarin-App-Entwicklung auf einem sicheren Arbeitsplatz ausgeführt wird.
  • Stellen Sie sicher, dass die Bindungen aus einer gültigen Microsoft-Quelle stammen:
  • Konfigurieren Sie Ihre NuGet-Konfiguration für Ihr Projekt so, dass signierte, unveränderte NuGet-Pakete als vertrauenswürdig eingestuft werden. Weitere Informationen finden Sie unter Installieren signierter Pakete .
  • Sichern Sie das Ausgabeverzeichnis, das die Xamarin-App enthält. Erwägen Sie die Verwendung eines Verzeichnisses auf Benutzerebene für die Ausgabe.

Aktivieren von Intune App-Schutzrichtlinien in Ihrer mobilen iOS-App

Wichtig

Intune veröffentlicht regelmäßig Updates für das Intune App SDK. Überprüfen Sie regelmäßig die Intune App SDK-Xamarin-Bindungen auf Updates, und integrieren Sie sie in Ihren Releasezyklus für die Softwareentwicklung, um sicherzustellen, dass Ihre Apps die neuesten App-Schutzrichtlinie-Einstellungen unterstützen.

  1. Fügen Sie microsoft.Intune hinzu. MAM. Xamarin.iOS NuGet-Paket für Ihr Xamarin.iOS-Projekt.

  2. Führen Sie die allgemeinen Schritte aus, die für die Integration des Intune App SDK in eine mobile iOS-App erforderlich sind. Sie können mit Schritt 3 der Integrationsanweisungen aus dem Entwicklerhandbuch für das Intune App SDK für iOS beginnen. Sie können den letzten Schritt in diesem Abschnitt der Ausführung von IntuneMAMConfigurator überspringen, da dieses Tool in Microsoft enthalten ist. Intune. MAM. Xamarin.iOS-Paket und wird automatisch zur Buildzeit ausgeführt. Wichtig: Das Aktivieren Keychain Freigabe für eine App unterscheidet sich in Visual Studio geringfügig von Xcode. Öffnen Sie die Berechtigungsliste der App, und stellen Sie sicher, dass die Option "Keychain aktivieren" aktiviert ist und die entsprechenden Keychain Freigabegruppen in diesem Abschnitt hinzugefügt werden. Stellen Sie dann sicher, dass die Plist Berechtigungen im Feld "Benutzerdefinierte Berechtigungen" der Optionen "iOS Bundle Signing" des Projekts für alle geeigneten Kombinationen aus Konfiguration und Plattform angegeben ist.

  3. Sobald die Bindungen hinzugefügt wurden und die App ordnungsgemäß konfiguriert ist, kann Ihre App mit der Verwendung der APIs des Intune SDK beginnen. Dazu müssen Sie den folgenden Namespace einschließen:

    using Microsoft.Intune.MAM;
    
  4. Um App-Schutzrichtlinien zu erhalten, muss sich Ihre App beim Intune MAM-Dienst registrieren. Wenn Ihre App die Microsoft Authentication Library (MSAL) nicht zum Authentifizieren von Benutzern verwendet und Sie möchten, dass das Intune SDK die Authentifizierung übernimmt, sollte Ihre App den UPN des Benutzers für die LoginAndEnrollmentManager-Methode von IntuneMAMEnrollmentManager bereitstellen:

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

    Apps übergeben möglicherweise NULL, wenn der UPN des Benutzers zum Zeitpunkt des Aufrufs unbekannt ist. In diesem Fall werden Benutzer aufgefordert, sowohl ihre E-Mail-Adresse als auch ihr Kennwort einzugeben.

    Wenn Ihre App bereits MSAL zum Authentifizieren von Benutzern verwendet, können Sie zwischen Ihrer App und dem Intune SDK eine Benutzeroberfläche für einmaliges Anmelden (Single Sign-On, SSO) konfigurieren. Zunächst müssen Sie die standardeinstellungen für Microsoft Entra, die vom Intune SDK verwendet werden, mit denen Ihrer App überschreiben. Sie können dies über das IntuneMAMSettings-Wörterbuch in der Info.plist der App tun, wie im Intune App SDK für iOS-Entwicklerhandbuch erwähnt, oder Sie können dies im Code über die Microsoft Entra ID Außerkraftsetzungseigenschaften der IntuneMAMSettings-Klasse tun. Der Info.plist-Ansatz wird für Anwendungen empfohlen, deren MSAL-Einstellungen statisch sind, während die Außerkraftsetzungseigenschaften für Anwendungen empfohlen werden, die diese Werte zur Laufzeit bestimmen. Nachdem alle SSO-Einstellungen konfiguriert wurden, sollte Ihre App den UPN des Benutzers für die RegisterAndEnrollmentManager-Methode von IntuneMAMEnrollmentManager bereitstellen, nachdem sie erfolgreich authentifiziert wurde:

    IntuneMAMEnrollmentManager.Instance.RegisterAndEnrollAccount(string identity);
    

    Apps können das Ergebnis eines Registrierungsversuchs ermitteln, indem sie die EnrollmentRequestWithStatus-Methode in einer Unterklasse von IntuneMAMEnrollmentDelegate implementieren und die Delegate-Eigenschaft von IntuneMAMEnrollmentManager auf einen instance dieser Klasse festlegen.

    Nach einer erfolgreichen Registrierung können Apps den UPN des registrierten Kontos (sofern bisher unbekannt) ermitteln, indem sie die folgende Eigenschaft abfragen:

     string enrolledAccount = IntuneMAMEnrollmentManager.Instance.EnrolledAccount;
    

Beispielanwendungen

Beispielanwendungen, die MAM-Funktionen in Xamarin.iOS-Apps hervorheben, sind auf GitHub verfügbar.

Hinweis

Es gibt keinen Neumapper für iOS/iPadOS. Integration in ein Xamarin. Forms-App sollte mit der für ein reguläres Xamarin.iOS-Projekt identisch sein.

Aktivieren von Intune App-Schutzrichtlinien in Ihrer mobilen Android-App

  1. Fügen Sie microsoft.Intune hinzu. MAM. Xamarin.Android NuGet-Paket für Ihr Xamarin.Android-Projekt.
    1. Für ein Xamarin. Forms App fügen Sie microsoft.Intune hinzu. MAM. Remapper.Tasks NuGet-Paket auch für Ihr Xamarin.Android-Projekt.
  2. Führen Sie die allgemeinen Schritte aus, die zum Integrieren des Intune App SDK in eine mobile Android-App erforderlich sind, während Sie auf dieses Dokument verweisen, um weitere Details zu erhalten.

Xamarin.Android-Integration

Eine vollständige Übersicht zur Integration des Intune App SDK finden Sie im entwicklerhandbuch Microsoft Intune App SDK für Android. Während Sie sich den Leitfaden durchlesen und das Intune App SDK in Ihre Xamarin-App integrieren, sollen die folgenden Abschnitte die Unterschiede zwischen der Implementierung einer nativen Android-App, die in Java entwickelt wurde, und einer in C# entwickelten Xamarin-App hervorheben. Diese Abschnitte sollten als Ergänzungen behandelt werden und können nicht als Ersatz für die Lektüre des Leitfadens in seiner Gesamtheit dienen.

Remapper

Ab Version 1.4428.1 kann das Microsoft.Intune.MAM.Remapper Paket einer Xamarin.Android-Anwendung als Buildtools hinzugefügt werden, um den Austausch von MAM-Klassen, Methoden und Systemdiensten durchzuführen. Wenn der Remapper enthalten ist, werden die MAM-äquivalenten Ersetzungsteile der Abschnitte Umbenannte Methoden und MAM-Anwendung automatisch ausgeführt, wenn die Anwendung erstellt wird.

Um eine Klasse von mam-ification durch remapper auszuschließen, kann der Projektdatei .csproj die folgende Eigenschaft hinzugefügt werden.

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

Hinweis

Der Remapper verhindert derzeit das Debuggen in Xamarin.Android-Apps. Manuelle Integration wird empfohlen, um Ihre Anwendung zu debuggen.

Umbenannte Methoden

In vielen Fällen wurde eine methode, die in der Android-Klasse verfügbar ist, in der MAM-Ersetzungsklasse als abgeschlossen markiert. In diesem Fall stellt die MAM-Ersetzungsklasse eine ähnlich benannte MAMMethode (mit dem Suffix ) bereit, die Sie stattdessen überschreiben sollten. Wenn Sie z. B. von MAMActivityableiten, anstatt zu überschreiben OnCreate() und aufzurufen base.OnCreate(), Activity muss überschrieben OnMAMCreate() und aufgerufen werden base.OnMAMCreate().

MAM-Anwendung

Ihre App muss eine Android.App.Application Klasse definieren. Wenn MAM manuell integriert wird, muss es von erben MAMApplication. Stellen Sie sicher, dass Ihre Unterklasse ordnungsgemäß mit dem [Application] -Attribut versehen ist und den (IntPtr, JniHandleOwnership) Konstruktor überschreibt.

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

Hinweis

Ein Problem mit den MAM-Xamarin-Bindungen kann dazu führen, dass die Anwendung abstürzt, wenn sie im Debugmodus bereitgestellt wird. Als Problemumgehung muss das Debuggable=false Attribut der Application Klasse hinzugefügt werden, und das android:debuggable="true" Flag muss aus dem Manifest entfernt werden, wenn es manuell festgelegt wurde.

Aktivieren von Features, die eine App-Teilnahme erfordern

Beispiel: Ermitteln, ob eine PIN für die App erforderlich ist

MAMPolicyManager.GetPolicy(currentActivity).IsPinRequired;

Beispiel: Bestimmen des primären Intune Benutzers

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

Beispiel: Ermitteln, ob das Speichern auf einem Gerät oder cloudbasiertem Speicher zulässig ist

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

Registrieren für Benachrichtigungen aus dem SDK

Ihre App muss sich für Benachrichtigungen aus dem SDK registrieren, indem sie eine MAMNotificationReceiver erstellt und bei MAMNotificationReceiverRegistryregistriert wird. Hierzu werden der Empfänger und der gewünschte Benachrichtigungstyp in App.OnMAMCreatebereitgestellt, wie im folgenden Beispiel veranschaulicht:

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-Registrierungs-Manager

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

Xamarin. Forms Integration

Für Xamarin.Forms Anwendungen führt das Microsoft.Intune.MAM.Remapper Paket automatisch eine MAM-Klassenersetzung durch, indem Klassen in die Klassenhierarchie häufig verwendeter Klassen eingefügt MAM werden Xamarin.Forms .

Hinweis

Das Xamarin. Forms Integration muss zusätzlich zur oben beschriebenen Xamarin.Android-Integration erfolgen. Der Neumapper verhält sich für Xamarin anders. Forms Apps, sodass die manuellen MAM-Ersetzungen weiterhin erfolgen müssen.

Nachdem der Remapper ihrem Projekt hinzugefügt wurde, müssen Sie die MAM-äquivalenten Ersetzungen durchführen. Beispielsweise können und FormsApplicationActivity weiterhin in Ihrer Anwendung verwendet werden, FormsAppCompatActivity die für OnCreate und OnResume durch die MAM-Entsprechungen OnMAMCreateOnMAMResume bzw. ersetzt werden.

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

Wenn die Ersetzungen nicht vorgenommen werden, treten möglicherweise die folgenden Kompilierungsfehler auf, bis Sie die Ersetzungen vornehmen:

  • Compilerfehler CS0239. Dieser Fehler tritt häufig in dieser Form auf 'MainActivity.OnCreate(Bundle)': cannot override inherited member 'MAMAppCompatActivityBase.OnCreate(Bundle)' because it is sealed. Dies wird erwartet, da wenn der Remapper die Vererbung von Xamarin-Klassen ändert, bestimmte Funktionen erstellt sealed werden und stattdessen eine neue MAM-Variante hinzugefügt wird, die außer Kraft gesetzt wird.
  • Compilerfehler CS0507: Dieser Fehler tritt häufig in dieser Form auf 'MyActivity.OnRequestPermissionsResult()' cannot change access modifiers when overriding 'public' inherited member .... Wenn der Remapper die Vererbung einiger der Xamarin-Klassen ändert, werden bestimmte Memberfunktionen in publicgeändert. Wenn Sie eine dieser Funktionen überschreiben, müssen Sie die Zugriffsmodifizierer für diese Außerkraftsetzungen public ändern.

Hinweis

Der Neumapper schreibt eine Abhängigkeit neu, die Visual Studio für die automatische Vervollständigung von IntelliSense verwendet. Daher müssen Sie das Projekt möglicherweise neu laden und neu erstellen, wenn der Neumapper hinzugefügt wird, damit IntelliSense die Änderungen richtig erkennt.

Problembehandlung

  • Wenn in Ihrer Anwendung beim Start ein leerer, weißer Bildschirm angezeigt wird, müssen Sie möglicherweise die Ausführung der Navigationsaufrufe im Standard Thread erzwingen.
  • Die Xamarin-Bindungen des Intune SDK unterstützen aufgrund von Konflikten zwischen MvvmCross und Intune MAM-Klassen keine Apps, die ein plattformübergreifendes Framework wie MvvmCross verwenden. Einige Kunden hatten zwar möglicherweise Erfolg mit der Integration, nachdem sie ihre Apps auf einfaches Xamarin verschoben hatten. Forms bieten wir keine expliziten Anleitungen oder Plug-Ins für App-Entwickler, die MvvmCross verwenden.

Unternehmensportal-App

Die Xamarin-Bindungen des Intune SDK basieren auf dem Vorhandensein der Unternehmensportal Android-App auf dem Gerät, um App-Schutzrichtlinien zu aktivieren. Die Unternehmensportal ruft App-Schutzrichtlinien aus dem Intune-Dienst ab. Wenn die App initialisiert wird, werden Richtlinie und Code geladen, um diese Richtlinie aus dem Unternehmensportal zu erzwingen. Der Benutzer muss nicht angemeldet sein.

Hinweis

Wenn sich die Unternehmensportal App nicht auf dem Android-Gerät befindet, verhält sich eine Intune verwaltete App genauso wie eine normale App, die Intune App-Schutzrichtlinien nicht unterstützt.

Für den App-Schutz ohne Geräteregistrierung muss der Benutzer das Gerät nicht mithilfe der Unternehmensportal App registrieren.

Beispielanwendungen

Beispielanwendungen, die MAM-Funktionen in Xamarin.Android und Xamarin hervorheben. Forms-Apps sind auf GitHub verfügbar.

Support

Wenn Es sich bei Ihrem organization um einen bestehenden Intune Kunden handelt, wenden Sie sich an Ihren Microsoft-Supportmitarbeiter, um ein Supportticket zu erstellen und ein Problem auf der GitHub-Problemseite zu erstellen. Wir werden so schnell wie möglich helfen.