Dela via


Steg 3: Intune SDK-integrering i din iOS-app

Obs!

Den här guiden är uppdelad i flera olika steg. Börja med att granska 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.
  • Kontrollera 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) Införliva MAM-loggning i din app.

Förhandskrav

  • Du behöver en macOS-dator som har Xcode 14.0 eller senare installerat.

  • Din app måste vara riktad mot iOS 14.0 eller senare.

  • Granska Licensvillkoren för Intune App SDK för iOS. Skriv ut och behåll en kopia av licensvillkoren för dina poster. 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 i 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/dina tillägg för att aktivera hantering av Intune-klientprogram. Vissa utvecklare kanske dock föredrar prestandafördelarna med det statiska ramverket (IntuneMAMStatic.xcframework). Se nedan.

  • 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 app-/tilläggsbinärfilen vid byggtiden finns det vissa prestandafördelar med att använda det statiska biblioteket. Men om din app innehåller tillägg resulterar länkning av det statiska ramverket till appen och tilläggen i en större storlek på apppaketet, eftersom den körbara koden bäddas in i varje binär app/tillägg. När du använder det dynamiska ramverket kan appar och tillägg däremot dela samma Binära Intune SDK-fil, 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 minsta nödvändiga ändringar för Intune-hantering. Beroende på funktionerna i din app eller ditt tillägg 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 appen/tilläggen till antingen det dynamiska ramverket (IntuneMAMSwift.xcframework) eller det statiska ramverket (IntuneMAMStatic.xcframework) som nämnts tidigare.

  • IntuneMAMResources.bundle: Ett resurspaket som innehåller resurser som SDK förlitar sig på. Resurspaketet krävs endast för appar som integrerar det inaktuella statiska biblioteket (libIntuneMAMSwift.xcframework) och tas bort i en framtida uppdatering.

Så här fungerar Intune App SDK

Målet 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 kortare tid till marknad, men utan att påverka konsekvensen och stabiliteten i ditt mobilprogram.

Processflöde

Följande diagram innehåller Processflöde för Intune App SDK för iOS:

Arkitekturdiagram på hög nivå för Microsoft Intune.

Skapa SDK:et i din mobilapp

Viktigt

Intune släpper regelbundet uppdateringar av Intune App SDK. Kontrollera regelbundet Intune App SDK för iOS för uppdateringar och lägg till uppdateringar i programutvecklingscykeln 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:

  1. Länka antingen IntuneMAMSwift.xcframework eller IntuneMAMStatic.xcframework till målet: Dra xcframework-paketet till listan Ramverk, Bibliotek och Inbäddat innehåll i projektmålet. Upprepa de här stegen för IntuneMAMSwiftStub.xcframework. För din huvudapp väljer du "Bädda in & Sign" i kolumnen "Bädda in" för båda xcframeworks som lagts till. För eventuella tillägg väljer du "Bädda inte in".

    Intune App SDK iOS Framework: Xcode Frameworks, Libraries och Embedded Content sample

  2. Lägg till dessa iOS-ramverk i projektet:

    • MessageUI.framework
    • Security.framework
    • CoreServices.framework
    • SystemConfiguration.framework
    • libsqlite3.tbd
    • libc++.tbd
    • ImageIO.framework
    • LocalAuthentication.framework
    • AudioToolbox.framework
    • QuartzCore.framework
    • WebKit.framework
    • MetricKit.framework
  3. Aktivera delning av nyckelringar (om det inte redan är aktiverat) genom att välja Funktioner i varje projektmål och aktivera nyckelringsdelningsväxeln . Nyckelringsdelning krävs för att du ska kunna gå vidare till nästa steg.

    Obs!

    Etableringsprofilen måste ha stöd för nya nyckelringsdelningsvärden. Nyckelringsåtkomstgrupperna bör ha stöd för jokertecken. Du kan kontrollera detta genom att öppna .mobileprovision-filen i en textredigerare, söka efter nyckelrings-åtkomstgrupper och se till att du har ett jokertecken. Till exempel:

    <key>keychain-access-groups</key>
    <array>
    <string>YOURBUNDLESEEDID.*</string>
    </array>
    
  4. När du har aktiverat delning av nyckelringar följer du stegen för att skapa en separat åtkomstgrupp där Intune App SDK lagrar sina data. Du kan skapa en nyckelringsåtkomstgrupp 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 ska du följa dessa steg:

    1. Om din mobilapp inte har några definierade nyckelringsåtkomstgrupper lägger du till appens paket-ID som den första gruppen.

    2. Lägg till den delade nyckelringsgruppen com.microsoft.intune.mam i dina befintliga åtkomstgrupper. Intune App SDK använder den här åtkomstgruppen för att lagra data.

    3. Lägg till com.microsoft.adalcache i dina befintliga åtkomstgrupper.

      Intune App SDK iOS: delning av nyckelringar

    4. Om du redigerar rättighetsfilen direkt, i stället för att använda Xcode-användargränssnittet som visas ovan för att skapa nyckelringsåtkomstgrupperna, förbereder du 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 din iOS-app. Om din app inte tidigare har en rättighetsfil bör aktivering av nyckelringsdelning (steg 3) ha fått Xcode att generera en för din app. Kontrollera att appens paket-ID är den första posten i listan.

  5. Inkludera varje protokoll som appen skickar till UIApplication canOpenURL i matrisen LSApplicationQueriesSchemes för appens Info.plist-fil. För varje protokoll som anges i den här matrisen måste även en kopia av protokollet som läggs -intunemam till i matrisen läggas till. Dessutom http-intunemamska , https-intunemam, microsoft-edge-http-intunemam, microsoft-edge-https-intunemam, smart-ns, zips, lacoonsecurity, wandera, lookoutwork-ase, skycure, , betteractiveshieldsmsec, , mvisionmobile, scmx, och intunemam-mtd läggas till i matrisen. Om din app använder protokollet ms-outlook-intunemam mailto: bör även läggas till i matrisen. Se till att spara ändringarna innan du fortsätter till 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 LSApplicationQueriesSchemes kan canOpenURL() det returnera felaktiga svar för dessa scheman. För att åtgärda det här problemet bör appen i stället anropa [IntuneMAMPolicy isURLAllowed:url isKnownManagedAppScheme:YES] för det schemat. Det här anropet returnerar NO om principen blockerar URL:en från att öppnas. Om den returnerar true kan appen anropa canOpenURL() 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];
        }];
    }
    
  6. Om din app inte redan använder FaceID kontrollerar du att nyckeln NSFaceIDUsageDescription Info.plist har konfigurerats med ett standardmeddelande. Det här steget krävs för att iOS ska kunna informera användaren om hur appen tänker använda FaceID. En intune-appskyddsprincipinställning gör att FaceID kan användas som en metod för appåtkomst när den konfigureras av IT-administratören.

  7. Använd intuneMAMConfigurator-verktyget 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 har angetts ändras indatafilen på plats. Verktyget är idempotent och bör köras igen när ändringar i appens Info.plist eller rättigheter har gjorts. Du bör också ladda ned och köra den senaste versionen av verktyget när du uppdaterar Intune SDK, om info.plist-konfigurationskraven har ändrats i den senaste versionen.

Xcode Build-inställningar

Appen ska ha både "Strip Swift Symbols" (STRIP_SWIFT_SYMBOLS) och "Enable Bitcode" (ENABLE_BITCODE) inställt på NO.

Integrera ett filprovidertillägg

Filprovidertillägg har vissa minneskrav som kan göra det svårt att integrera hela SDK:t. För att göra det enklare finns det ett statiskt bibliotek libIntuneMAMSwiftFileProvider.xcframework som är en avskalad version av SDK:t specifikt för filprovidertillägg. Observera att detta gäller för den del av filprovidertillägget som inte är användargränssnitt. Du måste integrera hela SDK:et i filproviderns UI-tillägg.

Om du vill integrera ett av dessa bibliotek med filprovidertillägget följer du stegen för att integrera SDK:t som ett statiskt bibliotek enligt ovan. Se till att inkludera ContainingAppBundleId inställningen.

Integrera ett filprovidertillägg som inte replikeras

Din app använder en icke-replikerad filprovider om den implementerar NSFileProviderExtension-protokollet. Alla filprovidrar som skapats före iOS 16.0 replikeras inte.

I – startProvidingItemAtURL:completionHandler: kontrollera om du ska kryptera filer med [[IntuneMAMPolicy-instans]shouldFileProviderEncryptFiles]]. Använd encryptFile:forAccountId: API i IntuneMAMFileProtectionManager för faktisk filkryptering. Dela också ut en kopia av filen när kryptering krävs eftersom du inte vill lagra en krypterad kopia av filen i molnlagringen.

I – importDocumentAtURL:toParentItemIdentifier:completionHandler: kontrollera om filen är krypterad med isFileEncrytped: API i IntuneMAMFileProtectionManager. Om den sedan dekrypterar den med hjälp av dekrypteringFil:toCopyPath: API för IntuneMAMFileProtectionManager. I appar med flera identiteter kontrollerar du även mot canReceiveSharedFile: API i målägarens IntuneMAMPolicy för att se om ägaren kan ta emot filen.

Integrera ett filprovidertillägg för replikerade filer

Din app använder en replikerad filprovider om den implementerar NSFileProviderReplicatedExtension-protokollet (läggs till i iOS 16.0).

I – fetchContentsForItemWithIdentifier:version:request:completionHandler: kontrollera om du ska kryptera filer med [[IntuneMAMPolicy-instans]shouldFileProviderEncryptFiles]]. Använd encryptFile:forAccountId: API i IntuneMAMFileProtectionManager för faktisk filkryptering. Dela också 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 isFileEncrypted: API i IntuneMAMFileProtectionManager. Om den sedan dekrypterar den med hjälp av dekrypteringFil:toCopyPath: API för IntuneMAMFileProtectionManager. I appar med flera identiteter kontrollerar du även mot canReceiveSharedFile: API i målägarens IntuneMAMPolicy för att se om ägaren kan ta emot filen.

Var som helst där den replikerade filprovidern skapar och skickar en NSFileProviderItem till systemet anropar du IntuneMAMFileProtectionManagers protectFileProviderItem:forAccountId: API med objektets ägaridentitet. Beroende på var NSFileProviderItem-objektet skapas och sparas i tillägget kan du behöva göra detta i var och en av NSFileProviderReplicatedExtensions protokollmetoder.

Konfigurera inställningar för Intune App SDK

Du kan använda ordlistan IntuneMAMSettings i programmets Info.plist-fil för att 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.

Vissa av de här inställningarna kan ha tagits upp i föregående avsnitt och vissa gäller inte för alla appar.

Inställning Typ Definition Krävs?
ADALClientId Sträng Appens Microsoft Entra-klientidentifierare. Krävs för alla appar.
ADALAuthority Sträng Appens Microsoft Entra-utfärdare används. Du bör använda din egen miljö där Microsoft Entra-konton har konfigurerats. Mer information finns i Programkonfigurationsalternativ. Krävs om appen är ett anpassat verksamhetsspecifikt program 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-utfärdaren (som endast stöds för program med flera klientorganisationer).
ADALRedirectUri Sträng Appens omdirigerings-URI för Microsoft Entra. 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 har formatet scheme://bundle_id. ADALRedirectUri eller ADALRedirectScheme krävs för alla appar.
ADALLogOverrideDisabled Boolesk Anger om SDK:t dirigerar alla MSAL-loggar (inklusive MSAL-anrop från appen, om sådana finns) till en egen loggfil. Standardvärdet är NEJ. Ställ in på JA om appen ställer in ett eget MSAL-loggåteranrop. Valfri.
ADALCacheKeychainGroupOverride Sträng Anger den nyckelringsgrupp som ska användas för MSAL-cachen i stället för "com.microsoft.adalcache". Observera att detta inte har app-ID-prefixet. Det kommer att prefixet till den angivna strängen vid körning. Valfri.
AppGroupIdentifiers Matris med strängar Matris med appgrupper från avsnittet berättiganden com.apple.security.application-groups. Krävs om appen använder programgrupper.
ContainingAppBundleId Sträng Anger paket-ID:t för tilläggets innehållande program. Krävs för iOS-tillägg.
AutoEnrollOnLaunch Boolesk Anger om appen ska försöka registrera automatiskt vid start om en befintlig hanterad identitet identifieras och den ännu inte har gjort det. Standardvärdet är NEJ.

Anmärkningar: Om ingen hanterad identitet hittas eller om ingen giltig token för identiteten är tillgänglig i MSAL-cachen misslyckas registreringsförsöket tyst utan att fråga efter autentiseringsuppgifter, såvida inte appen också har angett MAMPolicyRequired till JA.
Valfri. Standardvärdet är nej.
MAMPolicyRequired Boolesk Anger om appen ska blockeras från att starta om appen inte har någon Intune-appskyddsprincip. Standardvärdet är NEJ.

Anmärkningar: Appar kan inte skickas till App Store med MAMPolicyRequired inställt på JA. När du ställer in MAMPolicyRequired på JA ska AutoEnrollOnLaunch också anges till JA.
Valfri. Standardvärdet är nej.
MAMPolicyWarnAbsent Boolesk Anger om appen ska varna användaren under starten om appen inte har en Intune-appskyddsprincip.

Obs! Användare kommer fortfarande att kunna använda appen utan princip när varningen har avvisats.
Valfri. Standardvärdet är nej.
Flera identiteter Boolesk Anger om appen är medveten om flera identiteter. Valfri. Standardvärdet är nej.
SafariViewControllerBlockedOverride Boolesk Inaktiverar Intunes SafariViewController-krokar för att aktivera MSAL-autentisering via SFSafariViewController, SFAuthSession eller ASWebAuthSession.

Obs! Knappegenskapen SFSafariViewControllerConfiguration stöds inte av Intunes hanterade Safari View Controller. En konfigurerad aktivitetsknapp visas bara i SafariViewController om vyn är ohanterad och SafariViewControllerBlockedOverride är inställd på Ja.
Valfri. Standardvärdet är nej. VARNING! kan resultera i dataläckage om de används felaktigt. Aktivera endast om det är absolut nödvändigt. Mer information finns i Särskilda överväganden när du använder MSAL för appinitierad autentisering.
SplashIconFile
SplashIconFile~ipad
Sträng Anger ikonfilen för Intune-välkomst (start). Valfri.
SplashDuration Tal Minsta tid, i sekunder, som Startskärmen för Intune visas vid programstart. Standardvärdet är 1,5. Valfri.
BackgroundColor Sträng Anger bakgrundsfärgen för Intune SDK:s gränssnittskomponenter. Accepterar en hexadecimal RGB-sträng i form av #XXXXXX, där X kan vara mellan 0 och 9 eller A-F. Pundtecknet kan utelämnas. Valfri. Standardvärdet är systemets bakgrundsfärg, som kan variera mellan olika versioner av iOS och enligt inställningen mörkt läge för iOS.
ForegroundColor Sträng Anger förgrundsfärgen för Intune SDK:s gränssnittskomponenter, till exempel textfärg. Accepterar en hexadecimal RGB-sträng i form av #XXXXXX, där X kan vara mellan 0 och 9 eller A-F. Pundtecknet kan utelämnas. Valfri. Standardvärdet är systemets etikettfärg, som kan variera mellan olika versioner av iOS och enligt inställningen mörkt läge för iOS.
AccentColor Sträng Anger dekorfärgen för Intune SDK:s gränssnittskomponenter, till exempel knapptextfärg och markeringsfärg för PIN-kodsrutor. Accepterar en hexadecimal RGB-sträng i form av #XXXXXX, där X kan vara mellan 0 och 9 eller A-F. Pundtecknet kan utelämnas. Valfri. Standardvärdet är systemblå.
SecondaryBackgroundColor Sträng Anger den sekundära bakgrundsfärgen för MTD-skärmarna. Accepterar en hexadecimal RGB-sträng i form av #XXXXXX, där X kan vara mellan 0 och 9 eller A-F. Pundtecknet kan utelämnas. Valfri. Standardvärdet är vitt.
SecondaryForegroundColor Sträng Anger den sekundära förgrundsfärgen för MTD-skärmarna, till exempel fotnotsfärg. Accepterar en hexadecimal RGB-sträng i form av #XXXXXX, där X kan vara mellan 0 och 9 eller A-F. Pundtecknet kan utelämnas. Valfri. Standardvärdet är grått.
SupportsDarkMode Boolesk Anger om Intune SDK:s UI-färgschema ska observera systemets inställning för mörkt läge, om inget explicit värde har angetts för BackgroundColor/ForegroundColor/AccentColor Valfri. Standardvärdet är ja.
MAMTelemetryDisabled Boolesk Anger om SDK:t inte skickar några telemetridata till serverdelen. Valfri. Standardvärdet är nej.
MAMTelemetryAnvändPPE Boolesk Anger om MAM SDK ska skicka data till PPE-telemetriserverdelen. Använd detta när du testar dina appar med Intune-principen så att testtelemetridata inte blandas med kunddata. Valfri. Standardvärdet är nej.
MaxFileProtectionLevel Sträng Tillåter att appen anger maximalt stöd NSFileProtectionType för den. Det här värdet åsidosätter principen som skickas av tjänsten om nivån är högre än vad programmet kan stödja. Möjliga värden: NSFileProtectionComplete, NSFileProtectionCompleteUnlessOpen, NSFileProtectionCompleteUntilFirstUserAuthentication, NSFileProtectionNone. Obs! Med den högsta filskyddsnivån (NSFileProtectionComplete) kan skyddade filer bara nås när enheten är upplåst. 10 sekunder efter att enheten har låsts förlorar appen åtkomsten till skyddade filer. I vissa fall kan detta orsaka förlust av åtkomst till interna komponenter (till exempel MySQL-databaser), vilket leder till oväntat beteende. Vi rekommenderar att program som presenterar gränssnittselement på låsskärmen anger det här värdet till NSFileProtectionCompleteUntilFirstUserAuthentication. Valfri. Standardvärdet är NSFileProtectionComplete.
OpenInActionExtension Boolesk Ställ in på JA för Open in Action-tillägg. Mer information finns i avsnittet Dela data via UIActivityViewController .
WebViewHandledURLSchemes Matris med strängar Anger url-scheman som appens WebView hanterar. Krävs om din app använder en WebView som hanterar URL:er via länkar och/eller JavaScript.
DocumentBrowserFileCachePath Sträng Om appen använder UIDocumentBrowserViewController för att bläddra igenom filer i olika filprovidrar kan du ange den här sökvägen i förhållande till hemkatalogen i appens sandbox-miljö så att Intune SDK kan släppa dekrypterade hanterade filer i den mappen. Valfri. Standardvärdet är /Documents/ katalogen.
VerboseLoggingEnabled Boolesk Om värdet är JA loggas Intune i utförligt läge. Valfri. Standardvärdet är NEJ
FinishLaunchingAtStartup Boolesk Om appen använder [BGTaskScheduler registerForTaskWithIdentifier:] ska den här inställningen vara inställd på JA. Valfri. Standardvärdet är NEJ
ValuesToScrubFromLogging Matris med strängar Anger programkonfigurationsvärden som ska rensas från loggarna. Alternativt kan egenskapen valuesToScrubFromLogging i klassen IntuneMAMSettings ges en matris med strängar för samma beteende. Valfri.

Ta emot appskyddsprincip

Översikt

För att ta emot Intunes appskyddsprincip måste appar initiera en registreringsbegäran med Intune MAM-tjänsten. Appar kan konfigureras i Intune-administrationscentret för att ta emot appskyddsprinciper 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 delning av skyddade data.

Appar som redan använder ADAL eller MSAL

Obs!

Azure AD Authentication Library (ADAL) och Azure AD Graph API kommer att bli inaktuella. Mer information finns i Uppdatera dina program så att de använder Microsoft Authentication Library (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 will add the account to the list of registered accounts.
 *  An enrollment request will immediately be started.
 *  @param accountId The Entra object ID of the account to be registered with the SDK
 */

(void)registerAndEnrollAccountId:(NSString *_Nonnull)accountId;

Vid lyckad inloggning skickar MSAL tillbaka resultatet i MSALResult-objektet. Använd tenantProfile.identifier i MSALResult som parametern accountId för api:et ovan.

Genom att anropa registerAndEnrollAccountId metoden registrerar SDK:t användarkontot och försöker registrera appen för det här kontots räkning. Om registreringen misslyckas av någon anledning försöker SDK:t automatiskt registrera igen 24 timmar senare. I felsökningssyfte kan appen ta emot meddelanden 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 användaren att en app måste startas om. Vid den tidpunkten kan användaren omedelbart starta om appen.

[[IntuneMAMEnrollmentManager instance] registerAndEnrollAccountId:@"3ec2c00f-b125-4519-acf0-302ac3761822"];

Appar som inte använder ADAL eller MSAL

Appar som inte loggar in användaren med hjälp av ADAL eller MSAL kan fortfarande ta emot appskyddsprinciper från Intune MAM-tjänsten genom att anropa API:et för att låta SDK hantera den autentiseringen. Appar bör använda den här tekniken när de inte har autentiserat en användare med Microsoft Entra-ID men ändå 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 is started immediately.
 *  If no token can be retrieved for the identity, the user will be prompted
 *  to enter their credentials, after which enrollment will be 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 användaren att ange autentiseringsuppgifter om det inte går att hitta någon befintlig token. SDK:t försöker sedan registrera appen med Intune MAM-tjänsten för det angivna användarkontots räkning. Metoden kan anropas med "nil" som identitet. I så fall registreras SDK:n med den befintliga hanterade användaren på enheten (i fallet med 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å information om felet. Appen kan ta emot meddelanden 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 användaren att en app måste startas om. När appen har hanterats måste entra-objekt-ID-värdet efterfrågas med hjälp av enrolledAccountId i IntuneMAMEnrollmentManager. Använd detta för alla MAM SDK-API:er som appen använder för det här 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 registreringen innan din app har startats klart, och appen alltid kräver APP-princip, behöver du inte använda loginAndEnrollAccount API. Du kan helt enkelt ställa in de två inställningarna nedan på JA i ordlistan IntuneMAMSettings i appens Info.plist.

Inställning Typ Definition
AutoEnrollOnLaunch Boolesk Anger om appen ska försöka registrera automatiskt vid start om en befintlig hanterad identitet identifieras och den ännu inte har gjort det. Standardvärdet är NEJ.

Obs! 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, såvida inte appen också har angett MAMPolicyRequired till JA.
MAMPolicyRequired Boolesk Anger om appen ska blockeras från att starta om appen inte har någon Intune-appskyddsprincip. Standardvärdet är NEJ.

Obs! Appar kan inte skickas till App Store med MAMPolicyRequired inställt på JA. När du ställer in MAMPolicyRequired på JA ska AutoEnrollOnLaunch också anges till 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 bör appen avregistrera användaren från SDK:et. Detta säkerställer följande:

  1. Registreringsförsök görs inte längre för användarens konto.

  2. Appskyddsprincipen tas bort.

  3. Företagsdata tas bort om appen initierar en selektiv rensning (valfritt).

Innan användaren loggas ut bör appen anropa följande metod på instansen IntuneMAMEnrollmentManager :

/*
 *  This method will remove the provided account from the list of
 *  registered accounts.  Once removed, if the account has enrolled
 *  the application, the account will be un-enrolled.
 *  @note In the case where an un-enroll is required, this method will block
 *  until the Intune APP AAD token is acquired, then return.  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:t behöver användarkontots Microsoft Entra-token(er) 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 doWipe kan flaggan anges till false. Annars kan appen låta SDK initiera en selektiv rensning. Detta resulterar i ett anrop till appens ombud för selektiv rensning.

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:

  • Registreringsbegäranden
  • Begäranden om principuppdatering
  • Avregistreringsbegäranden

Meddelandena visas 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;

De här ombudsmetoderna returnerar ett IntuneMAMEnrollmentStatus objekt med följande information:

  • AccountId (objekt-ID) för kontot 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 NSError objekt. Det här objektet definieras i IntuneMAMEnrollmentStatus.h, tillsammans med de specifika statuskoder som kan returneras.

Exempelkod

Följande är exempelimplementeringar av delegeringsmetoderna:

- (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 de nödvändiga krokarna. För att meddela appen att en omstart måste ske tillhandahåller SDK en ombudsmetod i IntuneMAMPolicyDelegate.h.

 - (BOOL) restartApplication

Returvärdet för den här metoden talar om för SDK om programmet måste hantera den omstart som krävs:

  • Om true returneras måste programmet hantera omstarten.

  • Om false returneras startar SDK om programmet när den här metoden returneras. SDK:et visar omedelbart en dialogruta som instruerar användaren att starta om programmet.

Avslutsvillkor

När du antingen har konfigurerat plugin-programmet eller integrerat kommandoradsverktyget i byggprocessen kontrollerar du att det körs:

  • 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.

Nu i integreringen kan appen ta emot och tillämpa appskyddsprincipen. Kör följande tester för att verifiera integreringen.

First Policy Application Test

Kör följande test först för att bekanta dig med den fullständiga slutanvändarupplevelsen för principprogrammet i din app:

  1. Skapa en iOS-appskyddsprincip i administrationscentret för Microsoft Intune. För det här testet konfigurerar du principen:
    • Lämna standardinställningarna under Åtkomstkrav. Särskilt bör "PIN-kod för åtkomst" vara "Kräv".
  2. Se till att appskyddsprincipen är riktad mot ditt program. Du kan behöva lägga till samlings-ID:t för programmet manuellt i guiden för att skapa principer.
  3. Tilldela appskyddsprincipen till en användargrupp som innehåller ditt testkonto.
  4. Installera programmet.
  5. Logga in på ditt program med ditt testkonto som är mål för appskyddsprincipen.
  6. Bekräfta att du uppmanas att använda en Hanterad Intune-skärm och bekräfta att prompten startar om appen. Den här skärmen anger att SDK:t hämtar principen för det här kontot.
  7. Skapa en PIN-kod när du uppmanas att ange en PIN-kod för appen.
  8. Logga ut det hanterade kontot från ditt program.
  9. Navigera runt i programmet och bekräfta att appen fungerar som förväntat om det är möjligt utan att logga in.

Den här listan med steg är ett *bare minimum-test för att bekräfta att appen registrerar kontot korrekt, registrerar återanropet för autentisering och avregistrerar kontot. Kö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 slutfört alla avslutsvillkor fortsätter du till steg 4: Funktioner för app med deltagande.