Etap 3: Integracja zestawu SDK usługi Intune z aplikacją dla systemu iOS

Uwaga

Ten przewodnik jest podzielony na kilka odrębnych etapów. Zacznij od przejrzenia Planowanie integracji.

Cele etapu

  • Pobierz zestaw SDK aplikacji usługi Intune.
  • Dowiedz się, jakie pliki są zawarte w zestawie SDK aplikacji usługi Intune.
  • Odwołaj się do zestawu SDK aplikacji usługi Intune w aplikacji.
  • Upewnij się, że zestaw SDK aplikacji usługi Intune jest prawidłowo uwzględniony w kompilacji.
  • Zarejestruj nowe konta do zarządzania aplikacjami mobilnymi po uwierzytelnieniu za pomocą biblioteki MSAL.
  • Aby usunąć firmowe dane, wyrejestrowywanie kont przy wylogowywaniu
  • (Zalecane) Dołącz logowanie MAM do aplikacji.

Wymagania wstępne

  • Wymagany jest komputer z systemem macOS i programem Xcode 16.0 lub nowszym.

  • Aplikacja musi być przeznaczona dla systemu iOS 16.0 lub nowszego.

  • Zapoznaj się z postanowieniami licencyjnymi dotyczącymi zestawu SDK aplikacji usługi Intune dla systemu iOS. Drukowanie i zachowywanie kopii postanowień licencyjnych w swoich rekordach. Pobierając i używając zestawu SDK aplikacji usługi Intune dla systemu iOS, wyrażasz zgodę na takie postanowienia licencyjne. Jeśli ich nie akceptujesz, nie używaj niniejszego oprogramowania.

  • Pobierz pliki dla zestawu SDK aplikacji usługi Intune dla systemu iOS w witrynie GitHub.

Co zawiera repozytorium SDK

  • IntuneMAMSwift.xcframework: The Intune App SDK dynamic framework. Zaleca się połączenie tej struktury z aplikacją/rozszerzeniami w celu włączenia zarządzania aplikacjami klienckimi usługi Intune. Jednak niektórzy deweloperzy mogą preferować korzyści związane z wydajnością oferowane przez strukturę statyczną (IntuneMAMStatic.xcframework).

  • IntuneMAMStatic.xcframework: struktura statyczna zestawu SDK aplikacji usługi Intune. Deweloperzy mogą zdecydować się na połączenie struktury statycznej zamiast struktury dynamicznej. Ponieważ kod wykonywalny ze struktury statycznej jest osadzony bezpośrednio w pliku binarnym aplikacji/rozszerzenia w czasie kompilacji, korzystanie z biblioteki statycznej wiąże się z pewnymi korzyściami związanymi z wydajnością w czasie uruchamiania. Jeśli jednak aplikacja zawiera rozszerzenia, połączenie struktury statycznej z aplikacją i rozszerzeniami powoduje większy rozmiar pakietu aplikacji. Kod wykonywalny jest osadzony w każdym pliku binarnym aplikacji/rozszerzenia. Natomiast w przypadku korzystania ze struktury dynamicznej aplikacje i rozszerzenia mogą współużytkować ten sam plik binarny zestawu SDK usługi Intune, co powoduje mniejszy rozmiar aplikacji.

  • IntuneMAMSwiftStub.xcframework: The Intune App SDK Swift Stub framework. Ta struktura jest wymaganą zależnością zarówno IntuneMAMSwift.xcframework, jak i IntuneMAMStatic.xcframework, które aplikacje/rozszerzenia muszą łączyć.

  • IntuneMAMConfigurator: narzędzie używane do konfigurowania pliku Info.plist aplikacji lub rozszerzenia z minimalnymi zmianami wymaganymi do zarządzania usługą Intune. W zależności od funkcjonalności aplikacji lub rozszerzenia może być konieczne wprowadzenie więcej ręcznych zmian w pliku Info.plist.

  • libIntuneMAMSwift.xcframework: Statyczna biblioteka zestawu SDK aplikacji usługi Intune. Ten wariant zestawu SDK zarządzania aplikacjami mobilnymi dla systemu iOS usługi Intune jest przestarzały i usunięty w przyszłej aktualizacji. Zalecamy, aby nie łączyć biblioteki statycznej, a zamiast tego połączyć aplikację/rozszerzenia z wcześniej wymienioną strukturą dynamiczną (IntuneMAMSwift.xcframework) lub strukturą statyczną (IntuneMAMStatic.xcframework).

  • IntuneMAMResources.bundle: pakiet zasobów zawierający zasoby, na których opiera się zestaw SDK. Pakiet zasobów jest wymagany tylko w przypadku aplikacji, które integrują przestarzałą bibliotekę statyczną (libIntuneMAMSwift.xcframework) i usuwa go w przyszłej aktualizacji.

Jak działa zestaw SDK aplikacji usługi Intune

Celem zestawu SDK aplikacji usługi Intune dla systemu iOS jest dodanie możliwości zarządzania do aplikacji systemu iOS przy minimalnych zmianach w kodzie. Im mniej zmian w kodzie, tym mniej czasu na wprowadzenie produktu na rynek, ale bez wpływu na spójność i stabilność Twojej aplikacji mobilnej.

Przebieg procesu

Poniższy diagram przedstawia przepływ procesu zestawu SDK aplikacji usługi Intune dla systemu iOS:

High-level architectural diagram for Microsoft Intune.

Wbudowanie zestawu SDK w aplikację mobilną

Ważna

Usługa Intune regularnie wydaje aktualizacje zestawu SDK aplikacji usługi Intune. Regularnie sprawdzaj zestaw SDK aplikacji usługi Intune dla systemu iOS pod kątem aktualizacji i uwzględniaj go w cyklu tworzenia oprogramowania, aby upewnić się, że Twoje aplikacje obsługują najnowsze ustawienia zasad ochrony aplikacji.

Aby włączyć zestaw SDK aplikacji usługi Intune, wykonaj następujące kroki:

  1. Połącz albo IntuneMAMSwift.xcframeworkIntuneMAMStatic.xcframework z obiektem docelowym: przeciągnij pakiet xcframework na listę struktur, bibliotek i osadzonej zawartości elementu docelowego projektu. Powtórz te kroki dla IntuneMAMSwiftStub.xcframework. W przypadku głównej aplikacji wybierz pozycję "Osadź znak &" w kolumnie "Osadź" dla obu dodanych xcframeworks. W przypadku jakichkolwiek rozszerzeń wybierz pozycję "Nie osadzaj".

    Intune App SDK iOS Framework: Xcode Frameworks, libraries, and Embedded Content sample

  2. Dodaj te struktury systemu iOS do projektu:

    • 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. Włącz udostępnianie pęku kluczy (jeśli nie jest jeszcze włączone), wybierając Możliwości w każdym projekcie docelowym i włączając przełącznik Udostępnianie pęku kluczy . Aby przejść do następnego kroku, konieczne jest udostępnianie pęku kluczy.

    Uwaga

    Twój profil inicjowania obsługi musi obsługiwać nowe wartości udostępniania pęku kluczy. Grupy dostępu pęku kluczy powinny obsługiwać symbole wieloznaczne. Możesz to sprawdzić, otwierając plik mobileprovision w edytorze tekstów, wyszukując ciąg keychain-access-groups i upewniając się, że masz symbol wieloznaczny. Przykład:

    <key>keychain-access-groups</key>
    <array>
    <string>YOURBUNDLESEEDID.*</string>
    </array>
    
  4. Po włączeniu udostępniania pęku kluczy wykonaj kroki, aby utworzyć oddzielną grupę dostępu, w której zestaw SDK aplikacji usługi Intune przechowuje swoje dane. Możesz utworzyć grupę dostępu pęku kluczy przy użyciu interfejsu użytkownika lub pliku uprawnień. Jeśli tworzysz grupę dostępu pęku kluczy przy użyciu interfejsu użytkownika, upewnij się, że wykonano następujące czynności:

    1. Jeśli aplikacja mobilna nie ma zdefiniowanych żadnych grup dostępu pęku kluczy, dodaj identyfikator pakietu aplikacji jako pierwszą grupę.

    2. Dodaj grupę com.microsoft.intune.mam pęku kluczy udostępnionych do istniejących grup dostępu. Zestaw SDK aplikacji usługi Intune używa tej grupy dostępu do przechowywania danych.

    3. Dodawaj com.microsoft.adalcache produkty do istniejących grup dostępu.

      Zestaw SDK aplikacji usługi Intune dla systemu iOS: udostępnianie pęku kluczy

      Uwaga

      Jeśli biblioteka MSAL została skonfigurowana tak, aby używała niestandardowej grupy dostępu pęku kluczy, a nie domyślnej com.microsoft.adalcache, nie musisz tutaj określać tej grupy dostępu do pęku kluczy. Zamiast tego określ niestandardową grupę pęku kluczy. Należy również skonfigurować usługę Intune do używania tej samej niestandardowej grupy dostępu za pośrednictwem ustawienia ADALCacheKeychainGroupOverride w słowniku IntuneMAMSettings Info.plist.

    4. Jeśli edytujesz plik uprawnień bezpośrednio, zamiast tworzyć grupy dostępu pęku kluczy za pomocą interfejsu użytkownika Xcode, poprzedz grupy $(AppIdentifierPrefix) dostępu pęku kluczy (Xcode obsługuje to automatycznie). Przykład:

      • $(AppIdentifierPrefix)com.microsoft.intune.mam
      • $(AppIdentifierPrefix)com.microsoft.adalcache

      Uwaga

      Plik uprawnień to plik XML, który jest unikatowy dla Twojej aplikacji mobilnej. Służy do określania specjalnych uprawnień i możliwości w aplikacji systemu iOS. Jeśli aplikacja nie miała wcześniej pliku uprawnień, włączenie udostępniania pęku kluczy (krok 3) powinno spowodować wygenerowanie go przez program Xcode dla aplikacji. Upewnij się, że identyfikator pakietu aplikacji jest pierwszym wpisem na liście.

  5. Uwzględnij każdy protokół, do UIApplication canOpenURL którego przekazuje aplikacja, w LSApplicationQueriesSchemes tablicy pliku Info.plist aplikacji. Dla każdego protokołu wymienionego w tej tablicy dodaj kopię protokołu dołączonego -intunemam do tablicy. Dodaj również te wartości do tablicy: http-intunemam, https-intunemam, smseczipslacoonsecuritysmart-nswanderalookoutwork-asemicrosoft-edge-https-intunemammicrosoft-edge-http-intunemambetteractiveshieldmvisionmobileskycurescmxi .intunemam-mtd Jeśli aplikacja korzysta z protokołu mailto: dodaj ms-outlook-intunemam również do tablicy. Przed przejściem do następnego kroku zapisz zmiany.

    Jeśli w aplikacji zabraknie miejsca na liście LSApplicationQueriesSchemes, może ona usunąć schematy "-intunemam" dla aplikacji, o których wiadomo, że również implementują zestaw SDK zarządzania aplikacjami mobilnymi usługi Intune. Gdy aplikacja usunie ciąg "scheme-intunemam" z listy LSApplicationQueriesSchemes, canOpenURL() może zwrócić nieprawidłowe odpowiedzi dla tych schematów. Aby rozwiązać ten problem, zamiast tego wezwij [IntuneMAMPolicy isURLAllowed:url isKnownManagedAppScheme:YES] ten schemat. To wywołanie jest zwracane NO , jeśli zasady blokują otwarcie adresu URL. Jeśli zostanie zwrócona wartość "Prawda", aplikacja może wywołać canOpenURL() metodę z pustą tożsamością, aby określić, czy można otworzyć adres URL. Przykład:

    BOOL __block canOpen = NO;
    if([policy isURLAllowed:urlForKnownManagedApp isKnownManagedAppScheme:YES])
    {
        [[IntuneMAMPolicyManager instance] setCurrentThreadAccountId:"" forScope:^{
        canOpen = [[UIApplication sharedApplication] canOpenURL:urlForKnownManagedApp];
        }];
    }
    
  6. Jeśli aplikacja nie używa jeszcze FaceID, upewnij się, że klucz NSFaceIDUsageDescription Info.plist jest skonfigurowany z komunikatem domyślnym. Ten krok jest wymagany, aby system iOS mógł poinformować użytkownika, jak aplikacja zamierza używać FaceID. Ustawienie zasad ochrony aplikacji usługi Intune umożliwia używanie identyfikatora FaceID jako metody dostępu do aplikacji po skonfigurowaniu przez administratora IT.

  7. Użyj narzędzia IntuneMAMConfigurator dostępnego w repozytorium SDK , aby zakończyć konfigurowanie pliku Info.plist aplikacji. Narzędzie ma trzy parametry:

    Właściwość Sposób użycia
    - i <Path to the input plist>
    - E <Path to the entitlements file>
    - o (Opcjonalnie) <Path to the output plist>

    Jeśli parametr "-o" nie jest podany, plik wejściowy jest modyfikowany w miejscu. Narzędzie jest idempotentne i powinno być uruchamiane ponownie za każdym razem, gdy wprowadzasz zmiany w elemencie Info.plist aplikacji lub uprawnieniach. Należy również pobrać i uruchomić najnowszą wersję narzędzia podczas aktualizacji zestawu SDK usługi Intune, na wypadek, gdyby wymagania konfiguracji pliku Info.plist uległy zmianie w najnowszej wersji.

Uwaga

Jeśli masz aplikację SwiftUI, upewnij się, że UISceneConfigurations nie brakuje słownika UIApplicationSceneManifest w pliku Info.pist lub nie jest on pusty. Nieskonfigurowanie tego ustawienia może uniemożliwić zestaw SDK usługi Intune ochronę aplikacji pomimo pomyślnego zastosowania zasad ochrony aplikacji. Jeśli nie masz ustawionej określonej wartości, UISceneConfigurations możesz użyć tej konfiguracji domyślnej:

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

Ustawienia i możliwości kompilacji Xcode

Aplikacja powinna mieć zarówno "Strip Swift Symbols"(STRIP_SWIFT_SYMBOLS), jak i "Enable Bitcode" (ENABLE_BITCODE) ustawione na wartość NO w ustawieniach kompilacji Xcode. Jeśli aplikacja zawiera funkcję "Zwiększone zabezpieczenia" dostępną w Xcode 26+, MUSISZ wyłączyć opcje "Wskaźniki uwierzytelniania" i "Włącz pamięć platformy tylko do odczytu".

Integrowanie rozszerzenia dostawcy plików

Rozszerzenia dostawców plików mają określone wymagania dotyczące pamięci, które mogą utrudniać integrację pełnego zestawu SDK. Aby to ułatwić, istnieje biblioteka libIntuneMAMSwiftFileProvider.xcframeworkstatyczna , która jest okrojoną wersją zestawu SDK przeznaczoną specjalnie dla rozszerzeń dostawcy plików. Zwróć uwagę, że ta biblioteka jest przeznaczona dla części rozszerzenia FileProvider niezwiązanej z interfejsem użytkownika. Musisz zintegrować pełny zestaw SDK z rozszerzeniem interfejsu użytkownika dostawcy plików.

Aby zintegrować jedną z tych bibliotek z rozszerzeniem dostawcy plików, postępuj zgodnie z instrukcjami dotyczącymi integrowania zestawu SDK jako biblioteki statycznej. Upewnij się, że to ustawienie zostało uwzględnione ContainingAppBundleId .

Integrowanie rozszerzenia niereplikowanego dostawcy plików

Aplikacja używa niereplikowanego dostawcy plików, jeśli implementuje protokół NSFileProviderExtension. Wszyscy dostawcy plików utworzeni przed systemem iOS 16.0 nie są replikowani.

In - startProvidingItemAtURL:completionHandler: sprawdź, czy należy szyfrować pliki za pomocą [[IntuneMAMPolicy instance]shouldFileProviderEncryptFiles]. Użyj interfejsu API encryptFile:forAccountId w IntuneMAMFileProtectionManager do rzeczywistego szyfrowania plików. Udostępnij kopię pliku, jeśli wymagane jest szyfrowanie, ponieważ nie chcesz przechowywać zaszyfrowanej kopii pliku w chmurze.

In - importDocumentAtURL:toParentItemIdentifier:completionHandler: sprawdź, czy plik jest zaszyfrowany przy użyciu interfejsu API isFileEncrytped: w IntuneMAMFileProtectionManager. Jeśli tak, odszyfruj go przy użyciu interfejsu API decryptFile:toCopyPath: IntuneMAMFileProtectionManager. W aplikacjach z wieloma tożsamościami sprawdź również interfejs API canReceiveSharedFile: w usłudze IntuneMAMPolicy właściciela docelowego, aby określić, czy właściciel może odebrać plik.

Integrowanie rozszerzenia dostawcy plików replikowanych

Aplikacja używa dostawcy replikowanych plików, jeśli implementuje protokół NSFileProviderReplicatedExtension (dodany w systemie iOS 16.0).

In - fetchContentsForItemWithIdentifier:version:request:completionHandler: sprawdź, czy należy szyfrować pliki za pomocą [[IntuneMAMPolicy instance]shouldFileProviderEncryptFiles]. Użyj interfejsu API encryptFile:forAccountId: w IntuneMAMFileProtectionManager do rzeczywistego szyfrowania plików. Udostępnij kopię pliku, jeśli wymagane jest szyfrowanie, ponieważ nie chcesz przechowywać zaszyfrowanej kopii pliku w magazynie w chmurze.

W - createItemBasedOnTemplate:fields:contents:options:request:completionHandler: sprawdź, czy plik jest zaszyfrowany przy użyciu interfejsu API isFileEncrypted: w IntuneMAMFileProtectionManager. Jeśli tak, odszyfruj go przy użyciu interfejsu API decryptFile:toCopyPath: IntuneMAMFileProtectionManager. W aplikacjach z wieloma tożsamościami sprawdź również interfejs API canReceiveSharedFile: w usłudze IntuneMAMPolicy właściciela docelowego, aby określić, czy właściciel może odebrać plik.

W dowolnym miejscu, w którym dostawca zreplikowanych plików tworzy i przekazuje element NSFileProviderItem do systemu, wywołaj interfejs API protectFileProviderItem:forAccountId IntuneMAMFileProtectionManager z tożsamością właściciela elementu. W zależności od tego, gdzie obiekt NSFileProviderItem jest tworzony i utrwalany w rozszerzeniu, może być konieczne zrobienie tego w każdej metodzie protokołu NSFileProviderReplicatedExtension.

Konfigurowanie ustawień zestawu SDK aplikacji usługi Intune

Możesz użyć słownika IntuneMAMSettings w pliku Info.plist aplikacji, aby zainstalować i skonfigurować zestaw SDK aplikacji usługi Intune. Jeśli słownik IntuneMAMSettings nie jest widoczny w pliku Info.plist, należy go utworzyć.

W słowniku IntuneMAMSettings można zdefiniować następujące obsługiwane ustawienia w celu skonfigurowania zestawu SDK aplikacji usługi Intune.

W poprzednich sekcjach opisano niektóre z tych ustawień. Niektóre z nich nie mają zastosowania do wszystkich aplikacji.

Ustawienie Wpisać Definicja Wymagane?
ADALClientId Ciąg Identyfikator klienta usługi Microsoft Entra aplikacji. Wymagane dla wszystkich aplikacji.
ADALAudrożnienie Ciąg Uprawnienia aplikacji usługi Microsoft Entra w użyciu. Należy korzystać z własnego środowiska, w którym skonfigurowane są konta usługi Microsoft Entra. Aby uzyskać więcej informacji, zobacz Opcje konfiguracji aplikacji. Wymagane, jeśli aplikacja jest niestandardową aplikacją biznesową utworzoną do użytku w ramach jednej organizacji / dzierżawy usługi Microsoft Entra. Jeśli ta wartość nie jest obecna, używany jest wspólny urząd usługi Microsoft Entra (obsługiwane tylko w przypadku aplikacji wielodostępnych).
ADALRedirectUri Ciąg Identyfikator URI przekierowania aplikacji Microsoft Entra. Dla wszystkich aplikacji jest wymagany identyfikator ADALRedirectUri lub ADALRedirectScheme.
ADALRedirectScheme Ciąg Schemat przekierowywania usługi Tożsamość Microsoft Entra ID aplikacji. Może to być używane zamiast ADALRedirectUri, jeśli identyfikator URI przekierowania aplikacji jest w formacie scheme://bundle_id. Dla wszystkich aplikacji jest wymagany identyfikator ADALRedirectUri lub ADALRedirectScheme.
ADALLogOverrideDisabled Wartość logiczna Określa, czy zestaw SDK kieruje wszystkie dzienniki MSAL (w tym wywołania MSAL z aplikacji, jeśli istnieją) do własnego pliku dziennika. Wartość domyślna to NIE. Ustaw wartość TAK , jeśli aplikacja ustawi własne wywołanie zwrotne dziennika MSAL. Opcjonalnie.
ADALCacheKeychainGroupOverride Ciąg Określa grupę pęku kluczy, która ma być używana dla pamięci podręcznej MSAL zamiast "com.microsoft.adalcache". System automatycznie prefiksuje to w czasie wykonywania. Opcjonalnie.
AppGroupIdentifiers Tablica ciągów Tablica grup aplikacji z sekcji uprawnień com.apple.security.application-groups aplikacji. Wymagane, jeśli aplikacja korzysta z grup aplikacji.
ContainingAppBundleId Ciąg Określa identyfikator pakietu aplikacji zawierającej rozszerzenie. Wymagane w przypadku rozszerzeń systemu iOS.
AutoEnrollOnLaunch Wartość logiczna Określa, czy aplikacja powinna próbować automatycznie zarejestrować się podczas uruchamiania, jeśli zostanie wykryta istniejąca tożsamość zarządzana, a jeszcze tego nie zrobiła. Wartość domyślna to NIE.

Uwaga: Jeśli nie zostanie odnaleziona tożsamość zarządzana lub w pamięci podręcznej MSAL nie będzie dostępny żaden prawidłowy token, rejestracja zakończy się niepowodzeniem, chyba że MAMPolicyRequired jest to wartość TAK.
Opcjonalnie. Wartość domyślna to NIE.
MAMPolicyRequired Wartość logiczna Określa, czy aplikacja nie może zostać uruchomiona, jeśli nie ma zasad ochrony aplikacji usługi Intune. Wartość domyślna to NIE.

Uwaga: Aplikacji nie można przesyłać do sklepu App Store z ustawioną wartością TAK. Po ustawieniu go na wartość YES (TAK) AutoEnrollOnLaunch powinno być również ustawione na wartość YES (TAK).
Opcjonalnie. Wartość domyślna to NIE.
MAMPolicyWarnAbsent Wartość logiczna Określa, czy aplikacja ostrzega użytkownika podczas uruchamiania, jeśli nie ma żadnych zasad ochrony aplikacji usługi Intune.

Uwaga: Użytkownicy nadal mogą kontynuować po odrzuceniu ostrzeżenia.
Opcjonalnie. Wartość domyślna to NIE.
Tożsamość wielokrotna Wartość logiczna Określa, czy aplikacja obsługuje wiele tożsamości. Aby uzyskać więcej informacji, zobacz dokumentację dotyczącą wielu tożsamości. Opcjonalnie. Wartość domyślna to NIE.
MultiIdentityCancelDisabled Wartość logiczna Disables the cancel button on Intune conditional launch UI screens in multi-identity applications. Jeśli ta opcja nie jest ustawiona na wartość TAK, aplikacja musi obsłużyć kod błędu IntuneMAMSwitchIdentityResultCanceled . Zobacz Przełączanie tożsamości. Opcjonalnie. Wartość domyślna to NIE.
SafariViewControllerBlockedOverride Wartość logiczna Wyłącza haki SafariViewController usługi Intune, aby włączyć uwierzytelnianie MSAL za pośrednictwem SFSafariViewController, SFAuthSession lub ASWebAuthSession.

Uwaga: Skonfigurowany przycisk działania jest wyświetlany tylko wtedy, gdy widok jest niezarządzany i ma ustawioną wartość TAK.
Opcjonalnie. Wartość domyślna to NIE.

Ostrzeżenie: Nieprawidłowe użycie może spowodować wyciek danych.
SplashIconFile (Plik ikony rozpryskującej)
SplashIconFile~ipad
Ciąg Określa plik ikony powitalnej (uruchamiania) usługi Intune. Opcjonalnie.
Czas trwania rozprysku Numer Minimalny czas (w sekundach), kiedy jest wyświetlany ekran uruchamiania usługi Intune. Wartość domyślna to 1,5. Opcjonalnie.
Kolor tła Ciąg Określa kolor tła dla składników interfejsu użytkownika zestawu SDK usługi Intune. Akceptuje #XXXXXX wartość szesnastkową bez znaku numeru. Opcjonalnie. Domyślny kolor tła systemu.
Kolor pierwszego planu Ciąg Określa kolor pierwszego planu/tekstu dla składników interfejsu użytkownika. Akceptuje lub szesnastkowy #XXXXXX bez znaku numeru. Opcjonalnie. Domyślnie jest to kolor etykiety systemowej.
Kolor wiodący Ciąg Określa kolor wiodący dla składników interfejsu użytkownika (przyciski, wyróżnienia pól PIN). Akceptuje lub szesnastkowy #XXXXXX bez znaku numeru. Opcjonalnie. Domyślnie jest to niebieski systemowy.
SecondaryBackgroundColor Ciąg Określa pomocniczy kolor tła dla ekranów MTD. Akceptuje lub szesnastkowy #XXXXXX bez znaku numeru. Opcjonalnie. Domyślnie kolor biały.
SecondaryForegroundColor Ciąg Określa pomocniczy kolor pierwszego planu dla ekranów MTD. Akceptuje lub szesnastkowy #XXXXXX bez znaku numeru. Opcjonalnie. Wartość domyślna to szary.
ObsługujeTryb ciemny Wartość logiczna Określa, czy kolory interfejsu użytkownika są zgodne z systemowym trybem ciemnym, gdy nie ustawiono kolorów jawnych. Opcjonalnie. Wartość domyślna to TAK.
MAMTelemetryDisabled Wartość logiczna Określa, czy dane telemetryczne są wysyłane do zaplecza. Opcjonalnie. Wartość domyślna to NIE.
MAMTelemetryUsePPE Wartość logiczna Wysyła dane telemetryczne do zaplecza środków ochrony osobistej. Przydatne do testowania aplikacji, aby dane nie mieszały się z danymi klientów. Opcjonalnie. Wartość domyślna to NIE.
MaxFileProtectionLevel Ciąg Określa maksymalną wartość NSFileProtectionType obsługiwaną przez aplikację. Zastępuje zasadę, jeśli usługa wysyła wyższy poziom.

Możliwe wartości: NSFileProtectionComplete, NSFileProtectionCompleteUnlessOpen, NSFileProtectionCompleteUntilFirstUserAuthentication, NSFileProtectionNone.

Ogłoszenie: Aplikacja NSFileProtectionCompletetraci dostęp do chronionych plików ~10 sekund po zablokowaniu urządzenia, co może uszkodzić składniki, takie jak lokalne bazy danych. Aplikacje z interfejsem użytkownika ekranu blokady powinny używać NSFileProtectionCompleteUntilFirstUserAuthenticationplików .
Opcjonalnie. Wartość domyślna to NSFileProtectionComplete.
OpenInActionExtension Wartość logiczna Ustaw wartość TAK dla rozszerzeń Otwórz w działaniu. Zobacz Udostępnianie danych za pośrednictwem UIActivityViewController. Opcjonalnie.
TreatAllWebViewsAsUnmanaged Wartość logiczna Traktuje wszystkie widoki sieci Web jako niezarządzane w celu wymuszenia wycinania/kopiowania/wklejania. Zobacz : Wyświetlanie zawartości sieci web. Opcjonalnie. Wartość domyślna to NIE.
WebViewHandledURLSchemes Tablica ciągów Schematy adresów URL obsługiwane przez widok WebView aplikacji. Wymagane, jeśli widok sieci Web obsługuje linki lub nawigację JavaScript.
DocumentBrowserFileCachePath Ciąg Jeśli używasz UIDocumentBrowserViewController, ustaw ścieżkę (względem katalogu macierzystego aplikacji) do odszyfrowanych plików zarządzanych. Opcjonalnie. Wartość domyślna to /Documents/.
VerboseLoggingEnabled Wartość logiczna Umożliwia pełne rejestrowanie. Opcjonalnie. Wartość domyślna to NIE.
ZakończenieUruchamianiePrzy uruchomieniu Wartość logiczna Wymagane przy używaniu [BGTaskScheduler registerForTaskWithIdentifier:]; musi być wartością TAK. Opcjonalnie. Wartość domyślna to NIE.
ValuesToScrubFromLogging Tablica ciągów Wartości konfiguracji aplikacji, które powinny zostać usunięte z dzienników. Można również ustawić za pomocą valuesToScrubFromLogging .IntuneMAMSettings Opcjonalnie.

Otrzymywanie zasad ochrony aplikacji

Omówienie

Aby otrzymać Intune zasady ochrony aplikacji, aplikacje muszą zainicjować żądanie rejestracji w usłudze Intune MAM. Aplikacje można skonfigurować w centrum administracyjnym usługi Intune, aby otrzymywać zasady ochrony aplikacji z rejestracją urządzeń lub bez niej. Zarządzanie aplikacjami mobilnymi (MAM) umożliwia zarządzanie aplikacjami przez usługę Intune bez konieczności rejestrowania urządzenia w usłudze zarządzania urządzeniami przenośnymi (MDM) usługi Intune. W obu przypadkach zarejestrowanie się w usłudze MAM usługi Intune jest wymagane do otrzymania zasad.

Ważna

Zestaw SDK aplikacji usługi Intune dla systemu iOS używa 256-bitowych kluczy szyfrowania, gdy szyfrowanie jest włączone przez zasady ochrony aplikacji. Wszystkie aplikacje muszą mieć aktualną wersję zestawu SDK, aby umożliwić chronione udostępnianie danych.

Aplikacje, które już używają biblioteki ADAL lub MSAL

Uwaga

Biblioteka uwierzytelniania Azure AD (ADAL) i Azure AD interfejs Graph API są przestarzałe. Aby uzyskać więcej informacji, zobacz Aktualizowanie aplikacji do korzystania z biblioteki Microsoft Authentication Library (MSAL) i interfejsu interfejs Graph API Microsoft.

Aplikacje, które już używają biblioteki MSAL, powinny wywołać metodę registerAndEnrollAccountId w wystąpieniu IntuneMAMEnrollmentManager po pomyślnym uwierzytelnieniu użytkownika:

/*
 *  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;

Po pomyślnym zalogowaniu biblioteka MSAL wysyła wynik w obiekcie MSALResult. Użyj tenantProfile.identifier w MSALResult jako parametru accountId interfejsu API.

Wywołując registerAndEnrollAccountId metodę, zestaw SDK rejestruje konto użytkownika i próbuje zarejestrować aplikację w imieniu tego konta. Jeśli rejestracja nie powiedzie się z dowolnego powodu, zestaw SDK automatycznie ponawia próbę zarejestrowania 24 godziny później. Na potrzeby debugowania aplikacja może otrzymywać powiadomienia, za pośrednictwem pełnomocnika, o wynikach wszelkich żądań rejestracji.

Po wywołaniu tego interfejsu API aplikacja może nadal działać normalnie. Jeśli rejestracja zakończy się pomyślnie, zestaw SDK powiadomi użytkownika, że wymagane jest ponowne uruchomienie aplikacji. W tym momencie użytkownik może natychmiast ponownie uruchomić aplikację.

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

Aplikacje, które nie używają biblioteki ADAL ani MSAL

Aplikacje, które nie logują użytkownika przy użyciu biblioteki ADAL lub MSAL, nadal mogą otrzymywać zasady ochrony aplikacji z usługi MAM usługi Intune, wywołując interfejs API, aby zestaw SDK obsłużył to uwierzytelnianie. Aplikacje powinny używać tej techniki, gdy nie uwierzytelniły użytkownika za pomocą Microsoft Entra ID, ale nadal muszą pobrać zasady ochrony aplikacji, aby pomóc w ochronie danych. Na przykład do logowania się do aplikacji jest używana inna usługa uwierzytelniania lub aplikacja w ogóle nie obsługuje logowania. W tym celu aplikacja może wywołać loginAndEnrollAccount metodę w wystąpieniu 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;

Wywołując tę metodę, zestaw SDK monituje użytkownika o podanie poświadczeń, jeśli nie można odnaleźć istniejącego tokenu. Następnie zestaw SDK próbuje zarejestrować aplikację w usłudze MAM usługi Intune w imieniu podanego konta użytkownika. Metodę można wywołać z "nil" jako tożsamością. W takim przypadku zestaw SDK rejestruje się wraz z istniejącym użytkownikiem zarządzanym na urządzeniu (w przypadku usługi MDM) lub monituje o podanie nazwy użytkownika, jeśli żaden istniejący użytkownik nie zostanie znaleziony.

Jeśli rejestracja zakończy się niepowodzeniem, aplikacja powinna rozważyć ponowne wywołanie tego interfejsu API w przyszłości, w zależności od szczegółów błędu. Aplikacja może otrzymywać powiadomienia za pośrednictwem pełnomocnika o wynikach żądań rejestracji.

Po wywołaniu tego interfejsu API aplikacja może nadal działać normalnie. Jeśli rejestracja zakończy się pomyślnie, zestaw SDK powiadomi użytkownika, że wymagane jest ponowne uruchomienie aplikacji. Po zarządzaniu aplikacją należy sprawdzić wartość identyfikatora obiektu usługi Microsoft Entra przy użyciu enrolledAccountId .IntuneMAMEnrollmentManager Użyj tego dla wszystkich interfejsów API zestawu SDK zarządzania aplikacjami mobilnymi, których aplikacja używa dla tego zarejestrowanego konta.

Przykład:

[[IntuneMAMEnrollmentManager instance] loginAndEnrollAccount:@"user@foo.com"];

Pozwól usłudze Intune obsługiwać uwierzytelnianie i rejestrację podczas uruchamiania

Jeśli chcesz, aby zestaw SDK usługi Intune obsługiwał całe uwierzytelnianie za pomocą biblioteki ADAL/MSAL i rejestracji przed zakończeniem uruchamiania aplikacji, a aplikacja zawsze wymaga zasad ochrony aplikacji, nie musisz używać loginAndEnrollAccount interfejsu API. Następujące ustawienia można skonfigurować na wartość TAK w słowniku IntuneMAMSettings w pliku Info.plist aplikacji.

Ustawienie Wpisać Definicja
AutoEnrollOnLaunch Wartość logiczna Określa, czy aplikacja powinna próbować automatycznie zarejestrować się podczas uruchamiania, jeśli zostanie wykryta istniejąca tożsamość zarządzana, a jeszcze tego nie zrobiła. Wartość domyślna to NO.

Uwaga: Jeśli nie zostanie znaleziona tożsamość zarządzana lub w pamięci podręcznej bibliotek ADAL/MSAL nie będzie dostępny żaden prawidłowy token dla tożsamości, próba zarejestrowania zakończy się dyskretnie niepowodzeniem bez wyświetlania monitu o podanie poświadczeń, chyba że aplikacja również ustawi MAMPolicyRequired wartość TAK.
MAMPolicyRequired Wartość logiczna Określa, czy aplikacja nie może zostać uruchomiona, jeśli aplikacja nie ma zasad ochrony aplikacji usługi Intune. Wartość domyślna to NO.

Uwaga: Aplikacji nie można przesłać do sklepu App Store z MAMPolicyRequired ustawioną wartością TAK. Przy ustawieniu MAMPolicyRequired wartości YESAutoEnrollOnLaunch powinno być również ustawione na wartość YES.

Jeśli wybierzesz tę opcję dla swojej aplikacji, nie musisz obsługiwać ponownego uruchamiania aplikacji po zarejestrowaniu.

Wyrejestrowywanie kont użytkowników

Zanim użytkownik zostanie wylogowany z aplikacji, aplikacja powinna wyrejestrować użytkownika z zestawu SDK. Proces ten zapewnia:

  1. Ponowne próby rejestracji nie występują już dla konta użytkownika.

  2. Zasady ochrony aplikacji zostaną usunięte.

  3. Dane firmowe zostaną usunięte, jeśli aplikacja zainicjuje selektywne czyszczenie (opcjonalnie).

Zanim użytkownik zostanie wylogowany, aplikacja powinna wywołać następującą metodę w wystąpieniu 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;

Metodę tę należy wywołać przed usunięciem tokenów usługi Microsoft Entra konta użytkownika. Zestaw SDK wymaga tokenów usługi Microsoft Entra konta użytkownika, aby wysyłać określone żądania do usługi MAM usługi Intune w imieniu użytkownika.

Jeśli aplikacja sama usunie firmowe dane użytkownika, flagę doWipe można ustawić na wartość fałsz. W przeciwnym razie aplikacja może zainicjować selektywne czyszczenie przez zestaw SDK. Ta akcja powoduje wywołanie do pełnomocnika selektywnego czyszczenia aplikacji.

Przykład:

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

Powiadomienia o stanie, wynikach i debugowaniu

Aplikacja może otrzymywać powiadomienia o stanie, wynikach i debugowaniu dotyczące następujących żądań do usługi MAM usługi Intune:

  • Żądania rejestracji
  • Prośby o aktualizację zasad
  • Żądania wyrejestrowania

Powiadomienia są prezentowane za pośrednictwem metod delegowania w 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;

Te metody delegatów zwracają IntuneMAMEnrollmentStatus obiekt zawierający następujące informacje:

  • Identyfikator konta (identyfikator obiektu) konta skojarzonego z żądaniem
  • Tożsamość (UPN) konta skojarzonego z żądaniem
  • Kod stanu wskazujący wynik żądania
  • Ciąg błędu z opisem kodu stanu
  • Obiekt NSError . Obiekt ten jest zdefiniowany w formacie IntuneMAMEnrollmentStatus.h, wraz z określonymi kodami stanu, które mogą być zwracane.

Przykładowy kod

Poniżej przedstawiono przykładowe implementacje metod delegatów:

- (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);
}

Ponowne uruchamianie aplikacji

Gdy aplikacja odbiera zasady zarządzania aplikacjami mobilnymi po raz pierwszy, musi uruchomić się ponownie, aby zastosować wymagane punkty zaczepienia. Aby powiadomić aplikację o konieczności ponownego uruchomienia, zestaw SDK udostępnia metodę delegata w IntuneMAMPolicyDelegate.h.

 - (BOOL) restartApplication

Wartość zwracana przez tę metodę informuje zestaw SDK, czy aplikacja musi obsługiwać wymagane ponowne uruchomienie:

  • Jeśli jest zwracana wartość prawda, aplikacja musi obsłużyć ponowne uruchomienie.

  • Jeśli zostanie zwrócona wartość false, zestaw SDK ponownie uruchomi aplikację po zwróceniu tej metody. W zestawie SDK natychmiast zostanie wyświetlone okno dialogowe informujące użytkownika o konieczności ponownego uruchomienia aplikacji.

Uwaga

Aplikacje .NET MAUI nie wymagają ponownego uruchomienia.

Kryteria zakończenia

Po skonfigurowaniu wtyczki kompilacji lub zintegrowaniu narzędzia wiersza polecenia z procesem kompilacji sprawdź, czy działa pomyślnie:

  • Upewnij się, że kompilacja została pomyślnie skompilowana i skompilowana.
  • Uruchom skompilowaną aplikację, zaloguj się jako użytkownik usługi Microsoft Entra, który nie jest objęty zasadami ochrony aplikacji, i potwierdź, że aplikacja działa zgodnie z oczekiwaniami.
  • Wyloguj się i powtórz ten test z użytkownikiem usługi Microsoft Entra, który jest objęty zasadami ochrony aplikacji, i potwierdź, że aplikacja jest teraz zarządzana przez usługę Intune i ponownie uruchomiona.

Na tym etapie integracji aplikacja może teraz odbierać i wymuszać zasady ochrony aplikacji. Wykonaj następujące testy, aby sprawdzić integrację.

Pierwszy test zastosowania zasad

Najpierw wykonaj poniższy test, aby zapoznać się z pełnym środowiskiem użytkownika końcowego stosowania zasad w aplikacji:

  1. Utwórz zasady ochrony aplikacji systemu iOS w centrum administracyjnym usługi Microsoft Intune. Na potrzeby tego testu skonfiguruj zasady:
    • W obszarze Wymagania dotyczące dostępu pozostaw ustawienia domyślne. Warto zauważyć, że "Numer PIN dla dostępu" powinno mieć wartość "Wymagaj".
  2. Upewnij się, że zasady ochrony aplikacji są ukierunkowane na Twoją aplikację. Może być konieczne ręczne dodanie identyfikatora pakietu aplikacji w kreatorze tworzenia zasad.
  3. Przypisz zasady ochrony aplikacji do grupy użytkowników zawierającej konto testowe.
  4. Zainstaluj aplikację.
  5. Zaloguj się do aplikacji przy użyciu konta testowego, które jest objęte zasadami ochrony aplikacji.
  6. Potwierdź, że jest wyświetlany monit na ekranie zarządzanym usługi Intune i potwierdź, że monit spowoduje ponowne uruchomienie aplikacji. Ten ekran wskazuje, że zestaw SDK pomyślnie pobiera zasady dla tego konta.
  7. Utwórz numer PIN, gdy zostanie wyświetlony monit o ustawienie numeru PIN aplikacji.
  8. Wyloguj konto zarządzane z aplikacji.
  9. Nawiguj po aplikacji i upewnij się, że działa ona zgodnie z oczekiwaniami, jeśli to możliwe, bez logowania.

Ta lista kroków to *absolutne minimum — test potwierdzający, że aplikacja poprawnie rejestruje konto, rejestruje wywołanie zwrotne uwierzytelniania i wyrejestrowuje konto. Wykonaj poniższe testy, aby dokładniej sprawdzić, jak inne ustawienia zasad ochrony aplikacji modyfikują zachowanie aplikacji.

Następne kroki

Po spełnieniu wszystkich kryteriów zakończenia przejdź do etapu 4: Funkcje uczestnictwa w aplikacji.