Microsoft Intune App SDK Xamarin-kötések
Fontos
A Xamarin.Forms a .NET többplatformos alkalmazás felhasználói felületére (MAUI) vált. A meglévő Xamarin-projekteket át kell telepíteni a .NET MAUI-ba. A Xamarin-projektek .NET-re való frissítéséről további információt a Frissítés Xamarinról .NET-re & .NET MAUI-ra című dokumentációban talál.
A Xamarin támogatása 2024. május 1-ével megszűnt az összes Xamarin SDK esetében, beleértve a Xamarin.Formst és az Intune App SDK Xamarin-kötéseket. Az Intune támogatása Android és iOS platformokon: Intune App SDK for .NET MAUI – Androidés Microsoft Intune App SDK for MAUI.iOS.
Áttekintés
Az Intune App SDK Xamarin-kötések lehetővé teszik az Intune alkalmazásvédelmi szabályzatát a Xamarinnal készült iOS- és Android-alkalmazásokban. A kötések lehetővé teszik a fejlesztők számára, hogy könnyen beépítsék az Intune alkalmazásvédelmi funkcióit a Xamarin-alapú alkalmazásukba.
A Microsoft Intune App SDK Xamarin-kötések lehetővé teszik, hogy intune alkalmazásvédelmi szabályzatokat (más néven APP- vagy MAM-szabályzatokat) építsen be a Xamarinnal fejlesztett alkalmazásokba. A MAM-kompatibilis alkalmazások integrálva lesznek az Intune App SDK-val. A rendszergazdák akkor helyezhetnek üzembe alkalmazásvédelmi szabályzatokat a mobilalkalmazásban, ha az Intune aktívan kezeli az alkalmazást.
Mi támogatott?
Fejlesztői gépek
- Windows (Visual Studio 15.7-es vagy újabb verzió)
- macOS
Mobilalkalmazás-platformok
- Android
- iOS
Intune mobilalkalmazás-kezelési forgatókönyvek
- Intune MAM
- Intune MDM-ben regisztrált eszközök
- Külső EMM-ben regisztrált eszközök
Az Intune App SDK Xamarin-kötésekkel létrehozott Xamarin-alkalmazások mostantól intune-alkalmazásvédelmi szabályzatokat kaphatnak az Intune mobileszköz-kezelési (MDM) regisztrált és nem regisztrált eszközökön is.
Előfeltételek
Tekintse át a licencfeltételeket. Nyomtassa ki és őrizze meg a rekordok licencfeltételeinek másolatát. Az Intune App SDK Xamarin Bindings letöltésével és használatával Ön elfogadja az ilyen licencfeltételeket. Ha nem fogadja el őket, ne használja a szoftvert.
Az Intune SDK a Microsoft Authentication Libraryre (MSAL) támaszkodik a hitelesítési és feltételes indítási forgatókönyvekhez, amelyekhez az alkalmazásokat a Microsoft Entra ID azonosítóval kell konfigurálni.
Ha az alkalmazás már konfigurálva van az MSAL használatára, és saját egyéni ügyfél-azonosítóval rendelkezik a Microsoft Entra-azonosítóval való hitelesítéshez, győződjön meg arról, hogy a Xamarin-alkalmazás engedélyeit az Intune Mobilalkalmazás-kezelés (MAM) szolgáltatáshoz kell adni. Az Intune SDK használatának első lépéseiről az Intune SDK útmutatójának "Az alkalmazás hozzáférésének biztosítása az Intune Mobile App Management szolgáltatáshoz" című szakaszában található utasításokat használhatja.
Biztonsági szempontok
A lehetséges hamisítás, információfelfedés és jogosultságszint-emelési támadások megelőzése érdekében:
- Győződjön meg arról, hogy a Xamarin-alkalmazásfejlesztés biztonságos munkahelyen történik.
- Győződjön meg arról, hogy a kötések érvényes Microsoft-forrásból származnak:
- MS Intune App SDK NuGet-profil
- Intune App SDK Xamarin GitHub-adattár
- Konfigurálja a NuGet-konfigurációt a projekthez, hogy megbízhatónak minősítse az aláírt, nem módosított NuGet-csomagokat. További információt az aláírt csomagok telepítésével kapcsolatos cikkben talál.
- Biztonságossá teheti a Xamarin-alkalmazást tartalmazó kimeneti könyvtárat. Érdemes lehet felhasználói szintű könyvtárat használni a kimenethez.
Az Intune alkalmazásvédelmi szabályzatok engedélyezése iOS-mobilalkalmazásban
Fontos
Az Intune rendszeresen kiadja az Intune App SDK frissítéseit. Rendszeresen ellenőrizze, hogy az Intune App SDK Xamarin-kötései tartalmazzák-e a frissítéseket, és beépítik-e a szoftverfejlesztési kiadási ciklusba annak biztosítása érdekében, hogy az alkalmazások támogatják az alkalmazásvédelmi szabályzat legújabb beállításait.
Adja hozzá a Microsoft.Intune.MAM.Xamarin.iOS NuGet-csomagot a Xamarin.iOS-projekthez.
Kövesse az Intune App SDK iOS-mobilalkalmazásba való integrálásához szükséges általános lépéseket. Kezdje az iOS-hez készült Intune App SDK fejlesztői útmutatójának 3. lépésével. Az IntuneMAMConfigurator futtatásának ezen szakaszában kihagyhatja az utolsó lépést, mivel ez az eszköz megtalálható a Microsoft.Intune.MAM.Xamarin.iOS csomagban, és a buildeléskor automatikusan futni fog. Fontos: A kulcsláncmegosztás engedélyezése egy alkalmazáshoz kissé eltér a Visual Studióban az Xcode-tól. Nyissa meg az alkalmazás Jogosultságok plist elemét, és győződjön meg arról, hogy a "Kulcskarika engedélyezése" lehetőség engedélyezve van, és a megfelelő kulcsláncmegosztási csoportokat hozzáadja a szakaszhoz. Ezután győződjön meg arról, hogy a jogosultságok plist értéke a projekt "iOS-csomagaláírási" beállításainak "Egyéni jogosultságok" mezőjében van megadva az összes megfelelő konfiguráció-/platformkombinációhoz.
A kötések hozzáadása és az alkalmazás megfelelő konfigurálása után az alkalmazás elkezdheti használni az Intune SDK API-jait. Ehhez a következő névteret kell tartalmaznia:
using Microsoft.Intune.MAM;
Az alkalmazásvédelmi szabályzatok fogadásának megkezdéséhez az alkalmazásnak regisztrálnia kell az Intune MAM szolgáltatásban. Ha az alkalmazás nem használja a Microsoft Authentication Libraryt (MSAL) a felhasználók hitelesítésére, és azt szeretné, hogy az Intune SDK kezelje a hitelesítést, az alkalmazásnak meg kell adnia a felhasználó egyszerű felhasználónevét az IntuneMAMEnrollmentManager LoginAndEnrollAccount metódusának:
IntuneMAMEnrollmentManager.Instance.LoginAndEnrollAccount([NullAllowed] string identity);
Előfordulhat, hogy az alkalmazások null értéket adnak át, ha a felhasználó UPN-je ismeretlen a hívás időpontjában. Ebben az esetben a rendszer arra kéri a felhasználókat, hogy mind az e-mail-címüket, mind a jelszavukat meg kell adniuk.
Ha az alkalmazás már használja az MSAL-t a felhasználók hitelesítésére, konfigurálhat egyszeri bejelentkezést (SSO) az alkalmazás és az Intune SDK között. Először felül kell bírálnia az Intune SDK által az alkalmazáshoz használt alapértelmezett Microsoft Entra-beállításokat. Ezt az alkalmazás Info.plist fájljában található IntuneMAMSettings szótárban teheti meg az iOS-hez készült Intune App SDK fejlesztői útmutatójában leírtak szerint, de kódban is megteheti az IntuneMAMSettings osztály Microsoft Entra ID felülbírálási tulajdonságaival. Az Info.plist megközelítés azoknál az alkalmazásoknál ajánlott, amelyek MSAL-beállításai statikusak, míg a felülbírálási tulajdonságokat olyan alkalmazások esetében javasoljuk, amelyek futásidőben határozzák meg ezeket az értékeket. Miután az összes SSO-beállítás konfigurálva lett, az alkalmazásnak meg kell adnia a felhasználó egyszerű felhasználónevét az IntuneMAMEnrollmentManager RegisterAndEnrollAccount metódusának a sikeres hitelesítés után:
IntuneMAMEnrollmentManager.Instance.RegisterAndEnrollAccount(string identity);
Az alkalmazások az EnrollmentRequestWithStatus metódus intuneMAMEnrollmentDelegate alosztályában történő implementálásával és az IntuneMAMEnrollmentManager Delegate tulajdonságának az adott osztály egy példányára való beállításával állapíthatják meg a regisztrációs kísérlet eredményét.
Sikeres regisztráció esetén az alkalmazások a következő tulajdonság lekérdezésével megállapíthatják a regisztrált fiók egyszerű felhasználónevét (ha korábban ismeretlen):
string enrolledAccount = IntuneMAMEnrollmentManager.Instance.EnrolledAccount;
Az Intune alkalmazásvédelmi szabályzatok engedélyezése androidos mobilalkalmazásban
- Adja hozzá a Microsoft.Intune.MAM.Xamarin.Android NuGet-csomagot a Xamarin.Android-projekthez.
- Xamarin.Forms-alkalmazás esetén adja hozzá a Microsoft.Intune.MAM.Remapper.Tasks NuGet-csomagot a Xamarin.Android-projekthez is.
- További részletekért kövesse az Intune App SDK Android-mobilalkalmazásba való integrálásához szükséges általános lépéseket, és tekintse meg ezt a dokumentumot.
Xamarin.Android-integráció
Az Intune App SDK integrálásának teljes áttekintését az Androidhoz készült Microsoft Intune App SDK fejlesztői útmutatójában találja. Ahogy végigolvasta az útmutatót, és integrálja az Intune App SDK-t a Xamarin-alkalmazással, az alábbi szakaszok a Java-ban fejlesztett natív Android-alkalmazás és a C# nyelven fejlesztett Xamarin-alkalmazás implementációja közötti különbségeket hivatottak kiemelni. Ezeket a szakaszokat kiegészítőként kell kezelni, és nem helyettesíthetik az útmutató teljes olvasását.
Remapper
Az 1.4428.1-es kiadástól kezdve a Microsoft.Intune.MAM.Remapper
csomag hozzáadható egy Xamarin.Android-alkalmazáshoz buildelési eszközként a MAM-osztály, a metódus és a rendszerszolgáltatások cseréjének végrehajtásához. Ha a Remapper szerepel a fájlban, az átnevezett metódusok és MAM-alkalmazások szakasz MAM-egyenértékű helyettesítő részei automatikusan el lesznek hajtva az alkalmazás létrehozásakor.
Ha ki szeretne zárni egy osztályt a MAM-ificationből a Remapper által, a következő tulajdonság adható hozzá a projektfájlhoz .csproj
.
<PropertyGroup>
<ExcludeClasses>Semicolon separated list of relative class paths to exclude from MAM-ification</ExcludeClasses>
</PropertyGroup>
Megjegyzés:
A Remapper jelenleg megakadályozza a Xamarin.Android-alkalmazások hibakeresését. Az alkalmazás hibakereséséhez javasolt a manuális integráció.
Átnevezett metódusok
Az Android-osztályban elérhető metódusok sok esetben véglegesként vannak megjelölve a MAM csereosztályban. Ebben az esetben a MAM helyettesítő osztálya egy hasonló nevű metódust biztosít (utótaggal MAM
), amelyet felül kell bírálni. Ha például a parancsból MAMActivity
származik, a felülbírálás OnCreate()
és a hívás Activity
base.OnCreate()
helyett felül kell bírálnia OnMAMCreate()
és meghívnia a parancsotbase.OnMAMCreate()
.
MAM-alkalmazás
Az alkalmazásnak definiálnia kell egy osztályt Android.App.Application
. Ha manuálisan integrálja a MAM-t, akkor a-tól MAMApplication
kell örökölnie. Győződjön meg arról, hogy az alosztály megfelelően van díszítve a [Application]
attribútummal, és felülbírálja a konstruktort (IntPtr, JniHandleOwnership)
.
[Application]
class TaskrApp : MAMApplication
{
public TaskrApp(IntPtr handle, JniHandleOwnership transfer)
: base(handle, transfer) { }
Megjegyzés:
A MAM Xamarin-kötésekkel kapcsolatos probléma az alkalmazás összeomlását okozhatja, amikor hibakeresési módban van üzembe helyezve. Áthidaló megoldásként az Debuggable=false
attribútumot hozzá kell adni az Application
osztályhoz, és a android:debuggable="true"
jelölőt el kell távolítani a jegyzékfájlból, ha manuálisan lett beállítva.
Az alkalmazás részvételét igénylő funkciók engedélyezése
Példa: Annak meghatározása, hogy szükséges-e PIN-kód az alkalmazáshoz
MAMPolicyManager.GetPolicy(currentActivity).IsPinRequired;
Példa: Az elsődleges Intune-felhasználó meghatározása
IMAMUserInfo info = MAMComponents.Get<IMAMUserInfo>();
return info?.PrimaryUser;
Példa: Annak megállapítása, hogy engedélyezett-e az eszközre vagy a felhőbeli tárhelyre való mentés
MAMPolicyManager.GetPolicy(currentActivity).GetIsSaveToLocationAllowed(SaveLocation service, String username);
Regisztráció az SDK értesítéseihez
Az alkalmazásnak regisztrálnia kell az értesítésekre az SDK-ból egy MAMNotificationReceiver
létrehozásával és a használatával történő regisztrálásával MAMNotificationReceiverRegistry
. Ehhez meg kell adnia a fogadót és a kívánt értesítéstípust a fájlban App.OnMAMCreate
, ahogy az alábbi példában látható:
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-regisztrációkezelő
IMAMEnrollmentManager mgr = MAMComponents.Get<IMAMEnrollmentManager>();
Xamarin.Forms-integráció
Az alkalmazások esetében Xamarin.Forms
a csomag automatikusan elvégzi a Microsoft.Intune.MAM.Remapper
MAM-osztály cseréjét úgy, hogy osztályokat injektál MAM
a gyakran használt Xamarin.Forms
osztályok osztályhierarchiájába.
Megjegyzés:
A Xamarin.Forms-integrációt a fent részletezett Xamarin.Android-integráció mellett kell elvégezni. A Remapper eltérően viselkedik a Xamarin.Forms-alkalmazások esetében, ezért a manuális MAM-cserét továbbra is végre kell hajtani.
Miután hozzáadta a Remappert a projekthez, el kell végeznie a MAM-egyenértékű cserét. Például a FormsAppCompatActivity
és FormsApplicationActivity
a továbbra is használható az alkalmazásban, feltéve, hogy OnCreate
felülbírálja a és OnResume
a értékét a MAM-megfelelőkkel OnMAMCreate
, illetve OnMAMResume
a helyett.
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());
}
Ha a csere nem történik meg, akkor a következő fordítási hibákba ütközhet, amíg el nem végezte a cserét:
-
CS0239-ás fordítóhiba. Ez a hiba gyakran jelenik meg ebben az formában
'MainActivity.OnCreate(Bundle)': cannot override inherited member 'MAMAppCompatActivityBase.OnCreate(Bundle)' because it is sealed
. Ez azért várható, mert amikor a Remapper módosítja a Xamarin-osztályok öröklését, bizonyos függvények lesznek létrehozvasealed
, és egy új MAM-változatot ad hozzá a felülbíráláshoz. -
CS0507-ös fordítói hiba: Ez a hiba gyakran jelenik meg ebben az formában
'MyActivity.OnRequestPermissionsResult()' cannot change access modifiers when overriding 'public' inherited member ...
. Amikor a Remapper megváltoztatja egyes Xamarin-osztályok öröklését, bizonyos tagfüggvények értékrepublic
változnak. Ha felülbírálja ezen függvények bármelyikét, a felülbírálásokpublic
hozzáférési módosítóit is módosítania kell.
Megjegyzés:
A Remapper újraírja a Visual Studio által az IntelliSense automatikus kiegészítéséhez használt függőséget. Ezért előfordulhat, hogy újra kell betöltenie és újra kell építenie a projektet, amikor a Remapper hozzá van adva az IntelliSense-hez a módosítások helyes felismeréséhez.
Hibaelhárítás
- Ha indításkor üres, fehér képernyő jelenik meg az alkalmazásban, előfordulhat, hogy a fő szálon kell végrehajtania a navigációs hívásokat.
- Az Intune SDK Xamarin-kötések nem támogatják a platformfüggetlen keretrendszert (például MvvmCross) használó alkalmazásokat az MvvmCross és az Intune MAM-osztályok közötti ütközések miatt. Bár egyes ügyfeleknek sikeres volt az integráció, miután az alkalmazásaikat egyszerű Xamarin.Formsra helyezték át, nem biztosítunk explicit útmutatást vagy beépülő modulokat az MvvmCrosst használó alkalmazásfejlesztők számára.
Céges portál alkalmazás
Az Intune SDK Xamarin-kötések a Céges portál Android-alkalmazásának jelenlétére támaszkodnak az eszközön az alkalmazásvédelmi szabályzatok engedélyezéséhez. A Céges portál alkalmazásvédelmi szabályzatokat kér le az Intune szolgáltatásból. Amikor az alkalmazás inicializál, betölti a szabályzatot és a kódot, hogy kényszerítse a szabályzatot a Céges portálról. A felhasználónak nem kell bejelentkeznie.
Megjegyzés:
Ha a Céges portál alkalmazás nem az Android-eszközön található, az Intune által felügyelt alkalmazások ugyanúgy viselkednek, mint az Intune alkalmazásvédelmi szabályzatait nem támogató normál alkalmazások.
Az eszközregisztráció nélküli alkalmazásvédelem esetén a felhasználónak nem kell regisztrálnia az eszközt a Céges portál alkalmazással.
Támogatás
Ha a szervezete egy meglévő Intune-ügyfél, a Microsoft támogatási képviselőjével együttműködve nyisson meg egy támogatási jegyet, és hozzon létre egy problémát a GitHub-problémák oldalán. Segíteni fogunk, amint tudunk.