Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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:
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:
Połącz albo
IntuneMAMSwift.xcframeworkIntuneMAMStatic.xcframeworkz obiektem docelowym: przeciągnij pakiet xcframework na listę struktur, bibliotek i osadzonej zawartości elementu docelowego projektu. Powtórz te kroki dlaIntuneMAMSwiftStub.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".
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
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>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:
Jeśli aplikacja mobilna nie ma zdefiniowanych żadnych grup dostępu pęku kluczy, dodaj identyfikator pakietu aplikacji jako pierwszą grupę.
Dodaj grupę
com.microsoft.intune.mampę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.Dodawaj
com.microsoft.adalcacheprodukty do istniejących grup dostępu.
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.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.
Uwzględnij każdy protokół, do
UIApplication canOpenURLktórego przekazuje aplikacja, wLSApplicationQueriesSchemestablicy pliku Info.plist aplikacji. Dla każdego protokołu wymienionego w tej tablicy dodaj kopię protokołu dołączonego-intunemamdo tablicy. Dodaj również te wartości do tablicy:http-intunemam,https-intunemam,smseczipslacoonsecuritysmart-nswanderalookoutwork-asemicrosoft-edge-https-intunemammicrosoft-edge-http-intunemambetteractiveshieldmvisionmobileskycurescmxi .intunemam-mtdJeśli aplikacja korzysta z protokołu mailto: dodajms-outlook-intunemamró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 zwracaneNO, 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]; }]; }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.
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:
Ponowne próby rejestracji nie występują już dla konta użytkownika.
Zasady ochrony aplikacji zostaną usunięte.
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 formacieIntuneMAMEnrollmentStatus.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:
- 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".
- 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.
- Przypisz zasady ochrony aplikacji do grupy użytkowników zawierającej konto testowe.
- Zainstaluj aplikację.
- Zaloguj się do aplikacji przy użyciu konta testowego, które jest objęte zasadami ochrony aplikacji.
- 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.
- Utwórz numer PIN, gdy zostanie wyświetlony monit o ustawienie numeru PIN aplikacji.
- Wyloguj konto zarządzane z aplikacji.
- 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.