Udostępnij za pośrednictwem


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 zapoznania się z artykułem Planowanie integracji.

Cele etapów

  • Pobierz zestaw SDK aplikacji usługi Intune.
  • Dowiedz się, jakie pliki znajdują się 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 w usłudze MSAL.
  • Aby usunąć dane firmowe, wyrejestruj konta po wylogowaniu
  • (Zalecane) Dołączanie logowania mam do aplikacji.

Wymagania wstępne

  • Potrzebny jest komputer z systemem macOS z zainstalowanym programem Xcode 14.0 lub nowszym.

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

  • Przejrzyj postanowienia licencyjne dotyczące zestawu SDK aplikacji usługi Intune dla systemu iOS. Drukuj i zachowaj kopię postanowień licencyjnych dotyczących rekordów. Pobierając i korzystając z zestawu SDK aplikacji usługi Intune dla systemu iOS, zgadzasz się na takie postanowienia licencyjne. Jeśli ich nie akceptujesz, nie używaj oprogramowania.

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

Co jest w repozytorium zestawu SDK

  • IntuneMAMSwift.xcframework: dynamiczna struktura zestawu SDK aplikacji usługi Intune. Zaleca się połączenie tej struktury z aplikacjami/rozszerzeniami w celu włączenia zarządzania aplikacjami klienckimi usługi Intune. Jednak niektórzy deweloperzy mogą preferować korzyści z wydajności platformy statycznej (IntuneMAMStatic.xcframework). Zobacz poniżej.

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

  • IntuneMAMSwiftStub.xcframework: struktura szablonu Swift zestawu SDK aplikacji usługi Intune. Ta struktura jest wymaganą zależnością zarówno od intuneMAMSwift.xcframework, jak i intuneMAMStatic.xcframework, które aplikacje/rozszerzenia muszą łączyć.

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

  • libIntuneMAMSwift.xcframework: biblioteka statyczna zestawu SDK aplikacji usługi Intune. Ten wariant zestawu SDK zarządzania aplikacjami mobilnymi usługi Intune dla systemu iOS jest przestarzały i zostanie usunięty w przyszłej aktualizacji. Zaleca się, aby nie łączyć biblioteki statycznej, a zamiast tego łączyć aplikację/rozszerzenia z platformą 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 dla aplikacji, które integrują przestarzałą bibliotekę statyczną (libIntuneMAMSwift.xcframework) i zostaną usunięte 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 kodu. Tym mniej kodu zmienia mniej czasu na wprowadzanie na rynek, ale bez wpływu na spójność i stabilność aplikacji mobilnej.

Przepływ procesu

Na poniższym diagramie przedstawiono przepływ procesów zestawu SDK aplikacji usługi Intune dla systemu iOS:

Diagram architektury wysokiego poziomu dla usługi Microsoft Intune.

Tworzenie zestawu SDK w aplikacji mobilnej

Ważna

Usługa Intune regularnie publikuje aktualizacje zestawu SDK aplikacji usługi Intune. Regularnie sprawdzaj zestaw SDK aplikacji usługi Intune dla systemu iOS pod kątem aktualizacji i dołączaj je do cyklu tworzenia oprogramowania, aby upewnić się, że 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 z obiektem IntuneMAMSwift.xcframework docelowym lub IntuneMAMStatic.xcframework z obiektem docelowym: przeciągnij pakiet xcframework na listę Frameworks, Libraries i Embedded Content obiektu docelowego projektu. Powtórz te kroki dla polecenia IntuneMAMSwiftStub.xcframework. W przypadku aplikacji głównej wybierz pozycję "Osadź & Sign" w kolumnie "Osadź" dla obu dodanych elementów xcframeworks. W przypadku jakichkolwiek rozszerzeń wybierz pozycję "Nie osadzaj".

    Zestaw SDK aplikacji usługi Intune dla systemu iOS Framework: przykład Xcode Frameworks, Libraries i Embedded Content

  2. Dodaj następujące 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 łańcucha kluczy (jeśli nie jest jeszcze włączone), wybierając pozycję Możliwości w każdym projekcie docelowym i włączając przełącznik udostępniania pęku kluczy . Udostępnianie łańcucha kluczy jest wymagane, aby przejść do następnego kroku.

    Uwaga

    Profil aprowizacji musi obsługiwać nowe wartości udostępniania łańcucha kluczy. Grupy dostępu łańcucha kluczy powinny obsługiwać symbol wieloznaczny. Możesz to sprawdzić, otwierając plik mobileprovision w edytorze tekstów, wyszukując grupy dostępu do łańcucha kluczy 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 łańcucha kluczy wykonaj kroki, aby utworzyć oddzielną grupę dostępu, w której zestaw SDK aplikacji usługi Intune będzie przechowywać swoje dane. Grupę dostępu łańcucha kluczy można utworzyć przy użyciu interfejsu użytkownika lub pliku uprawnień. Jeśli używasz interfejsu użytkownika do tworzenia grupy dostępu łańcucha kluczy, wykonaj następujące kroki:

    1. Jeśli aplikacja mobilna nie ma zdefiniowanych grup dostępu łańcucha kluczy, dodaj identyfikator pakietu aplikacji jako pierwszą grupę.

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

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

      Zestaw SDK aplikacji usługi Intune dla systemu iOS: udostępnianie łańcucha kluczy

    4. Jeśli edytujesz plik uprawnień bezpośrednio, zamiast korzystać z interfejsu użytkownika Xcode pokazanego powyżej w celu utworzenia grup dostępu łańcucha kluczy, przedskutuj grupy dostępu łańcucha kluczy za pomocą $(AppIdentifierPrefix) polecenia (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 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 łańcucha kluczy (krok 3) powinno spowodować wygenerowanie kodu Xcode dla aplikacji. Upewnij się, że identyfikator pakietu aplikacji jest pierwszym wpisem na liście.

  5. Dołącz każdy protokół przekazywany przez aplikację do UIApplication canOpenURL tablicy LSApplicationQueriesSchemes pliku Info.plist aplikacji. Dla każdego protokołu wymienionego w tej tablicy należy również dodać kopię dołączonego -intunemam protokołu do tablicy. Ponadto http-intunemamelement , , https-intunemammicrosoft-edge-http-intunemam, microsoft-edge-https-intunemam, smart-ns, zips, lacoonsecurity, , wandera, lookoutwork-ase, , skycure, betteractiveshield, smsec, mvisionmobile, , scmxi intunemam-mtd powinien zostać dodany do tablicy. Jeśli aplikacja używa protokołu mailto: , ms-outlook-intunemam należy również dodać go do tablicy. Pamiętaj, aby zapisać zmiany przed przejściem do następnego kroku.

    Jeśli na liście LSApplicationQueriesSchemes w aplikacji zabraknie miejsca, może usunąć schematy "-intunemam" dla aplikacji, o których wiadomo, że implementują również zestaw SDK zarządzania aplikacjami mobilnymi usługi Intune. Gdy aplikacja usunie "scheme-intunemam" z listy LSApplicationQueriesSchemes, canOpenURL() może zwrócić nieprawidłowe odpowiedzi dla tych schematów. Aby rozwiązać ten problem, aplikacja powinna wywołać [IntuneMAMPolicy isURLAllowed:url isKnownManagedAppScheme:YES] ten schemat. To wywołanie jest zwracane NO , jeśli zasady blokują otwarcie adresu URL. Jeśli zwraca wartość true, aplikacja może wywołać z canOpenURL() pustą tożsamością, aby ustalić, 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 funkcji FaceID, upewnij się, że klucz NSFaceIDUsageDescription Info.plist został skonfigurowany z domyślnym komunikatem. Ten krok jest wymagany, aby system iOS mógł poinformować użytkownika, w jaki sposób aplikacja zamierza używać faceid. Ustawienie zasad ochrony aplikacji usługi Intune umożliwia użycie funkcji FaceID jako metody dostępu do aplikacji po skonfigurowaniu przez administratora IT.

  7. Użyj narzędzia IntuneMAMConfigurator dołączonego do repozytorium zestawu SDK , aby zakończyć konfigurowanie pliku Info.plist aplikacji. Narzędzie ma trzy parametry:

    Własność Jak z niego korzystać
    -ja <Path to the input plist>
    - e <Path to the entitlements file>
    - o (Opcjonalnie) <Path to the output plist>

    Jeśli parametr "-o" nie zostanie określony, plik wejściowy zostanie zmodyfikowany w miejscu. Narzędzie jest idempotentne i powinno zostać ponownie uruchamiane za każdym razem, gdy zostaną wprowadzone zmiany w pliku Info.plist lub uprawnienia aplikacji. Należy również pobrać i uruchomić najnowszą wersję narzędzia podczas aktualizowania zestawu SDK usługi Intune, jeśli wymagania konfiguracji info.plist uległy zmianie w najnowszej wersji.

Ustawienia kompilacji Xcode

Aplikacja powinna mieć ustawioną wartość "Strip Swift Symbols" (STRIP_SWIFT_SYMBOLS) i "Enable Bitcode" (ENABLE_BITCODE) na wartość NIE.

Integrowanie rozszerzenia dostawcy plików

Rozszerzenia dostawcy plików mają pewne wymagania dotyczące pamięci, które mogą utrudnić integrację pełnego zestawu SDK. Aby to ułatwić, istnieje biblioteka libIntuneMAMSwiftFileProvider.xcframework statyczna, która jest okrojoną wersją zestawu SDK przeznaczoną specjalnie dla rozszerzeń dostawcy plików. Należy pamiętać, że dotyczy to części rozszerzenia FileProvider, która nie jest 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, wykonaj kroki integracji zestawu SDK jako biblioteki statycznej, jak pokazano powyżej. Pamiętaj, aby uwzględnić ContainingAppBundleId ustawienie.

Integrowanie rozszerzenia dostawcy plików niezreplikowanych

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

W programie — startProvidingItemAtURL:completionHandler: sprawdź, czy należy szyfrować pliki przy użyciu polecenia [[Wystąpienie IntuneMAMPolicy]shouldFileProviderEncryptFiles]]. Użyj pliku encryptFile:forAccountId: interfejsu API w usłudze IntuneMAMFileProtectionManager, aby uzyskać rzeczywiste szyfrowanie plików. Ponadto udostępnij kopię pliku, gdy szyfrowanie jest wymagane, ponieważ nie chcesz przechowywać zaszyfrowanej kopii pliku w magazynie w chmurze.

In — importDocumentAtURL:toParentItemIdentifier:completionHandler: sprawdź, czy plik jest szyfrowany przy użyciu polecenia isFileEncrytped: INTERFEJS API w usłudze IntuneMAMFileProtectionManager. Jeśli zostanie odszyfrowywane przy użyciu polecenia decryptFile:toCopyPath: INTERFEJS API intuneMAMFileProtectionManager. W aplikacjach z wieloma tożsamościami sprawdź również interfejs API canReceiveSharedFile: w usłudze IntuneMAMPolicy właściciela docelowego, aby sprawdzić, czy właściciel może odebrać plik.

Integrowanie zreplikowanego rozszerzenia dostawcy plików

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

In — fetchContentsForItemWithIdentifier:version:request:completionHandler: sprawdź, czy należy szyfrować pliki przy użyciu [[wystąpienia IntuneMAMPolicy]shouldFileProviderEncryptFiles]]. Użyj pliku encryptFile:forAccountId: interfejsu API w usłudze IntuneMAMFileProtectionManager, aby uzyskać rzeczywiste szyfrowanie plików. Ponadto udostępnij kopię pliku, gdy szyfrowanie jest wymagane, ponieważ nie chcesz przechowywać zaszyfrowanej kopii pliku w magazynie w chmurze.

W programie — createItemBasedOnTemplate:fields:contents:options:request:completionHandler: sprawdź, czy plik jest szyfrowany przy użyciu polecenia isFileEncrypted: INTERFEJS API w usłudze IntuneMAMFileProtectionManager. Jeśli zostanie odszyfrowywane przy użyciu polecenia decryptFile:toCopyPath: INTERFEJS API intuneMAMFileProtectionManager. W aplikacjach z wieloma tożsamościami sprawdź również interfejs API canReceiveSharedFile: w usłudze IntuneMAMPolicy właściciela docelowego, aby sprawdzić, czy właściciel może odebrać plik.

Wszędzie tam, gdzie dostawca zreplikowanych plików tworzy i przekazuje element NSFileProviderItem do systemu, wywołaj interfejs API intuneMAMFileProtectionManager's protectFileProviderItem:forAccountId: z tożsamością właściciela elementu. W zależności od tego, gdzie obiekt NSFileProviderItem jest tworzony i utrwalany w ramach rozszerzenia, może być konieczne wykonanie tego czynności w każdej metodzie protokołu NSFileProviderReplicatedExtension.

Konfigurowanie ustawień zestawu SDK aplikacji usługi Intune

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

W słowniku IntuneMAMSettings możesz zdefiniować następujące obsługiwane ustawienia, aby skonfigurować zestaw SDK aplikacji usługi Intune.

Niektóre z tych ustawień mogły zostać omówione w poprzednich sekcjach, a niektóre nie dotyczą wszystkich aplikacji.

Ustawienie Wpisać Definicja Wymagane?
ADALClientId Ciąg Identyfikator klienta usługi Microsoft Entra aplikacji. Wymagane dla wszystkich aplikacji.
ADALAuthority Ciąg Używany urząd firmy Microsoft Entra aplikacji. Należy użyć własnego środowiska, w którym skonfigurowano 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 jednej organizacji / dzierżawie usługi Microsoft Entra. Jeśli ta wartość jest nieobecna, używany jest wspólny urząd Microsoft Entra (obsługiwany tylko w przypadku aplikacji wielodostępnych).
ADALRedirectUri Ciąg Identyfikator URI przekierowania usługi Microsoft Entra aplikacji. Dla wszystkich aplikacji jest wymagany identyfikator ADALRedirectUri lub ADALRedirectScheme.
ADALRedirectScheme Ciąg Schemat przekierowania identyfikatora Microsoft Entra aplikacji. Można go użyć zamiast identyfikatora ADALRedirectUri, jeśli identyfikator URI przekierowania aplikacji ma format scheme://bundle_id. Dla wszystkich aplikacji jest wymagany identyfikator ADALRedirectUri lub ADALRedirectScheme.
ADALLogOverrideDisabled Wartość logiczna Określa, czy zestaw SDK będzie kierować 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. Fakultatywny.
ADALCacheKeychainGroupOverride Ciąg Określa grupę łańcucha kluczy do użycia dla pamięci podręcznej MSAL zamiast "com.microsoft.adalcache". Pamiętaj, że nie ma prefiksu app-id. Zostanie to poprzedzone podanym ciągiem w czasie wykonywania. Fakultatywny.
AppGroupIdentifiers Tablica ciągów Tablica grup aplikacji z sekcji uprawnień aplikacji com.apple.security.application-groups. Wymagane, jeśli aplikacja używa 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ę po uruchomieniu, jeśli wykryto istniejącą tożsamość zarządzaną i nie została jeszcze wykonana. Wartość domyślna to NIE.

Uwagi: Jeśli nie znaleziono tożsamości zarządzanej lub w pamięci podręcznej MSAL nie jest dostępny żaden prawidłowy token tożsamości, próba rejestracji zakończy się dyskretnym niepowodzeniem bez monitowania o poświadczenia, chyba że aplikacja ma również ustawioną wartość MAMPolicyRequired na WARTOŚĆ TAK.
Fakultatywny. Wartość domyślna to nie.
MAMPolicyRequired Wartość logiczna Określa, czy uruchamianie aplikacji będzie blokowane, jeśli aplikacja nie ma zasad ochrony aplikacji usługi Intune. Wartość domyślna to NIE.

Uwagi: Nie można przesłać aplikacji do sklepu App Store z ustawieniem MAMPolicyRequired ustawionym na WARTOŚĆ TAK. W przypadku ustawienia parametru MAMPolicyRequired na wartość TAK należy również ustawić wartość TAK dla opcji AutoEnrollOnLaunch.
Fakultatywny. Wartość domyślna to nie.
MAMPolicyWarnAbsent Wartość logiczna Określa, czy aplikacja będzie ostrzegać użytkownika podczas uruchamiania, jeśli aplikacja nie ma zasad ochrony aplikacji usługi Intune.

Uwaga: użytkownicy nadal będą mogli korzystać z aplikacji bez zasad po odrzuceniu ostrzeżenia.
Fakultatywny. Wartość domyślna to nie.
MultiIdentity Wartość logiczna Określa, czy aplikacja ma obsługę wielu tożsamości. Fakultatywny. Wartość domyślna to nie.
SafariViewControllerBlockedOverride Wartość logiczna Wyłącza zaczepki SafariViewController usługi Intune, aby włączyć uwierzytelnianie MSAL za pośrednictwem SFSafariViewController, SFAuthSession lub ASWebAuthSession.

Uwaga: właściwość przycisku działania SFSafariViewControllerConfiguration nie jest obsługiwana przez zarządzany kontroler widoku safari usługi Intune. Skonfigurowany przycisk działania zostanie wyświetlony w kontrolce SafariViewController tylko wtedy, gdy widok jest niezarządzany, a wartość SafariViewControllerBlockedOverride zostanie ustawiona na wartość tak.
Fakultatywny. Wartość domyślna to nie. OSTRZEŻENIE: może spowodować wyciek danych, jeśli jest używany nieprawidłowo. Włącz tylko wtedy, gdy jest to absolutnie konieczne. Aby uzyskać więcej informacji, zobacz Specjalne zagadnienia dotyczące używania biblioteki MSAL do uwierzytelniania inicjowanego przez aplikację.
SplashIconFile
SplashIconFile~ipad
Ciąg Określa plik ikony powitalnej (uruchamiania) usługi Intune. Fakultatywny.
SplashDuration Numer Minimalna ilość czasu w sekundach, przez którą ekran uruchamiania usługi Intune będzie wyświetlany podczas uruchamiania aplikacji. Wartość domyślna to 1,5. Fakultatywny.
BackgroundColor Ciąg Określa kolor tła składników interfejsu użytkownika zestawu SDK usługi Intune. Akceptuje szesnastkowy ciąg RGB w postaci #XXXXXX, gdzie X może wahać się od 0 do 9 lub A-F. Znak funta może zostać pominięty. Fakultatywny. Domyślny kolor tła systemu, który może się różnić w różnych wersjach systemu iOS i zgodnie z ustawieniem trybu ciemnego systemu iOS.
ForegroundColor Ciąg Określa kolor pierwszego planu składników interfejsu użytkownika zestawu SDK usługi Intune, na przykład kolor tekstu. Akceptuje szesnastkowy ciąg RGB w postaci #XXXXXX, gdzie X może wahać się od 0 do 9 lub A-F. Znak funta może zostać pominięty. Fakultatywny. Domyślnie jest używany kolor etykiety systemowej, który może się różnić w różnych wersjach systemu iOS i zgodnie z ustawieniem trybu ciemnego systemu iOS.
AccentColor Ciąg Określa kolor akcentu dla składników interfejsu użytkownika zestawu SDK usługi Intune, takich jak kolor tekstu przycisku i kolor wyróżniania pola numeru PIN. Akceptuje szesnastkowy ciąg RGB w postaci #XXXXXX, gdzie X może wahać się od 0 do 9 lub A-F. Znak funta może zostać pominięty. Fakultatywny. Domyślnie jest to niebieski system.
SecondaryBackgroundColor Ciąg Określa dodatkowy kolor tła dla ekranów MTD. Akceptuje szesnastkowy ciąg RGB w postaci #XXXXXX, gdzie X może wahać się od 0 do 9 lub A-F. Znak funta może zostać pominięty. Fakultatywny. Wartość domyślna to biały.
SecondaryForegroundColor Ciąg Określa dodatkowy kolor pierwszego planu dla ekranów MTD, na przykład kolor przypisu dolnego. Akceptuje szesnastkowy ciąg RGB w postaci #XXXXXX, gdzie X może wahać się od 0 do 9 lub A-F. Znak funta może zostać pominięty. Fakultatywny. Domyślnie jest szary.
Obsługa elementuDarkMode Wartość logiczna Określa, czy schemat kolorów interfejsu użytkownika zestawu SDK usługi Intune powinien obserwować ustawienie trybu ciemnego systemu, jeśli nie ustawiono jawnej wartości dla właściwości BackgroundColor/ForegroundColor/AccentColor Fakultatywny. Domyślnie wartość tak.
MAMTelemetryDisabled Wartość logiczna Określa, czy zestaw SDK nie wyśle żadnych danych telemetrycznych do zaplecza. Fakultatywny. Wartość domyślna to nie.
MAMTelemetryUsePPE Wartość logiczna Określa, czy zestaw SDK mam będzie wysyłać dane do zaplecza telemetrii ppe. Użyj tego podczas testowania aplikacji przy użyciu zasad usługi Intune, aby dane telemetryczne testów nie mieszać się z danymi klientów. Fakultatywny. Wartość domyślna to nie.
MaxFileProtectionLevel Ciąg Umożliwia aplikacji określenie maksimum NSFileProtectionType , które może obsługiwać. Ta wartość zastąpi zasady wysyłane przez usługę, jeśli poziom jest wyższy niż obsługiwany przez aplikację. Możliwe wartości: NSFileProtectionComplete, NSFileProtectionCompleteUnlessOpen, NSFileProtectionCompleteUntilFirstUserAuthentication, . NSFileProtectionNone Uwaga: przy najwyższym poziomie ochrony plików (NSFileProtectionComplete) można uzyskiwać dostęp do chronionych plików tylko wtedy, gdy urządzenie jest odblokowane. 10 sekund po zablokowaniu urządzenia aplikacja utraci dostęp do chronionych plików. W niektórych przypadkach może to spowodować utratę dostępu do składników wewnętrznych (takich jak bazy danych MySQL), co prowadzi do nieoczekiwanego zachowania. Zalecane jest, aby aplikacje prezentujące elementy interfejsu użytkownika ekranu blokady ustawiały tę wartość na NSFileProtectionCompleteUntilFirstUserAuthentication. Fakultatywny. Wartość domyślna to NSFileProtectionComplete.
OpenInActionExtension Wartość logiczna Dla rozszerzeń Open in Action ustaw wartość TAK. Aby uzyskać więcej informacji, zobacz sekcję Udostępnianie danych za pośrednictwem kontrolki UIActivityViewController .
WebViewHandledURLSchemes Tablica ciągów Określa schematy adresów URL, które obsługuje widok WebView aplikacji. Wymagane, jeśli aplikacja używa elementu WebView obsługującego adresy URL za pośrednictwem linków i/lub języka JavaScript.
DocumentBrowserFileCachePath Ciąg Jeśli aplikacja używa UIDocumentBrowserViewController metody do przeglądania plików u różnych dostawców plików, możesz ustawić tę ścieżkę względem katalogu macierzystego w piaskownicy aplikacji, aby zestaw SDK usługi Intune mógł usunąć odszyfrowane pliki zarządzane do tego folderu. Fakultatywny. Domyślnie jest to /Documents/ katalog.
Pełne rejestrowanieEnabled Wartość logiczna Jeśli ustawiono wartość TAK, usługa Intune będzie logować się w trybie pełnego. Fakultatywny. Wartość domyślna to NIE
FinishLaunchingAtStartup Wartość logiczna Jeśli aplikacja jest używana [BGTaskScheduler registerForTaskWithIdentifier:] , to ustawienie powinno mieć wartość TAK. Fakultatywny. Wartość domyślna to NIE
ValuesToScrubFromLogging Tablica ciągów Określa wartości konfiguracji aplikacji, które powinny zostać usunięte z dzienników. Alternatywnie właściwość valuesToScrubFromLogging w klasie IntuneMAMSettings może mieć tablicę ciągów dla tego samego zachowania. Fakultatywny.

Odbieranie zasad ochrony aplikacji

Omówienie

Aby otrzymywać zasady ochrony aplikacji usługi Intune, aplikacje muszą zainicjować żądanie rejestracji za pomocą usługi zarządzania aplikacjami mobilnymi usługi Intune. Aplikacje można skonfigurować w centrum administracyjnym usługi Intune w celu otrzymywania zasad ochrony aplikacji z rejestracją urządzenia lub bez niej. Zarządzanie aplikacjami mobilnymi (MAM) umożliwia zarządzanie aplikacjami przez usługę Intune bez konieczności rejestrowania urządzenia w zarządzaniu urządzeniami przenośnymi (MDM) w usłudze Intune. W obu przypadkach rejestrowanie w usłudze Zarządzania aplikacjami mobilnymi w usłudze Intune jest wymagane do odbierania 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ć bieżącą wersję zestawu SDK, aby umożliwić udostępnianie chronionych danych.

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

Uwaga

Biblioteka uwierzytelniania usługi Azure AD (ADAL) i interfejs API programu Azure AD Graph zostaną wycofane. Aby uzyskać więcej informacji, zobacz Aktualizowanie aplikacji w celu używania biblioteki Microsoft Authentication Library (MSAL) i interfejsu API programu Microsoft Graph.

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

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

Po pomyślnym zalogowaniu msal wysyła z powrotem wynik w obiekcie MSALResult. Użyj parametru tenantProfile.identifier w elemencie MSALResult jako parametru accountId dla powyższego interfejsu API.

registerAndEnrollAccountId Wywołując metodę, zestaw SDK zarejestruje konto użytkownika i spróbuje zarejestrować aplikację w imieniu tego konta. Jeśli rejestracja nie powiedzie się z jakiegokolwiek powodu, zestaw SDK automatycznie ponowi próbę rejestracji 24 godziny później. Na potrzeby debugowania aplikacja może otrzymywać powiadomienia za pośrednictwem delegata dotyczące wyników wszystkich żą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 o konieczności ponownego uruchomienia aplikacji. W tym czasie 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 biblioteki MSAL

Aplikacje, które nie logują użytkownika przy użyciu biblioteki ADAL lub BIBLIOTEKI MSAL, nadal mogą odbierać zasady ochrony aplikacji z usługi zarządzania aplikacjami mobilnymi usługi Intune, wywołując interfejs API, aby zestaw SDK obsługiwał to uwierzytelnianie. Aplikacje powinny korzystać z tej techniki, gdy nie uwierzytelniły użytkownika przy użyciu identyfikatora Entra firmy Microsoft, ale nadal muszą pobierać zasady ochrony aplikacji, aby chronić dane. Przykładem jest to, czy inna usługa uwierzytelniania jest używana do logowania się do aplikacji lub jeśli 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 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;

Wywołując tę metodę, zestaw SDK wyświetli użytkownikowi monit o poświadczenia, jeśli nie można odnaleźć istniejącego tokenu. Następnie zestaw SDK spróbuje zarejestrować aplikację w usłudze Zarządzania aplikacjami mobilnymi usługi Intune w imieniu podanego konta użytkownika. Metodę można wywołać z wartością "zero" jako tożsamością. W takim przypadku zestaw SDK zarejestruje się u istniejącego zarządzanego użytkownika na urządzeniu (w przypadku rozwiązania MDM) lub wyświetli monit o podanie nazwy użytkownika, jeśli nie zostanie znaleziony żaden istniejący użytkownik.

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 delegata dotyczące wyników wszystkich żą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 o konieczności ponownego uruchomienia aplikacji. Gdy aplikacja jest zarządzana, wartość identyfikatora obiektu Entra musi być odpytywane przy użyciu enrolledAccountId polecenia w IntuneMAMEnrollmentManagerpliku . Użyj tego polecenia dla wszystkich interfejsów API zestawu SDK zarządzania aplikacjami mobilnymi używanych przez aplikację dla tego zarejestrowanego konta.

Przykład:

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

Zezwalanie usłudze Intune na obsługę uwierzytelniania i rejestracji podczas uruchamiania

Jeśli chcesz, aby zestaw SDK usługi Intune obsługiwał całe uwierzytelnianie przy użyciu biblioteki ADAL/MSAL i rejestracji przed zakończeniem uruchamiania aplikacji, a aplikacja zawsze wymaga zasad aplikacji, nie musisz używać interfejsu loginAndEnrollAccount API. Możesz po prostu ustawić dwa poniższe ustawienia 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ę po uruchomieniu, jeśli wykryto istniejącą tożsamość zarządzaną i nie została jeszcze wykonana. Wartość domyślna to NIE.

Uwaga: jeśli nie znaleziono tożsamości zarządzanej lub w pamięci podręcznej biblioteki ADAL/MSAL nie jest dostępny żaden prawidłowy token dla tożsamości, próba rejestracji nie powiedzie się w trybie dyskretnym bez monitowania o poświadczenia, chyba że aplikacja ma również ustawioną wartość MAMPolicyRequired na WARTOŚĆ TAK.
MAMPolicyRequired Wartość logiczna Określa, czy uruchamianie aplikacji będzie blokowane, jeśli aplikacja nie ma zasad ochrony aplikacji usługi Intune. Wartość domyślna to NIE.

Uwaga: nie można przesłać aplikacji do sklepu App Store z ustawieniem MAMPolicyRequired ustawionym na WARTOŚĆ TAK. W przypadku ustawienia parametru MAMPolicyRequired na wartość TAK należy również ustawić wartość TAK dla opcji AutoEnrollOnLaunch.

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

Wyrejestrowanie kont użytkowników

Zanim użytkownik wyloguje się z aplikacji, aplikacja powinna wyrejestrować użytkownika z zestawu SDK. Zapewni to:

  1. Ponowne próby rejestracji nie będą już wykonywane dla konta użytkownika.

  2. Zasady ochrony aplikacji zostaną usunięte.

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

Przed wylogowania użytkownika aplikacja powinna wywołać następującą metodę w wystąpieniu 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;

Przed usunięciem tokenów microsoft entra konta użytkownika należy wywołać tę metodę. Zestaw SDK wymaga tokenów usługi Microsoft Entra konta użytkownika, aby w imieniu użytkownika wysłać określone żądania do usługi zarządzania aplikacjami mobilnymi usługi Intune.

Jeśli aplikacja samodzielnie usunie dane firmowe użytkownika, flagę doWipe można ustawić na wartość false. W przeciwnym razie zestaw SDK może zainicjować selektywne czyszczenie. Spowoduje to wywołanie delegata selektywnego czyszczenia aplikacji.

Przykład:

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

Powiadomienia o stanie, wyniku i debugowaniu

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

  • Żądania rejestracji
  • Żądania aktualizacji zasad
  • Żądania wyrejestrowania

Powiadomienia są prezentowane za pośrednictwem metod delegata w programie 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 delegata IntuneMAMEnrollmentStatus zwracają obiekt zawierający następujące informacje:

  • AccountId (identyfikator obiektu) konta skojarzonego z żądaniem
  • Tożsamość (UPN) konta skojarzonego z żądaniem
  • Kod stanu, który wskazuje wynik żądania
  • Ciąg błędu z opisem kodu stanu
  • Obiekt NSError . Ten obiekt jest zdefiniowany w IntuneMAMEnrollmentStatus.hprogramie wraz z określonymi kodami stanu, które można zwrócić.

Przykładowy kod

Poniżej przedstawiono przykładowe implementacje metod delegata:

- (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 otrzymuje zasady zarządzania aplikacjami mobilnymi po raz pierwszy, musi zostać ponownie uruchomiona, aby zastosować wymagane elementy zaczepienia. Aby powiadomić aplikację o konieczności ponownego uruchomienia, zestaw SDK udostępnia metodę delegata w programie IntuneMAMPolicyDelegate.h.

 - (BOOL) restartApplication

Zwracana wartość tej metody informuje zestaw SDK, czy aplikacja musi obsłużyć wymagane ponowne uruchomienie:

  • Jeśli zostanie zwrócona wartość true, aplikacja musi obsłużyć ponowne uruchomienie.

  • Jeśli zostanie zwrócona wartość false, zestaw SDK ponownie uruchomi aplikację po zwróceniu tej metody. Zestaw SDK natychmiast wyświetla okno dialogowe, które informuje użytkownika o ponownym uruchomieniu aplikacji.

Kryteria zakończenia

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

  • Upewnij się, że kompilacja została pomyślnie skompilowana i skompilowana.
  • Uruchom skompilowaną aplikację, zaloguj się przy użyciu użytkownika usługi Microsoft Entra, który nie jest objęty zasadami ochrony aplikacji, i upewnij się, ż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 upewnij się, że aplikacja jest teraz zarządzana przez usługę Intune i jest ponownie uruchamiana.

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

Pierwszy test aplikacji zasad

Najpierw wykonaj następujący test, aby zapoznać się z pełnym środowiskiem użytkownika końcowego aplikacji 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 dostępu pozostaw ustawienia domyślne. W szczególności "NUMER PIN dla dostępu" powinien mieć wartość "Wymagaj".
  2. Upewnij się, że zasady ochrony aplikacji są przeznaczone dla aplikacji. 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. Upewnij się, że zostanie wyświetlony monit z ekranem zarządzanym przez usługę Intune i potwierdź, że monit ponownie uruchamia aplikację. Ten ekran wskazuje, że zestaw SDK pomyślnie pobiera zasady dla tego konta.
  7. Utwórz numer PIN po wyświetleniu monitu o ustawienie numeru PIN aplikacji.
  8. Wyloguj konto zarządzane z aplikacji.
  9. Nawiguj po aplikacji i upewnij się, że aplikacja działa zgodnie z oczekiwaniami, jeśli jest to możliwe bez logowania.

Ta lista kroków jest *minimalnym testem umożliwiającym potwierdzenie, że aplikacja prawidłowo rejestruje konto, rejestruje wywołanie zwrotne uwierzytelniania i wyrejestruje konto. Wykonaj następujące testy, aby dokładniej sprawdzić, w jaki sposób inne ustawienia zasad ochrony aplikacji modyfikują zachowanie aplikacji.

Następne kroki

Po ukończeniu wszystkich kryteriów zakończenia przejdź do pozycji Etap 4: Funkcje uczestnictwa w aplikacji.