Microsoft Intune App SDK Xamarin-kötések
Fontos
Xamarin. Forms .NET többplatformos alkalmazás felhasználói felületté (MAUI) fejlődött. 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 Xamarint is. Forms és Intune App SDK Xamarin-kötések. Az Android- és iOS-platformokon Intune támogatásért lásd: 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 Intune alkalmazásvédelmi szabályzat használatá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 egyszerűen beépítsék Intune alkalmazásvédelmi funkciókat a Xamarin-alapú alkalmazásukba.
Az Microsoft Intune App SDK Xamarin-kötésekkel Intune alkalmazásvédelmi szabályzatokat (más néven APP- vagy MAM-szabályzatokat) építhet be a Xamarinnal fejlesztett alkalmazásokba. A MAM-kompatibilis alkalmazások integrálva lesznek a Intune App SDK-val. A rendszergazdák akkor helyezhetnek üzembe alkalmazásvédelmi szabályzatokat a mobilalkalmazásban, ha Intune aktívan felügyelik 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
- MDM-ben regisztrált eszközök Intune
- Külső EMM-ben regisztrált eszközök
A Intune App SDK Xamarin-kötésekkel létrehozott Xamarin-alkalmazások mostantól Intune alkalmazásvédelmi szabályzatokat kaphatnak Intune mobileszköz-felügyelettel (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. A Intune App SDK Xamarin Bindings letöltésével és használatával elfogadja az ilyen licencfeltételeket. Ha nem fogadja el őket, ne használja a szoftvert.
A 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ásoknak konfigurálva kell lenniük a Microsoft Entra ID.
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 ID való hitelesítéshez, győződjön meg arról, hogy a Xamarin-alkalmazás engedélyeit a Intune Mobile Application Management (MAM) szolgáltatáshoz kell adni. Használja az Intune SDK útmutatójának első lépéseinek "Az alkalmazás hozzáférésének biztosítása a Intune Mobile App Management szolgáltatáshoz" című szakaszának utasításait.
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.
Intune alkalmazásvédelmi szabályzatok engedélyezése iOS-mobilalkalmazásban
Fontos
Intune rendszeresen ad ki frissítéseket a Intune App SDK-hoz. Rendszeresen ellenőrizze a frissítéseket Intune App SDK Xamarin-kötéseket, és építse be őket a szoftverfejlesztési kiadási ciklusba, hogy az alkalmazások támogatják a legújabb alkalmazásvédelmi szabályzat beállításait.
Adja hozzá a Microsoft.Intune. MAM. Xamarin.iOS NuGet-csomag a Xamarin.iOS-projekthez.
Kövesse a 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 szerepel a Microsoftban. Intune. MAM. Xamarin.iOS-csomag, és a buildeléskor automatikusan fut. 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 a 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 a Intune SDK között. Először felül kell bírálnia az Intune SDK által használt alapértelmezett Microsoft Entra-beállításokat az alkalmazásával. 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, vagy megteheti kódban 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;
Intune alkalmazásvédelmi szabályzatok engedélyezése androidos mobilalkalmazásban
- Adja hozzá a Microsoft.Intune. MAM. Xamarin.Android NuGet-csomag a Xamarin.Android-projekthez.
- Egy Xamarinnak. Forms alkalmazáshoz adja hozzá a Microsoft.Intune. MAM. Remapper.Tasks NuGet-csomag a Xamarin.Android-projekthez is.
- További részletekért kövesse a 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ó
A 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 a Intune App SDK-t a Xamarin-alkalmazással, a következő 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 másképp viselkedik A Xamarin esetében. Forms alkalmazásokat, így 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.
- A 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 a Intune MAM-osztályok közötti ütközések miatt. Míg egyes ügyfeleknek sikeres volt az integráció, miután az alkalmazásaikat egyszerű Xamarinba helyezték át. Forms 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 az Céges portál Android-alkalmazás jelenlétére támaszkodnak az eszközön az alkalmazásvédelmi szabályzatok engedélyezéséhez. A Céges portál lekéri az alkalmazásvédelmi szabályzatokat a Intune szolgáltatásból. Amikor az alkalmazás inicializál, betölti a szabályzatot és a kódot, hogy kikényszerítse a szabályzatot a Céges portá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ó, a Intune által felügyelt alkalmazások ugyanúgy viselkednek, mint a normál alkalmazások, amelyek nem támogatják Intune alkalmazásvédelmi szabályzatokat.
Az eszközregisztráció nélküli alkalmazásvédelem esetén a felhasználónak nem kell regisztrálnia az eszközt az Céges portál alkalmazással.
Támogatás
Ha a szervezete már Intune ügyfél, a Microsoft támogatási képviselőjével együttműködve hozzon létre 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.