Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Obs!
Den här guiden är uppdelad i flera olika steg. Börja med att läsa Planera integreringen.
Etappmål
- Ladda ned Intune App SDK.
- Lär dig vilka filer som ingår i Intune App SDK.
- Referera till Intune App SDK i ditt program.
- Bekräfta att Intune App SDK ingår korrekt i din version.
- Registrera nya konton för MAM-hantering efter autentisering med MSAL.
- Om du vill ta bort företagsdata avregistrerar du konton vid utloggning
- (Rekommenderas) Integrera MAM-loggning i din app.
Förhandskrav
Du behöver en macOS-dator med Xcode 16.0 eller senare.
Din app måste vara avsedd för iOS 16.0 eller senare.
Granska licensvillkoren för Intune App SDK för iOS. Skriv ut och behåll en kopia av licensvillkoren för din dokumentation. Genom att ladda ned och använda Intune App SDK för iOS godkänner du sådana licensvillkor. Om du inte accepterar dem ska du inte använda programvaran.
Ladda ned filerna för Intune App SDK för iOS på GitHub.
Vad finns på SDK-lagringsplatsen
IntuneMAMSwift.xcframework: Det dynamiska ramverket för Intune App SDK. Vi rekommenderar att du länkar det här ramverket till din app/tillägg för att aktivera Intune klientprogramhantering. Vissa utvecklare kanske dock föredrar prestandafördelarna med det statiska ramverket (IntuneMAMStatic.xcframework).
IntuneMAMStatic.xcframework: Det statiska ramverket för Intune App SDK. Utvecklare kan välja att länka det statiska ramverket i stället för det dynamiska ramverket. Eftersom den körbara koden från ett statiskt ramverk bäddas in direkt i binärfilen för appen/tillägget vid kompileringen finns det vissa prestandafördelar med att använda det statiska biblioteket. Om appen däremot innehåller tillägg blir apppaketstorleken större om du kopplar det statiska ramverket till appen och tilläggen. Den körbara koden är inbäddad i varje binärfil för app/tillägg. När du däremot använder det dynamiska ramverket kan appar och tillägg dela samma binärfil för Intune SDK, vilket resulterar i en mindre appstorlek.
IntuneMAMSwiftStub.xcframework: Intune App SDK Swift Stub-ramverket. Det här ramverket är ett obligatoriskt beroende av både IntuneMAMSwift.xcframework och IntuneMAMStatic.xcframework, som appar/tillägg måste länka.
IntuneMAMConfigurator: Ett verktyg som används för att konfigurera appens eller tilläggets Info.plist med de minsta ändringar som krävs för Intune hantering. Beroende på appens eller tilläggets funktioner kan du behöva göra fler manuella ändringar i Info.plist.
libIntuneMAMSwift.xcframework: Det statiska Intune App SDK-biblioteket. Den här varianten av Intune MAM iOS SDK är inaktuell och tas bort i en framtida uppdatering. Vi rekommenderar att du inte länkar det statiska biblioteket och i stället länkar dina appar/tillägg till antingen det dynamiska ramverket (IntuneMAMSwift.xcframework) eller det statiska ramverket (IntuneMAMStatic.xcframework) som nämndes tidigare.
IntuneMAMResources.bundle: Ett resurspaket som innehåller resurser som SDK:n förlitar sig på. Resurspaketet krävs endast för appar som integrerar det inaktuella statiska biblioteket (libIntuneMAMSwift.xcframework) och tar bort det i en framtida uppdatering.
Så här fungerar Intune App SDK
Syftet med Intune App SDK för iOS är att lägga till hanteringsfunktioner i iOS-program med minimala kodändringar. Ju färre kodändringar desto mindre tid till marknaden, men det påverkar inte konsekvensen och stabiliteten i din mobilapplikation.
Processflöde
Följande diagram innehåller Intune App SDK för iOS-processflödet:
Skapa SDK:et i mobilappen
Viktigt
Intune släpper regelbundet uppdateringar till Intune App SDK. Kontrollera regelbundet Intune App SDK för iOS för uppdateringar och införliva i din versionscykel för programutveckling för att säkerställa att dina appar stöder de senaste inställningarna för appskyddsprinciper.
Så här aktiverar du Intune App SDK:
Länka antingen eller till ditt mål: Dra xcframework-paketet till listan Ramverk, bibliotek och inbäddat innehåll för projektmålet.
IntuneMAMStatic.xcframeworkIntuneMAMSwift.xcframeworkUpprepa dessa steg förIntuneMAMSwiftStub.xcframework. För huvudappen väljer du "Bädda in & tecken" i kolumnen "Bädda in" för båda de xcframeworks som lagts till. Välj "Bädda inte in" för alla tillägg.
Lägg till följande iOS-ramverk i projektet:
- MessageUI.framework
- Security.framework (på engelska)
- CoreServices.framework
- SystemConfiguration.framework
- libsqlite3.tbd
- libc++.tbd
- ImageIO.framework
- LocalAuthentication.framework
- AudioToolbox.framework (på engelska)
- QuartzCore.framework
- WebKit.framework
- MetricKit.framework
Aktivera nyckelringsdelning (om det inte redan är aktiverat) genom att välja Funktioner i varje projektmål och aktivera nyckelringsdelningsomkopplaren . Nyckelringsdelning krävs för att du ska kunna gå vidare till nästa steg.
Obs!
Din etableringsprofil måste ha stöd för nya delningsvärden för nyckelringen. Nyckelringsåtkomstgrupperna bör ha stöd för ett jokertecken. Du kan kontrollera detta genom att öppna .mobileprovision-filen i en textredigerare, söka efter keychain-access-groups och se till att du har ett jokertecken. Till exempel:
<key>keychain-access-groups</key> <array> <string>YOURBUNDLESEEDID.*</string> </array>När du har aktiverat nyckelringsdelning följer du anvisningarna för att skapa en separat åtkomstgrupp där Intune App SDK lagrar sina data. Du kan skapa en åtkomstgrupp för nyckelringen med hjälp av användargränssnittet eller med hjälp av rättighetsfilen. Om du använder användargränssnittet för att skapa nyckelringsåtkomstgruppen följer du dessa steg:
Om mobilappen inte har några definierade åtkomstgrupper för nyckelringen lägger du till appens paket-ID som den första gruppen.
Lägg till den delade nyckelringsgruppen
com.microsoft.intune.mami dina befintliga åtkomstgrupper. Intune App SDK använder den här åtkomstgruppen för att lagra data.Lägg till
com.microsoft.adalcachei dina befintliga åtkomstgrupper.
Obs!
Om du har konfigurerat MSAL för att använda en anpassad åtkomstgrupp för nyckelringen i stället för standardinställningen
com.microsoft.adalcacheför behöver du inte ange den här åtkomstgruppen för nyckelringen här. Ange i stället den anpassade nyckelringsgruppen. Du bör också konfigurera Intune att använda samma anpassade åtkomstgrupp via ADALCacheKeychainGroupOverride inställningen i IntuneMAMSettings Info.plist ordlistan.Om du redigerar rättighetsfilen direkt, i stället för att använda Xcode-användargränssnittet för att skapa åtkomstgrupper för nyckelringen, lägger du till nyckelringsåtkomstgrupperna med
$(AppIdentifierPrefix)(Xcode hanterar detta automatiskt). Till exempel:$(AppIdentifierPrefix)com.microsoft.intune.mam$(AppIdentifierPrefix)com.microsoft.adalcache
Obs!
En rättighetsfil är en XML-fil som är unik för ditt mobilprogram. Den används för att ange särskilda behörigheter och funktioner i iOS-appen. Om appen inte tidigare hade en rättighetsfil borde aktivering av nyckelringsdelning (steg 3) ha gjort så att Xcode genererade en för din app. Kontrollera att appens paket-ID är den första posten i listan.
Inkludera varje protokoll som din app skickar till
UIApplication canOpenURLi matrisenLSApplicationQueriesSchemesför appens Info.plist-fil. För varje protokoll som anges i matrisen lägger du till en kopia av det bifogade protokollet i-intunemammatrisen. Lägg även till följande värden i matrisen:http-intunemam,https-intunemam,microsoft-edge-http-intunemam,microsoft-edge-https-intunemamsmart-nszipslacoonsecuritywanderalookoutwork-aseskycurebetteractiveshieldsmsecmvisionmobilescmxintunemam-mtdOm din app använder mailto:-protokollet lägger du även tillms-outlook-intunemami matrisen. Spara ändringarna innan du fortsätter med nästa steg.Om appen får slut på utrymme i listan LSApplicationQueriesSchemes kan den ta bort "-intunemam"-scheman för appar som är kända för att även implementera Intune MAM SDK. När appen tar bort "scheme-intunemam" från listan
canOpenURL()LSApplicationQueriesSchemes kan returnera felaktiga svar för dessa scheman. För att åtgärda det här problemet kan du anropa[IntuneMAMPolicy isURLAllowed:url isKnownManagedAppScheme:YES]det schemat i stället. Det här anropet returnerasNOom principen blockerar URL:en från att öppnas. Om den returnerar true kan appen anropacanOpenURL()med en tom identitet för att avgöra om URL:en kan öppnas. Till exempel:BOOL __block canOpen = NO; if([policy isURLAllowed:urlForKnownManagedApp isKnownManagedAppScheme:YES]) { [[IntuneMAMPolicyManager instance] setCurrentThreadAccountId:"" forScope:^{ canOpen = [[UIApplication sharedApplication] canOpenURL:urlForKnownManagedApp]; }]; }Om din app inte redan använder FaceID kontrollerar du att NSFaceIDUsageDescription Info.plist-nyckeln är konfigurerad med ett standardmeddelande. Det här steget krävs för att iOS ska kunna låta användaren veta hur appen avser att använda FaceID. En principinställning för appskydd i Intune gör att FaceID kan användas som metod för appåtkomst när det konfigureras av IT-administratören.
Använd verktyget IntuneMAMConfigurator som ingår i SDK-lagringsplatsen för att slutföra konfigurationen av appens Info.plist. Verktyget har tre parametrar:
Egenskap Så här använder du den - Jag <Path to the input plist>- e <Path to the entitlements file>- o (Valfritt) <Path to the output plist>Om parametern -o inte anges ändras indatafilen på plats. Verktyget är idempotent och bör köras igen när du gör ändringar i appens Info.plist eller rättigheter. Du bör också ladda ned och köra den senaste versionen av verktyget när du uppdaterar Intune SDK, om konfigurationskraven för Info.plist har ändrats i den senaste versionen.
Obs!
Om du har en SwiftUI-app kontrollerar du att UISceneConfigurations ordlistan UIApplicationSceneManifest i Info.pist-filen inte saknas eller är tom. Om den här inställningen inte konfigureras kan Intune SDK hindra din app trots att appskyddsprinciperna har tillämpats.
Om du inte har angett ett specifikt värde för kan UISceneConfigurations du använda den här standardkonfigurationen:
<key>UISceneConfigurations</key>
<dict>
<key>UIWindowSceneSessionRoleApplication</key>
<array>
<dict>
<key>UISceneConfigurationName</key>
<string>Default Configuration</string>
<key>UISceneDelegateClassName</key>
<string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
</dict>
</array>
</dict>
Inställningar och funktioner för Xcode-versioner
Appen ska ha både "Strip Swift Symbols"(STRIP_SWIFT_SYMBOLS) och "Enable Bitcode"(ENABLE_BITCODE) inställt på NEJ i inställningarna för Xcode-versionen. Om programmet innehåller funktionen "Förbättrad säkerhet" som är tillgänglig i Xcode 26+ måste du inaktivera alternativen "Autentisera pekare" och "Aktivera skrivskyddat plattformsminne".
Integrera ett filleverantörstillägg
Filprovidertillägg har vissa minneskrav som kan göra det svårt att integrera den fullständiga SDK:n. För att göra det enklare finns det ett statiskt bibliotek libIntuneMAMSwiftFileProvider.xcframework, som är en avskalad version av SDK:et specifikt för filleverantörstillägg. Observera att det här biblioteket är för icke-UI-delen av FileProvider-tillägget. Du måste integrera den fullständiga SDK:n i filleverantörens användargränssnittstillägg.
Om du vill integrera något av dessa bibliotek med filleverantörstillägget följer du stegen för att integrera SDK som ett statiskt bibliotek. Se till att ta med ContainingAppBundleId inställningen.
Integrera ett icke-replikerat filleverantörstillägg
Din app använder en icke-replikerad filprovider om den implementerar NSFileProviderExtension-protokollet. Filleverantörer som skapats före iOS 16.0 replikeras inte.
I – startProvidingItemAtURL:completionHandler: kontrollera om du ska kryptera filer med [[IntuneMAMPolicy-instansen]shouldFileProviderEncryptFiles]. Använd encryptFile:forAccountId: API i IntuneMAMFileProtectionManager för faktisk filkryptering. Dela även ut en kopia av filen när kryptering krävs eftersom du inte vill lagra en krypterad kopia av filen i din molnlagring.
I – importDocumentAtURL:toParentItemIdentifier:completionHandler: kontrollera om filen är krypterad med API:et isFileEncrytped: i IntuneMAMFileProtectionManager. Om den är det dekrypterar du den med decryptFile:toCopyPath: API:et för IntuneMAMFileProtectionManager. I appar med flera identiteter kontrollerar du även mot API:et canReceiveSharedFile: i målägarens IntuneMAMPolicy för att avgöra om ägaren kan ta emot filen.
Integrera ett serverleverantörstillägg för replikerade filer
Din app använder en replikerad filprovider om den implementerar NSFileProviderReplicatedExtension-protokollet (lades till i iOS 16.0).
I - fetchContentsForItemWithIdentifier:version:request:completionHandler: kontrollera om du ska kryptera filer med [[IntuneMAMPolicy-instansen]shouldFileProviderEncryptFiles]. Använd API:t encryptFile:forAccountId: i IntuneMAMFileProtectionManager för faktisk filkryptering. Dela ut en kopia av filen när kryptering krävs, eftersom du inte vill lagra en krypterad kopia av filen i molnlagringen.
I – createItemBasedOnTemplate:fields:contents:options:request:completionHandler: kontrollera om filen är krypterad med hjälp av API:et isFileEncrypted: i IntuneMAMFileProtectionManager. Om den är det dekrypterar du den med decryptFile:toCopyPath: API:et för IntuneMAMFileProtectionManager. I appar med flera identiteter kontrollerar du även mot API:et canReceiveSharedFile: i målägarens IntuneMAMPolicy för att avgöra om ägaren kan ta emot filen.
Var som helst där den replikerade filprovidern skapar och skickar en NSFileProviderItem till systemet anropar IntuneMAMFileProtectionManager's protectFileProviderItem:forAccountId: API med objektets ägaridentitet. Beroende på var NSFileProviderItem-objektet skapas och bevaras i tillägget kan du behöva göra detta i var och en av protokollmetoderna för NSFileProviderReplicatedExtension.
Konfigurera inställningar för Intune App SDK
Du kan använda ordlistan IntuneMAMSettings i programmets Info.plist-fil för att installera och konfigurera Intune App SDK. Om ordlistan IntuneMAMSettings inte visas i Info.plist-filen bör du skapa den.
Under ordlistan IntuneMAMSettings kan du definiera följande inställningar som stöds för att konfigurera Intune App SDK.
Tidigare avsnitt beskriver några av dessa inställningar och vissa gäller inte för alla appar.
| Inställning | Typ | Definition | Obligatoriskt? |
|---|---|---|---|
| ADALClientId | Sträng | Appens Microsoft Entra klientidentifierare. | Krävs för alla appar. |
| ADALAuthority | Sträng | Appens Microsoft Entra auktoritet används. Du bör använda din egen miljö där Microsoft Entra konton konfigureras. Mer information finns i Alternativ för programkonfiguration. | Krävs om appen är en anpassad verksamhetsspecifik app som skapats för användning inom en enda organisation/Microsoft Entra klientorganisation. Om det här värdet saknas används den vanliga Microsoft Entra auktoriteten (stöds endast för appar för flera klientorganisationer). |
| ADALRedirectUri | Sträng | Appens Microsoft Entra omdirigerings-URI. | ADALRedirectUri eller ADALRedirectScheme krävs för alla appar. |
| ADALRedirectScheme | Sträng | Appens omdirigeringsschema för Microsoft Entra ID. Detta kan användas i stället för ADALRedirectUri om programmets omdirigerings-URI är i formatet scheme://bundle_id. |
ADALRedirectUri eller ADALRedirectScheme krävs för alla appar. |
| ADALLogOverrideDisabled | Boolesk | Anger om SDK:n dirigerar alla MSAL-loggar (inklusive MSAL-anrop från appen, om sådana finns) till en egen loggfil. Standardvärdet är NEJ. Ange till JA om appen anger ett eget MSAL-logganrop. | Valfritt. |
| ADALCacheKeychainGroupOverride | Sträng | Anger vilken nyckelringsgrupp som ska användas för MSAL-cachen, i stället "com.microsoft.adalcache"för . Systemet lägger automatiskt till prefix för detta vid körning. |
Valfritt. |
| AppGroupIdentifiers | Matris med strängar | Matris med appgrupper från appens berättigandeavsnitt com.apple.security.application-groups . |
Krävs om appen använder programgrupper. |
| ContainingAppBundleId | Sträng | Anger paket-ID för programmet som innehåller tillägget. | Krävs för iOS-tillägg. |
| AutoEnrollOnLaunch | Boolesk | Anger om appen ska försöka registreras automatiskt vid start om en befintlig hanterad identitet identifieras och ännu inte har gjort det. Standardvärdet är NEJ. Notera: Om ingen hanterad identitet hittas eller om det inte finns någon giltig token tillgänglig i MSAL-cachen misslyckas registreringen tyst om inte MAMPolicyRequired är JA. |
Valfritt. Standardvärdet är NEJ. |
| MAMPolicyRequired | Boolesk | Anger om appen blockeras från att starta om den inte har en appskyddsprincip för Intune. Standardvärdet är NEJ. Notera: Appar kan inte skickas till App Store med denna inställning till JA. När du anger värdet JA AutoEnrollOnLaunch bör det också vara JA. |
Valfritt. Standardvärdet är NEJ. |
| MAMPolicyWarnAbsent | Boolesk | Anger om appen varnar användaren under start om det inte finns någon appskyddsprincip för Intune. Notera: Användare kan fortfarande fortsätta efter att de har stängt varningen. |
Valfritt. Standardvärdet är NEJ. |
| MultiIdentity | Boolesk | Anger om appen är medveten om flera identiteter. Mer information finns i dokumentationen om flera identiteter. | Valfritt. Standardvärdet är NEJ. |
| MultiIdentityCancelDisabled | Boolesk | Inaktiverar knappen Avbryt på användargränssnittet för villkorsstyrd start i Intune i program med flera identiteter. Om detta inte är inställt på JA måste appen hantera felkoden IntuneMAMSwitchIdentityResultCanceled . Se Byta identiteter. |
Valfritt. Standardvärdet är NEJ. |
| SafariViewControllerBlockedOverride | Boolesk | Inaktiverar Intune SafariViewController-krokar för att aktivera MSAL-autentisering via SFSafariViewController, SFAuthSession eller ASWebAuthSession. Notera: En konfigurerad aktivitetsknapp visas bara om vyn är ohanterad och detta är inställt på JA. |
Valfritt. Standardvärdet är NEJ. Varning: Kan orsaka dataläckage vid felaktig användning. |
| SplashIconFile SplashIconFile~ipad |
Sträng | Anger Intune splash (start)-ikonfilen. | Valfritt. |
| SplashDuration (SplashDuration) | Tal | Minsta tid i sekunder som startskärmen för Intune visas. Standardvärdet är 1,5. | Valfritt. |
| Bakgrundsfärg | Sträng | Anger bakgrundsfärgen för Intune SDK-gränssnittskomponenter. Accepterar #XXXXXX ett hexadecimalt värde utan nummertecken. |
Valfritt. Systembakgrundsfärg används som standard. |
| ForegroundColor | Sträng | Anger förgrunds-/textfärg för gränssnittskomponenter. Accepterar #XXXXXX eller hex utan nummertecken. |
Valfritt. Systemetikettfärg används som standard. |
| AccentColor | Sträng | Anger accentfärgen för gränssnittskomponenter (knappar, markering i PIN-ruta). Accepterar #XXXXXX eller hex utan nummertecken. |
Valfritt. Systemblått är som standard. |
| SecondaryBackgroundColor | Sträng | Anger den sekundära bakgrundsfärgen för MTD-skärmar. Accepterar #XXXXXX eller hex utan nummertecken. |
Valfritt. Standardvärdet är vitt. |
| SecondaryForegroundColor | Sträng | Anger sekundär förgrundsfärg för MTD-skärmar. Accepterar #XXXXXX eller hex utan nummertecken. |
Valfritt. Standardinställningen är grå. |
| SupportsDarkMode | Boolesk | Anger om användargränssnittets färger följer mörkt läge i systemet när explicita färger inte har angetts. | Valfritt. Standardvärdet är JA. |
| MAMTelemetryDisabled | Boolesk | Anger om telemetri ska skickas till serverdelen. | Valfritt. Standardvärdet är NEJ. |
| MAMTelemetryUsePPE | Boolesk | Skickar telemetri till PPE-serverdelen. Användbart för att testa appar så att data inte blandas med kunddata. | Valfritt. Standardvärdet är NEJ. |
| MaxFileProtectionLevel | Sträng | Anger det högsta värde NSFileProtectionType som appen stöder. Åsidosätter principen om tjänsten skickar en högre nivå.Möjliga värden: NSFileProtectionComplete, NSFileProtectionCompleteUnlessOpen, NSFileProtectionCompleteUntilFirstUserAuthentication, NSFileProtectionNone.Lägga märke till: Med NSFileProtectionCompleteförlorar appen åtkomst till skyddade filer ~ 10 sekunder efter att enheten låses, vilket kan bryta komponenter som lokala databaser. Appar med användargränssnitt på låsskärmen bör använda NSFileProtectionCompleteUntilFirstUserAuthentication. |
Valfritt. Standardvärdet är NSFileProtectionComplete. |
| OpenInActionExtension | Boolesk | Ange Ja för tillägg för Öppna i praktiken. Se Dela data via UIActivityViewController. | Valfritt. |
| TreatAllWebViewsAsUnmanaged | Boolesk | Behandlar alla WebViews som ohanterade för tillämpning av klipp ut/kopiera/klistra in. Se Visa webbinnehåll. | Valfritt. Standardvärdet är NEJ. |
| WebViewHandledURLSchemes | Matris med strängar | URL-scheman som hanteras av appens WebView. | Krävs om din WebView hanterar länkar eller JavaScript-navigering. |
| DocumentBrowserFileCachePath | Sträng | Om du använder UIDocumentBrowserViewControlleranger du en sökväg (relativt till appens hemkatalog) för dekrypterade hanterade filer. |
Valfritt. Standardvärdet är /Documents/. |
| VerboseLoggingEnabled | Boolesk | Aktiverar utförlig loggning. | Valfritt. Standardvärdet är NEJ. |
| FinishLaunchingAtStartup | Boolesk | Krävs vid användning [BGTaskScheduler registerForTaskWithIdentifier:]; måste vara JA. |
Valfritt. Standardvärdet är NEJ. |
| ValuesToScrubFromLogging | Matris med strängar | Programkonfigurationsvärden som ska tas bort från loggarna. Kan även ställas in via valuesToScrubFromLogging på IntuneMAMSettings. |
Valfritt. |
Ta emot appskyddsprincip
Översikt
För att få Intune appskyddsprincip måste appar initiera en registreringsbegäran med Intune MAM-tjänsten. Appar kan konfigureras i Intune administrationscenter för att ta emot appskyddsprincip med eller utan enhetsregistrering. Hantering av mobilprogram (MAM) gör att appar kan hanteras av Intune utan att enheten behöver registreras i Intune hantering av mobila enheter (MDM). I båda fallen krävs registrering med Intune MAM-tjänsten för att ta emot principen.
Viktigt
Intune App SDK för iOS använder 256-bitars krypteringsnycklar när kryptering aktiveras av appskyddsprinciper. Alla appar måste ha en aktuell SDK-version för att tillåta skyddad datadelning.
Appar som redan använder ADAL eller MSAL
Obs!
Azure AD autentiseringsbibliotek (ADAL) och Azure AD Graph API är inaktuella. Mer information finns i Uppdatera dina program så de använder Microsofts autentiseringsbibliotek (MSAL) och Microsoft Graph API.
Appar som redan använder MSAL bör anropa registerAndEnrollAccountId metoden på instansen IntuneMAMEnrollmentManager när användaren har autentiserats:
/*
* This method adds the account to the list of registered accounts.
* An enrollment request starts immediately.
* @param accountId The Entra object ID of the account to be registered with the SDK
*/
(void)registerAndEnrollAccountId:(NSString *_Nonnull)accountId;
När inloggningen lyckas skickar MSAL tillbaka resultatet i MSALResult-objektet. Använd tenantProfile.identifier i MSALResult som accountId-parameter för API:et.
Genom att anropa registerAndEnrollAccountId metoden registrerar SDK:n användarkontot och försöker registrera appen för det här kontots räkning. Om registreringen av någon anledning misslyckas försöker SDK:n automatiskt registrera igen 24 timmar senare. I felsökningssyfte kan appen ta emot meddelanden, via ett ombud, om resultatet av registreringsbegäranden.
När det här API:et har anropats kan appen fortsätta att fungera som vanligt. Om registreringen lyckas meddelar SDK:n användaren att en omstart av appen krävs. Då kan användaren starta om appen direkt.
[[IntuneMAMEnrollmentManager instance] registerAndEnrollAccountId:@"3ec2c00f-b125-4519-acf0-302ac3761822"];
Appar som inte använder ADAL eller MSAL
Appar som inte loggar in användaren med ADAL eller MSAL kan fortfarande ta emot appskyddsprinciper från Intune MAM-tjänsten genom att anropa API: et så att SDK hanterar autentiseringen. Appar bör använda den här tekniken när de inte har autentiserat en användare med Microsoft Entra ID men fortfarande behöver hämta appskyddsprincipen för att skydda data. Ett exempel är om en annan autentiseringstjänst används för appinloggning eller om appen inte stöder inloggning alls. För att göra detta kan programmet anropa loginAndEnrollAccount metoden på instansen IntuneMAMEnrollmentManager :
/**
* Creates an enrollment request, which starts immediately.
* If no token can be retrieved for the identity, the user is prompted
* to enter their credentials, after which enrollment is retried.
* @param identity The UPN of the account to be logged in and enrolled.
*/
(void)loginAndEnrollAccount: (NSString *)identity;
Genom att anropa den här metoden uppmanar SDK:n användaren att ange autentiseringsuppgifter om det inte går att hitta någon befintlig token. SDK försöker sedan registrera appen med Intune MAM-tjänsten för det angivna användarkontot. Metoden kan anropas med "nil" som identitet. I så fall registreras SDK:n med den befintliga hanterade användaren på enheten (om MDM) eller uppmanar användaren att ange ett användarnamn om ingen befintlig användare hittas.
Om registreringen misslyckas bör appen överväga att anropa det här API:et igen vid en framtida tidpunkt, beroende på informationen om felet. Appen kan ta emot aviseringar, via ett ombud, om resultatet av alla registreringsbegäranden.
När det här API:et har anropats kan appen fortsätta att fungera som vanligt. Om registreringen lyckas meddelar SDK:n användaren att en omstart av appen krävs.
När appen har hanterats måste Microsoft Entra objekt-ID-värdet efterfrågas med hjälp av enrolledAccountId .IntuneMAMEnrollmentManager Använd detta för alla MAM SDK API:er som appen använder för det registrerade kontot.
Exempel:
[[IntuneMAMEnrollmentManager instance] loginAndEnrollAccount:@"user@foo.com"];
Låt Intune hantera autentisering och registrering vid start
Om du vill att Intune SDK ska hantera all autentisering med ADAL/MSAL och registrering innan appen har startats, och din app alltid kräver appskyddsprinciper, behöver du inte använda loginAndEnrollAccount API. Du kan ange följande inställningar till JA i ordlistan IntuneMAMSettings i appens Info.plist.
| Inställning | Typ | Definition |
|---|---|---|
| AutoEnrollOnLaunch | Boolesk | Anger om appen ska försöka registreras automatiskt vid start om en befintlig hanterad identitet identifieras och ännu inte har gjort det. Standardvärdet är NEJ. Notera: Om ingen hanterad identitet hittas eller om ingen giltig token för identiteten är tillgänglig i ADAL-/MSAL-cachen misslyckas registreringsförsöket tyst utan att fråga efter autentiseringsuppgifter om inte appen också anges MAMPolicyRequired till JA. |
| MAMPolicyRequired | Boolesk | Anger om appen blockeras från att starta om appen inte har en appskyddsprincip för Intune. Standardvärdet är NEJ. Notera: Appar kan inte skickas till App Store med MAMPolicyRequired värdet JA. När du anger MAMPolicyRequired värdet JA,AutoEnrollOnLaunch ska du också ange värdet JA. |
Om du väljer det här alternativet för din app behöver du inte hantera omstart av appen efter registreringen.
Avregistrera användarkonton
Innan en användare loggas ut från en app ska appen avregistrera användaren från SDK:et. Den här processen säkerställer:
Nya registreringsförsök görs inte längre för användarens konto.
Principen för Appskydd tas bort.
Företagsdata tas bort om appen initierar en selektiv rensning (valfritt).
Innan användaren loggas ut ska appen anropa följande metod på instansen IntuneMAMEnrollmentManager :
/*
* This method removes the provided account from the list of
* registered accounts. Once removed, if the account enrolled
* the application, the account is un-enrolled.
* @note In the case where an un-enroll is required, this method blocks
* until the Intune APP AAD token is acquired, then returns. This method must be called before
* the user is removed from the application (so that required AAD tokens are not purged
* before this method is called).
* @param accountId The object ID of the account to be removed.
* @param doWipe If YES, a selective wipe if the account is un-enrolled
*/
(void)deRegisterAndUnenrollAccountId:(NSString *)accountId withWipe:(BOOL)doWipe;
Den här metoden måste anropas innan användarkontots Microsoft Entra token tas bort. SDK behöver användarkontots Microsoft Entra token för att göra specifika begäranden till Intune MAM-tjänsten för användarens räkning.
Om appen tar bort användarens företagsdata på egen hand kan flaggan doWipe ställas in på falskt. Annars kan appen få SDK:n att initiera en selektiv rensning. Den här åtgärden resulterar i ett anrop till appens selektiva rensningsombud.
Exempel:
[[IntuneMAMEnrollmentManager instance] deRegisterAndUnenrollAccountId:@"3ec2c00f-b125-4519-acf0-302ac3761822" withWipe:YES];
Status, resultat och felsökningsmeddelanden
Appen kan ta emot status, resultat och felsökningsmeddelanden om följande begäranden till Intune MAM-tjänsten:
- Begäranden om registrering
- Begäranden om principuppdateringar
- Begäranden om avregistrering
Meddelandena presenteras via ombudsmetoder i IntuneMAMEnrollmentDelegate.h:
/**
* Called when an enrollment request operation is completed.
* @param status status object containing debug information
*/
(void)enrollmentRequestWithStatus:(IntuneMAMEnrollmentStatus *)status;
/**
* Called when a MAM policy request operation is completed.
* @param status status object containing debug information
*/
(void)policyRequestWithStatus:(IntuneMAMEnrollmentStatus *)status;
/**
* Called when a un-enroll request operation is completed.
* @Note: when a user is un-enrolled, the user is also de-registered with the SDK
* @param status status object containing debug information
*/
(void)unenrollRequestWithStatus:(IntuneMAMEnrollmentStatus *)status;
Dessa ombudsmetoder returnerar ett IntuneMAMEnrollmentStatus objekt som har följande information:
- AccountId (objekt-ID) för det konto som är associerat med begäran
- Identiteten (UPN) för det konto som är associerat med begäran
- En statuskod som anger resultatet av begäran
- En felsträng med en beskrivning av statuskoden
- Ett
NSErrorobjekt. Det här objektet definieras iIntuneMAMEnrollmentStatus.htillsammans med de specifika statuskoder som kan returneras.
Exempelkod
Följande är exempel på implementeringar av ombudsmetoderna:
- (void)enrollmentRequestWithStatus:(IntuneMAMEnrollmentStatus*)status
{
NSLog(@"enrollment result for identity %@ with status code %ld", status.accountId, (unsigned long)status.statusCode);
NSLog(@"Debug Message: %@", status.errorString);
}
- (void)policyRequestWithStatus:(IntuneMAMEnrollmentStatus*)status
{
NSLog(@"policy check-in result for identity %@ with status code %ld", status.accountId, (unsigned long)status.statusCode);
NSLog(@"Debug Message: %@", status.errorString);
}
- (void)unenrollRequestWithStatus:(IntuneMAMEnrollmentStatus*)status
{
NSLog(@"un-enroll result for identity %@ with status code %ld", status.accountId, (unsigned long)status.statusCode);
NSLog(@"Debug Message: %@", status.errorString);
}
Omstart av program
När en app tar emot MAM-principer för första gången måste den startas om för att tillämpa nödvändiga krokar. För att meddela appen att en omstart behöver ske tillhandahåller SDK:et en ombudsmetod i IntuneMAMPolicyDelegate.h.
- (BOOL) restartApplication
Returvärdet för den här metoden talar om för SDK:n om programmet måste hantera den nödvändiga omstarten:
Om true returneras måste programmet hantera omstarten.
Om false returneras startar SDK:n om programmet när den här metoden har returnerats. SDK:n visar omedelbart en dialogruta som uppmanar användaren att starta om programmet.
Obs!
.NET MAUI-appar kräver ingen omstart.
Villkor för att avsluta
När du har konfigurerat plugin-programmet för bygget eller integrerat kommandoradsverktyget i byggprocessen kontrollerar du att det körs korrekt:
- Se till att bygget kompileras och byggs korrekt.
- Starta din kompilerade app, logga in med en Microsoft Entra användare som inte är mål för appskyddsprincipen och bekräfta att appen fungerar som förväntat.
- Logga ut och upprepa det här testet med en Microsoft Entra användare som är mål för appskyddsprincipen och bekräfta att appen nu hanteras av Intune och startas om.
Vid den här tidpunkten i integreringen kan din app nu ta emot och tillämpa appskyddsprincip. Utför följande tester för att verifiera integreringen.
Test för den första principtillämpningen
Kör följande test först för att bekanta dig med den fullständiga slutanvändarupplevelsen av principtillämpning i din app:
- Skapa en iOS-appskyddsprincip i administrationscentret för Microsoft Intune. För det här testet konfigurerar du principen:
- Låt standardinställningarna vara kvar under Åtkomstkrav. Noterbart är att "PIN for Access" ska vara "Require".
- Se till att appskyddsprincipen är riktad mot ditt program. Du kan behöva lägga till paket-ID:t för programmet manuellt i guiden för att skapa principer.
- Tilldela appskyddsprincipen till en användargrupp som innehåller testkontot.
- Installera programmet.
- Logga in på ditt program med ditt testkonto som är mål för appskydds princip.
- Bekräfta att du uppmanas med en Intune hanterad skärm och bekräfta att prompten startar om appen. Den här skärmen anger att SDK:n hämtar principen för det här kontot.
- Skapa en PIN-kod när du uppmanas att ange en PIN-kod för en app.
- Logga ut det hanterade kontot från programmet.
- Navigera runt i ditt program och bekräfta att programmet fungerar som förväntat om möjligt utan att logga in.
Den här listan med steg är ett *bare minimum-test för att bekräfta att din app registrerar kontot korrekt, registrerar motringningen för autentisering och avregistrerar kontot. Utför följande tester för att mer noggrant verifiera hur andra inställningar för appskyddsprinciper ändrar programmets beteende.
Nästa steg
När du har uppfyllt alla avslutningsvillkor fortsätter du till steg 4: Funktioner för appdeltagande.