Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az Androidhoz készült Microsoft Intune App SDK lehetővé teszi az Intune alkalmazásvédelmi szabályzatok (más néven MAM-házirendek) beépítését a natív Java/Kotlin Android-alkalmazásba. Az Intune által felügyelt alkalmazások integrálva vannak az Intune App SDK-val. Az Intune rendszergazdái egyszerűen telepíthetnek alkalmazásvédelmi szabályzatokat az Intune által felügyelt alkalmazásra, ha az Intune aktívan kezeli az alkalmazást.
Fontos
Az Intune rendszeresen ad ki frissítéseket az Intune App SDK-hoz. Javasoljuk, hogy fizessen elő az Intune App SDK adattáraira a frissítésekért, hogy beépíthesse a frissítést a szoftverfejlesztési kiadási ciklusba, és biztosíthassa, hogy az alkalmazások támogassák a legújabb alkalmazásvédelmi házirend-beállításokat.
Tervezze meg az Intune App SDK kötelező frissítéseinek elvégzését minden főbb operációsrendszer-kiadás előtt, így biztosítva az alkalmazás zökkenőmentes működését, mivel az operációsrendszer-frissítések kompatibilitástörő változásokat okozhatnak. Ha nem frissít a legújabb verzióra az operációs rendszer egyik főbb kiadása előtt, fennáll annak a veszélye, hogy hibát érintő módosításba ütközik, és/vagy nem tudja alkalmazni az appvédelmi házirendeket az alkalmazásra.
Folyamat folyamatábra
Az alábbi diagram az Android-alapú Intune App SDK folyamatát ismerteti:
Szakasz céljai
Az útmutató részletesebb információkat tartalmaz az Intune App SDK architektúrájáról, információkat tartalmaz a szokatlan integrációs lépésekről, és egyéb hasznos tartalmakat tartalmaz.
Az SDK részletesebben
Osztály- és metódushelyettesítők
A buildeszközök használatával az Intune App SDK megkísérli minimalizálni az Android-fejlesztők integrációs terhét. Az eszközök összeállítása előtt a fejlesztőknek minden cserét manuálisan kellett végrehajtaniuk.
Megjegyzés:
Az alkalmazásoknak most már integrálódniuk kell az SDK-buildeszközökkel, amelyek automatikusan elvégzik az összes cserét.
Az Android alaposztályokat a megfelelő MAM-megfelelői váltják fel az Intune-felügyelet engedélyezéséhez.
Az SDK-osztályok az Android alaposztálya és az alkalmazás saját származtatott osztálya között élnek.
Például előfordulhat, hogy egy alkalmazástevékenység öröklési hierarchiával végződik, amely így néz ki: AppSpecificActivity kiterjeszti MAMActivity a kiterjesztéseket Activity.
A MAM-réteg szűri a rendszerműveletekre irányuló hívásokat, hogy zökkenőmentesen biztosítsa az alkalmazás számára a világ felügyelt nézetét.
Az alaposztályok mellett az alkalmazás által származtatás nélkül használt egyes osztályok is MediaPlayerrendelkeznek kötelező MAM-egyenértékekkel, és néhány metódushívást is le kell cserélni.
Az alábbi táblázat számos mobileszköz-kezelési eszköz cseréjét sorolja fel.
| Android alaposztály | Az Intune App SDK helyettesítése |
|---|---|
| android.app.Tevékenység | MAMActivity |
| android.app.ActivityGroup | MAMActivityGroup |
| android.app.AliasActivity | MAMAliasActivity |
| android.app. Alkalmazás | MAMApplication |
| android.app.Dialog | MAMDialog |
| android.app.AlertDialog.Builder | MAMAlertDialogBuilder |
| android.app.DialogFragment | MAMDialogFragment |
| android.app.ExpandableListActivity | MAMExpandableListActivity |
| android.app.Fragment | MAMFragment |
| android.app.IntentService | MAMIntentService |
| android.app.LauncherActivity | MAMLauncherActivity |
| android.app.ListActivity | MAMListActivity |
| android.app.ListFragment | MAMListFragment |
| android.app.NativeActivity | MAMNativeActivity |
| android.app.PendingIntent | MAMPendingIntent |
| android.app.Service | MAMService |
| android.app.TabActivity | MAMTabActivity |
| android.app.TaskStackBuilder | MAMTaskStackBuilder |
| android.app.backup.BackupAgent | MAMBackupAgent |
| android.app.backup.BackupAgentHelper | MAMBackupAgentHelper |
| android.app.backup.FileBackupHelper | MAMFileBackupHelper |
| android.app.backup.SharePreferencesBackupHelper | MAMSharedPreferencesBackupHelper |
| android.app.job.JobService | MAMJobService |
| android.content.BroadcastReceiver | MAMBroadcastReceiver |
| android.content.ContentProvider | MAMContentProvider |
| android.os.Binder | MAMBinder (Csak akkor szükséges, ha a Binder nem Android Interface Definition Language (AIDL) interfészről jön létre) |
| android.media.MediaPlayer | MAMMediaPlayer |
| android.media.MediaMetadataRetriever | MAMMediaMetadataRetriever |
| android.media.MediaRecorder | MAMMediaRecorder |
| android.provider.DocumentsProvider | MAMDocumentsProvider |
| android.preference.PreferenceActivity | MAMPreferenceActivity |
| android.widget.PopupWindow | MAMPopupMenu |
| android.widget.PopupWindow | MAMPopupWindow |
| android.widget.ListPopupWindow | MAMListPopupWindow |
| android.widget.TextView | MAMTextView |
| android.widget.AutoCompleteTextView | MAMAutoCompleteTextView |
| android.widget.CheckedTextView | MAMCheckedTextView |
| android.widget.EditText | MAMEditText |
| android.inputmethodservice.ExtractEditText | MAMExtractEditText |
| android.widget.MultiAutoCompleteTextView | MAMMultiAutoCompleteTextView |
| android.view.LayoutInflater | MAMLayoutInflater |
| android.view.ViewGroup | MAMViewCsoport |
| android.view.SurfaceView | MAMSurfaceView |
| android.opengl.GLSurfaceView | MAMGLSurfaceView |
| android.widget.VideoView | MAMVideoView |
Átnevezett metódusok
Sok esetben az Android osztályban elérhető módszerek a MAM helyettesítő osztályában véglegesként lettek megjelölve.
Ebben az esetben a MAM helyettesítő osztály egy hasonló nevű (általában utótaggal kiegészített MAM) módszert biztosít, amelyet felül kell bírálni.
Ha például a MAMActivity-ből származtat, felülírás onCreate() és hívás super.onCreate()helyett felül Activity kell bírálnia onMAMCreate() és hívnia super.onMAMCreate()kell .
A Java-fordítónak érvényesítenie kell a végső korlátozásokat, hogy megakadályozza az eredeti metódus véletlen felülbírálását a mobileszköz-kezelési mód megfelelője helyett.
Wrapped System Services
Egyes rendszerszolgáltatás-osztályoknál statikus metódust kell hívni egy MAM-burkoló osztályon ahelyett, hogy közvetlenül a kívánt metódust hívnák meg a szolgáltatás példányán.
Például a behívó hívásnak getSystemService(ClipboardManager.class).getPrimaryClip() a következőre MAMClipboardManager.getPrimaryClip(getSystemService(ClipboardManager.class)irányuló hívássá kell válnia: .
A szükséges buildbővítmény automatikusan elvégzi ezeket a cseréket.
| Android osztály | Az Intune App SDK helyettesítése |
|---|---|
| android.content.ClipboardManager | MAMClipboard |
| android.content.ContentProviderClient | MAMContentProviderClientManagement |
| android.content.ContentResolver | MAMContentResolverManagement |
| android.content.pm.PackageManager | MAMPackageManagement |
| android.app.DownloadManager | MAMDownloadManagement |
| android.print.PrintManager | MAMPrintManagement |
| android.view.view | MAMViewManagement |
| android.view.DragEvent | MAMDragEventManagement |
| android.view.LayoutInflater | MAMLayoutInflaterManagement |
| android.app.NotificationManager | MAMNotificationManagement |
| android.app.blob.BlobStoreManager | MAMBlobStoreManager |
| android.app.blob.BlobStoreManager.Session | MAMBlobStoreManager.Session |
Egyes osztályok legtöbb metódusa be van csomagolva (például ClipboardManager, , ContentResolverContentProviderClient), míg PackageManager más osztályokba csak egy vagy két metódus van csomagolva (például DownloadManager, PrintManager, PrintHelper, View, NotificationManagerDragEventés NotificationManagerCompat.
Mobileszköz-kezelési és mobileszköz-kezelési szolgáltatás regisztrálása
Ahogy azt a 4. szakasz Regisztráció és regisztráció lapján tárgyaltuk, az Intune App SDK "regisztrálja" azokat a fiókokat, amelyeket az alkalmazás regisztrál, hogy a fiókot házirend védje. A sikeres regisztráció után a fiók felügyelete alá vonul, és a mobileszköz-kezelési házirendeket alkalmazni kell a fiókra.
A "regisztráció" kifejezés utalhat az Eszközkezelés (MDM) engedélyezésének végfelhasználó által kezdeményezett folyamatára is. Az MDM-regisztráció teljesen elkülönül az alkalmazásvédelmi házirend regisztrációjától.
Egy SDK-ba integrált alkalmazás anélkül is regisztrálhat fiókot az alkalmazásvédelmi szabályzathoz, hogy az adott fiók regisztrálva lenne az Eszközkezelésben. Hasonlóképpen, a felhasználók regisztrálhatnak egy eszközt az Eszközkezelés szolgáltatásra anélkül, hogy SDK-val integrált alkalmazásokkal rendelkeztek volna az alkalmazásvédelmi szabályzatra regisztrált fiókokkal.
Amikor a fejlesztők és rendszergazdák a regisztrációra hivatkoznak, általában az MDM-regisztrációra utalnak, mivel az alkalmazásvédelmi házirend regisztrációja nagyrészt láthatatlan mind a fejlesztők, mind a végfelhasználók számára. Az MDM-re való regisztrációról további információt az Android-eszközök regisztrálása című témakörben talál.
Integrációs tippek
A Céges portál naplóinak ismertetése
Céges portál naplói olyan információkat tartalmaznak, amelyeket a Microsoft mérnökei a problémák kivizsgálásához használnak. A naplók némelyike hasznos lehet az SDK-t integráló fejlesztők számára is.
A fájl DiagnosticsInfo-scrubbed.log többek között a mobileszköz-kezelés által kezelt appokról és a mobileszköz-kezelési házirendre vonatkozó részletes információkat PolicyDB Information tartalmazza.
Minden felügyelt apphoz tartozik bejegyzés a PolicyDB Information szakaszában.
Itt érdemes ellenőriznie az app csomagnevét, hogy meggyőződjön arról, hogy a mobileszköz-kezelési házirend megfelelően van megcélozva az alkalmazáshoz.
Ha itt nem látja az alkalmazás csomagjának nevét, az azt jelenti, hogy a bejelentkezett fiókra nincs mobileszköz-kezelési házirend alkalmazva.
Az egyes mobileszköz-kezelési házirend-beállítások leírásáért tekintse meg az Android appvédelmi házirendjének beállításait a Microsoft Intune-ban. Ha szeretné megtudni, hogyan jelennek meg ezek a beállítások a Céges portál naplóiban, tekintse meg az Ügyfélapp-védelmi naplók áttekintését. Ha a mobileszköz-kezelési házirend nem az elvárásoknak megfelelően van érvényben, javasoljuk, hogy ellenőrizze a Céges portál naplóit vagy a diagnosztikai felhasználói felületet, ellenőrizze, hogy az appot mobileszköz-kezelési házirend kezeli-e, és győződjön meg arról, hogy a házirendbeállítások megfelelnek a várt értékeknek.
A Céges portál naplóit az alábbi módok egyikével gyűjtheti össze:
- A Céges portálon keresztül
- A Céges portál alkalmazás megnyitása
- Válassza a jobb felső sarokban található három pont menüt
- Válassza a Beállítások lehetőséget
- A Diagnosztikai naplók területen válassza a Naplók mentése elemet
- Az utasításokat követve válassza ki a kimeneti könyvtárat a Céges portál naplóinak mentéséhez.
- A paranccsal
adb shell pullhúzza le a naplókat az androidos eszközéről a helyi gépre.
- [A felügyelt alkalmazásnaplók eléréséhez használja a Microsoft Edge Android-verzióját]. Ez megjeleníti a Céges portál naplóinak összegyűjtésére és a mobileszköz-kezelési diagnosztika megtekintésére szolgáló felhasználói felületet.
- Hívás
MAMPolicyManager.showDiagnostics(context)ugyanazon felhasználói felület megjelenítéséhez a Céges portál naplóinak összegyűjtéséhez.
Gyors tesztelés a házirend módosításával
Az Intune App SDK alkalmazás integrációjának fejlesztése és tesztelése során gyakran módosíthatja a tesztfelhasználóra vonatkozó alkalmazásvédelmi házirend beállításait.
Alapértelmezés szerint az integrált alkalmazások 30 percenként bejelentkeznek a frissített házirendekre az Intune szolgáltatással, ha aktívak. Elkerülheti ezt a várakozást, és kényszerítheti a bejelentkezést a Céges portál használatával:
- Indítsa el a Céges portált. Nem kell bejelentkeznie.
- Válassza a ... menüikonra.
- Válassza a Beállítások lehetőséget.
- Görgessen a "Kezelési házirend" beállításhoz.
- Nyomja le a Szinkronizálás gombot.
Ezzel a művelettel azonnal ütemezheti a bejelentkezést, és lekéri az alkalmazásra és fiókra vonatkozó naprakész házirendeket.
Az AndroidX-áttelepítés hibaelhárítása
Ha az AndroidX használata előtt integrálta az Intune App SDK-t, az alábbihoz hasonló hiba léphet fel az AndroidX-re való áttelepítés során:
incompatible types: android.support.v7.app.ActionBar cannot be converted to androidx.appcompat.app.ActionBar
Ezek a hibák akkor fordulhatnak elő, ha az alkalmazás az SDK korábbi támogatási osztályaira hivatkozik. A mobilalkalmazás-kezelési támogatási osztályok az AndroidX-be áthelyezett Android-támogatási osztályokat foglalják magukba. Az ilyen hibák elkerülése érdekében cserélje le az összes mobileszköz-kezelési segédosztály-hivatkozást a megfelelő AndroidX-fiókokra. Ezt úgy érheti el, hogy először eltávolítja a MAM-támogatási könyvtárfüggőségeket a Gradle-buildfájlokból. A szóban forgó sorok az alábbihoz hasonlóak lesznek:
implementation "com.microsoft.intune.mam:android-sdk-support-v4:$intune_mam_version"
implementation "com.microsoft.intune.mam:android-sdk-support-v7:$intune_mam_version"
Ezután javítsa ki a keletkező fordítási idejű hibákat úgy, hogy az and com.microsoft.intune.mam.client.support.v4 csomagokban com.microsoft.intune.mam.client.support.v7 lévő összes MAM-osztályra mutató hivatkozást lecseréli az azoknak megfelelő AndroidX-csomagokra.
Például az alábbi MAMAppCompatActivity hivatkozásokat az AndroidX-re kell módosítani.AppCompatActivity
Ahogy fentebb említettük, a MAM build bővítmény/eszköz fordításkor automatikusan átírja az AndroidX könyvtárakban lévő osztályokat a megfelelő MAM-megfelelőkkel.
Korlátozások és különleges esetek
Alapértelmezett regisztráció
Az alkalmazás alternatív módon regisztrálhat az alkalmazásvédelmi szabályzatokra egy egyszerűsített folyamattal, az alapértelmezett regisztrációval. Ez a funkció elsősorban az MSAL-t nem integráló privát üzletági alkalmazások támogatására szolgál.
Figyelmeztetés
Az alapértelmezett regisztráció jelentős kompromisszumokkal jár, ezért nem ajánlott. Az alapértelmezett regisztrációt kihasználó alkalmazások nem támogatják a feltételes hozzáférést, nem részesülnek a Microsoft-szolgáltatásokkal együtt, és nem Intune-fiókok sem használhatják őket. Ha az alkalmazást nyilvános alkalmazásboltba szállítjuk, az alapértelmezett regisztráció nem támogatott.
Az alapértelmezett regisztráció arra kényszeríti a végfelhasználót, hogy telepítse a Céges portál, és hajtsa végre a mobileszköz-kezelési regisztrációs folyamatot, mielőtt beengedné a felhasználókat az alkalmazásba.
Megjegyzés:
Az alapértelmezett regisztráció a szuverén felhőre támaszkodik.
Engedélyezze az alapértelmezett regisztrációt a következő lépésekkel:
Ha az alkalmazás integrálja az MSAL-t, vagy engedélyeznie kell az egyszeri bejelentkezést, konfigurálja az MSAL-t. Ha nem, akkor kihagyhatja ezt a lépést.
Engedélyezze az alapértelmezett regisztrációt a következő érték hozzáadásával a jegyzékfájlhoz a
<application>címke alatt:<meta-data android:name="com.microsoft.intune.mam.DefaultMAMServiceEnrollment" android:value="true" />A szükséges MAM-házirend engedélyezéséhez adja hozzá a következő értéket a jegyzékfájlhoz a
<application>címke alatt:<meta-data android:name="com.microsoft.intune.mam.MAMPolicyRequired" android:value="true" />
Elkülönített folyamatok
Az Intune App SDK nem tud védelmet alkalmazni az elkülönített folyamatokra.
Az elkülönített folyamatok (android:isolatedProcess) támogatásához meg kell adni az alábbi metaadatcímkét.
Figyelmeztetés
E metaadatok hozzáadásával az alkalmazás deklarálja, hogy az elkülönített folyamat nem teheti elérhetővé a szervezeti adatokat. Az alkalmazás felelős azért, hogy ezt garantálja.
<meta-data android:name="com.microsoft.intune.mam.AllowIsolatedProcesses" android:value="true" />
Egyéni képernyő-Rögzítés korlátozások
Ha az alkalmazás olyan egyéni képernyőfelvételi funkciót tartalmaz, amely megkerüli az WindowAndroid -szintű FLAG_SECURE korlátozását, ellenőriznie kell a képernyőkép-rögzítési házirendet, mielőtt engedélyezné a funkció teljes hozzáférését.
Ha például az alkalmazás egyéni renderelőmotor használatával jeleníti meg az aktuális nézetet PNG-fájlként, akkor először ellenőriznie AppPolicy.getIsScreenCaptureAllowed()kell, hogy .
Ha az alkalmazás nem tartalmaz sem egyéni vagy harmadik féltől származó képernyőfelvétel-készítési funkciókat, akkor semmit sem kell tennie a képernyőfelvételek korlátozása érdekében.
A képernyőfelvételi házirend automatikusan érvényesül Window az összes integrált MAM-alkalmazás szintjén.
Az operációs rendszer vagy más alkalmazás által az alkalmazásban található rögzítési Window kísérleteket szükség szerint blokkolja.
Ha például egy felhasználó az Android beépített képernyőkép- vagy képernyőfelvételi funkcióival próbálja rögzíteni az alkalmazás képernyőjét, a rögzítés automatikusan korlátozva lesz az alkalmazás részvétele nélkül.
A házirend-kényszerítés korlátozásai
Tartalomfeloldók használata: Az "átvitel vagy fogadás" Intune-házirend blokkolhatja vagy részlegesen letilthatja a tartalomfeloldó használatát a tartalomszolgáltató eléréséhez egy másik alkalmazásban. Ez azt fogja okozni
ContentResolver,openOutputStreamhogy a metódusok null értéket adjanak vissza, vagy hibaértéket dobjanak (például hibát ad visszaFileNotFoundException, ha le van tiltva). Az alkalmazás a hívással meg tudja állapítani, hogy a tartalomfeloldón keresztül történő adatírás sikertelenségét egy házirend okozta-e (vagy a házirend okozná):MAMPolicyManager.getPolicy(currentActivity).getIsSaveToLocationAllowed(contentURI);vagy ha nincs társított tevékenység:
MAMPolicyManager.getCurrentThreadPolicy().getIsSaveToLocationAllowed(contentURI);Ebben a második esetben a többszörös identitást használó alkalmazásoknak ügyelniük kell arra, hogy megfelelően állítsa be a szálidentitást (vagy explicit identitást adjon át egy
getPolicyForIdentityhívásnak).
Exportált szolgáltatások
Az Intune App SDK-ban található AndroidManifest.xml fájl tartalmazza a MAMNotificationReceiverService szolgáltatást, amelynek exportált szolgáltatásnak kell lennie ahhoz, hogy a Céges portál értesítéseket küldhessen egy felügyelt alkalmazásnak. A szolgáltatás ellenőrzi a hívót, és biztosítja, hogy csak a Céges portál küldhessen értesítéseket.
Tükröződési korlátozások
Néhány MAM-alaposztály (például MAMActivity, ) MAMDocumentsProviderolyan metódusokat tartalmaz (az Android eredeti alaposztályai alapján), amelyek csak bizonyos API-szintek felett jelenlévő paraméter- vagy visszatérési típusokat használnak.
Emiatt előfordulhat, hogy nem mindig lehet tükrözést használni az alkalmazásösszetevők összes metódusának felsorolására.
Ez a korlátozás nem korlátozódik a MAM-re, hanem ugyanaz a korlátozás, amely akkor lenne érvényben, ha az alkalmazás maga implementálná ezeket a metódusokat az Android alaposztályaiból.
Robolectric
Az Intune App SDK viselkedésének tesztelése a Robolectric alatt nem támogatott. Ismert problémák merülnek fel az SDK Robolectric alatt való futtatásakor a Robolectric alatti viselkedés miatt, amely nem pontosan utánozza a valós eszközökön vagy emulátorokon lévőket.
Ha tesztelnie kell az alkalmazást a Robolectric alatt, az ajánlott kerülő megoldás az, hogy az alkalmazásosztály logikáját egy segítőbe helyezi, és az egységtesztelő apk-t egy olyan alkalmazásosztállyal hozza létre, amely nem örökli a MAMApplication-től.