Steg 3: Intune SDK-integrering i iOS-appen

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:

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

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:

  1. 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.xcframework Upprepa dessa steg för IntuneMAMSwiftStub.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.

    Intune App SDK iOS Framework: Xcode Frameworks, bibliotek och inbäddat innehåll exempel

  2. 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
  3. 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>
    
  4. 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:

    1. Om mobilappen inte har några definierade åtkomstgrupper för nyckelringen 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: nyckelringsdelning

      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.

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

  5. Inkludera varje protokoll som din app skickar till UIApplication canOpenURL i matrisen LSApplicationQueriesSchemes för appens Info.plist-fil. För varje protokoll som anges i matrisen lägger du till en kopia av det bifogade protokollet i -intunemam matrisen. Lägg även till följande värden i matrisen: http-intunemam, https-intunemam, microsoft-edge-http-intunemam, microsoft-edge-https-intunemamsmart-nszipslacoonsecuritywanderalookoutwork-aseskycurebetteractiveshieldsmsecmvisionmobilescmxintunemam-mtd Om din app använder mailto:-protokollet lägger du även till ms-outlook-intunemam i 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 returneras 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 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.

  7. 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 valuesToScrubFromLoggingIntuneMAMSettings. 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:

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

  2. Principen för Appskydd tas bort.

  3. 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 NSError objekt. Det här objektet definieras i IntuneMAMEnrollmentStatus.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:

  1. 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".
  2. 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.
  3. Tilldela appskyddsprincipen till en användargrupp som innehåller testkontot.
  4. Installera programmet.
  5. Logga in på ditt program med ditt testkonto som är mål för appskydds princip.
  6. 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.
  7. Skapa en PIN-kod när du uppmanas att ange en PIN-kod för en app.
  8. Logga ut det hanterade kontot från programmet.
  9. 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.