Xamarin-Bindungen für das Microsoft Intune App SDK
Wichtig
Xamarin.Forms hat sich zu .NET Multi-Platform App UI (MAUI) weiterentwickelt. 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.Forms und Intune App SDK Xamarin Bindings eingestellt. Informationen zur Intune-Unterstützung 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 Xamarin-Bindungen des Intune App SDK aktivieren die 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 den Xamarin-Bindungen des Microsoft Intune App SDK 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
Szenarien für die Verwaltung mobiler Anwendungen in Intune
- Intune MAM
- Mdm-registrierte Intune-Geräte
- Emm-registrierte Drittanbietergeräte
Xamarin-Apps, die mit dem Intune App SDK erstellt wurden Xamarin-Bindungen können jetzt Intune-App-Schutzrichtlinien sowohl auf in Intune registrierten Geräten mit mobiler Geräteverwaltung (Mobile Device Management, MDM) 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 Xamarin-Bindungen des Intune App SDK stimmen Sie diesen Lizenzbedingungen zu. Wenn Sie sie nicht akzeptieren, verwenden Sie die Software nicht.
Das Intune SDK basiert auf der 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 mit Microsoft Entra ID verwendet wird, stellen Sie sicher, dass die Schritte zum Erteilen der Xamarin-App-Berechtigungen für den Mam-Dienst (Mobile Application Management) von Intune ausgeführt werden. Befolgen Sie die Anweisungen im Abschnitt "Gewähren des Zugriffs auf den Intune Mobile App-Verwaltungsdienst" 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:
- NUGet-Profil für MS Intune App SDK
- Intune App SDK Xamarin GitHub-Repository
- 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.
Fügen Sie ihrem Xamarin.iOS-Projekt das NuGet-Paket Microsoft.Intune.MAM.Xamarin.iOS hinzu.
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 im Paket Microsoft.Intune.MAM.Xamarin.iOS enthalten ist und zur Buildzeit automatisch ausgeführt wird. Wichtig: Das Aktivieren der Schlüsselbundfreigabe 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 Schlüsselbundfreigabegruppen 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.
Nachdem die Bindungen hinzugefügt und die App ordnungsgemäß konfiguriert wurde, 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;
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 eine Benutzeroberfläche für einmaliges Anmelden (Single Sign-On, SSO) zwischen Ihrer App und dem Intune SDK konfigurieren. Zunächst müssen Sie die vom Intune SDK verwendeten Microsoft Entra-Standardeinstellungen mit denen Ihrer App überschreiben. Sie können dies über das IntuneMAMSettings-Wörterbuch in der Info.plist der App tun, wie im Entwicklerhandbuch für Intune App SDK für iOS 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 eine Instanz 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;
Aktivieren von Intune-App-Schutzrichtlinien in Ihrer mobilen Android-App
- Fügen Sie ihrem Xamarin.Android-Projekt das NuGet-Paket Microsoft.Intune.MAM.Xamarin.Android hinzu.
- Fügen Sie für eine Xamarin.Forms-App auch ihrem Xamarin.Android-Projekt das NuGet-Paket Microsoft.Intune.MAM.Remapper.Tasks hinzu.
- Führen Sie die allgemeinen Schritte aus, die für die Integration 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 über die Integration des Intune App SDK finden Sie im Entwicklerhandbuch zum 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 für eine native 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.
Neumapper
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 MAM
Methode (mit dem Suffix ) bereit, die Sie stattdessen überschreiben sollten. Wenn Sie z. B. von MAMActivity
ableiten, 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 MAMNotificationReceiverRegistry
registriert wird. Hierzu werden der Empfänger und der gewünschte Benachrichtigungstyp in App.OnMAMCreate
bereitgestellt, 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
Die Xamarin.Forms-Integration muss zusätzlich zur oben beschriebenen Xamarin.Android-Integration erfolgen. Der Neumapper verhält sich für Xamarin.Forms-Apps anders, sodass die manuellen MAM-Ersetzungen weiterhin durchgeführt werden 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 OnMAMCreate
OnMAMResume
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 erstelltsealed
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 inpublic
geändert. Wenn Sie eine dieser Funktionen überschreiben, müssen Sie die Zugriffsmodifizierer für diese Außerkraftsetzungenpublic
ä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 Hauptthread 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. Während einige Kunden nach dem Verschieben ihrer Apps auf einfache xamarin.Forms möglicherweise Erfolg mit der Integration hatten, 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. Das 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 von Intune verwaltete App genauso wie eine normale App, die keine Intune-App-Schutzrichtlinien unterstützt.
Für den App-Schutz ohne Geräteregistrierung muss der Benutzer das Gerät nicht über die Unternehmensportal-App registrieren.
Support
Wenn Ihre Organisation ein bestehender Intune-Kunde ist, 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.