3. Aşama: iOS Uygulamanızla SDK Tümleştirmesini Intune

Not

Bu kılavuz birkaç ayrı aşamaya ayrılmıştır. Tümleştirmeyi Planlama'ya bakarak başlayın.

Aşama Hedefleri

  • Intune Uygulama SDK'sını indirin.
  • Intune Uygulama SDK'sında hangi dosyaların yer aldığı hakkında bilgi edinin.
  • Uygulamanızdaki Intune Uygulama SDK'sı'na başvurun.
  • Intune Uygulama SDK'sının derlemenize düzgün şekilde eklendiğini onaylayın.
  • MSAL ile kimlik doğrulaması yaptıktan sonra MAM yönetimi için yeni hesaplar kaydedin.
  • Şirket verilerini kaldırmak için oturumu kapatan hesapların kaydını kaldırın
  • (Önerilen) MAM günlüğünü uygulamanıza dahil edin.

Önkoşullar

  • Xcode 16.0 veya üzeri yüklü bir macOS bilgisayara ihtiyacınız vardır.

  • Uygulamanızın iOS 16.0 veya üzeri için hedeflenmiş olması gerekir.

  • iOS için Intune Uygulama SDK'sı Lisans Koşulları'nı gözden geçirin. Kayıtlarınızın lisans koşullarının bir kopyasını yazdırın ve tutun. iOS için Intune Uygulama SDK'sını indirip kullanarak bu lisans koşullarını kabul etmiş olursunuz. Bunları kabul etmezseniz yazılımı kullanmayın.

  • GitHub'da iOS için Intune Uygulama SDK'sının dosyalarını indirin.

SDK Deposundakiler

  • IntuneMAMSwift.xcframework: Intune Uygulama SDK'sı dinamik çerçevesi. Intune istemci uygulama yönetimini etkinleştirmek için bu çerçeveyi uygulamanıza/uzantılarınıza bağlamanız önerilir. Ancak, bazı geliştiriciler statik çerçevenin (IntuneMAMStatic.xcframework) performans avantajlarını tercih edebilir.

  • IntuneMAMStatic.xcframework: Intune Uygulama SDK'sı statik çerçevesi. Geliştiriciler dinamik çerçeve yerine statik çerçeveyi bağlamayı seçebilir. Statik bir çerçevedeki yürütülebilir kod derleme zamanında doğrudan uygulama/uzantı ikilisine eklendiğinden, statik kitaplığı kullanmanın bazı başlatma zamanı performans avantajları vardır. Ancak, uygulamanız herhangi bir uzantı içeriyorsa statik çerçeveyi uygulamaya ve uzantılara bağlamak daha büyük bir uygulama paketi boyutuna neden olur. Yürütülebilir kod her uygulama/uzantı ikilisine eklenir. Buna karşılık, dinamik çerçeve kullanılırken uygulamalar ve uzantılar aynı Intune SDK ikili dosyasını paylaşabilir ve bu da daha küçük bir uygulama boyutuna neden olur.

  • IntuneMAMSwiftStub.xcframework: Intune Uygulama SDK'sı Swift Saptama çerçevesi. Bu çerçeve, uygulamaların/uzantıların bağlaması gereken hem IntuneMAMSwift.xcframework hem de IntuneMAMStatic.xcframework'ün gerekli bir bağımlılığıdır.

  • IntuneMAMConfigurator: Uygulamanın veya uzantının Info.plist dosyasını Intune yönetimi için gereken en düşük değişikliklerle yapılandırmak için kullanılan bir araç. Uygulamanızın veya uzantınızın işlevselliğine bağlı olarak Info.plist dosyasında el ile daha fazla değişiklik yapmanız gerekebilir.

  • libIntuneMAMSwift.xcframework: Intune Uygulama SDK'sı statik kitaplığı. Intune MAM iOS SDK'sının bu değişkeni, gelecek bir güncelleştirmede kullanım dışı bırakılmıştır ve kaldırılmıştır. Statik kitaplığı bağlamamanızı ve bunun yerine uygulamanızı/uzantılarınızı daha önce bahsedilen dinamik çerçeveye (IntuneMAMSwift.xcframework) veya statik çerçeveye (IntuneMAMStatic.xcframework) bağlamanızı öneririz.

  • IntuneMAMResources.bundle: SDK'nın bağlı olduğu kaynakları içeren bir kaynak paketi. Kaynak paketi yalnızca kullanım dışı bırakılan statik kitaplığı (libIntuneMAMSwift.xcframework) tümleştirip gelecek bir güncelleştirmede kaldıran uygulamalar için gereklidir.

Intune Uygulama SDK'sı nasıl çalışır?

iOS için Intune Uygulama SDK'sının amacı, en az kod değişikliğiyle iOS uygulamalarına yönetim özellikleri eklemektir. Kod ne kadar az olursa, mobil uygulamanızın tutarlılığını ve kararlılığını etkilemeden pazara daha az zaman alır.

İşlem akışı

Aşağıdaki diyagramda iOS için Intune Uygulama SDK'sı işlem akışı sağlanır:

Microsoft Intune için üst düzey mimari diyagram.

SDK'yi mobil uygulamanızda oluşturma

Önemli

Intune, Intune Uygulama SDK'sına yönelik güncelleştirmeleri düzenli olarak yayımlar. Güncelleştirmeler için iOS için Intune Uygulama SDK'sını düzenli olarak denetleyin ve uygulamalarınızın en son Uygulama Koruma İlkesi ayarlarını desteklediğinden emin olmak için yazılım geliştirme sürüm döngünüze dahil edin.

Intune Uygulama SDK'sını etkinleştirmek için şu adımları izleyin:

  1. IntuneMAMSwift.xcframework Hedefinize veya IntuneMAMStatic.xcframework bağlantı: xcframework paketini proje hedefinin Çerçeveler, Kitaplıklar ve Eklenmiş İçerik listesine sürükleyin. için IntuneMAMSwiftStub.xcframeworkbu adımları yineleyin. Ana uygulamanız için eklenen her iki xcframeworks için de "Ekle" sütunundaki "Ekleme & İşareti" öğesini seçin. Uzantılar için "Ekleme" seçeneğini belirleyin.

    Intune Uygulama SDK'sı iOS Çerçevesi: Xcode Çerçeveleri, Kitaplıklar ve Katıştırılmış İçerik örneği

  2. Bu iOS çerçevelerini projeye ekleyin:

    • 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. Her proje hedefinde Özellikler'i seçip Anahtar Zinciri Paylaşımı anahtarını etkinleştirerek anahtar zinciri paylaşımını etkinleştirin (henüz etkinleştirilmemişse). Bir sonraki adıma geçebilmek için anahtarlık paylaşımı gereklidir.

    Not

    Sağlama profilinizin yeni anahtarlık paylaşım değerlerini desteklemesi gerekir. Anahtarlık erişim grupları joker karakteri desteklemelidir. Bunu denetlemek için bir metin düzenleyicisinde .mobileprovision dosyasını açabilir, keychain-access-groups araması yapabilir ve joker karaktere sahip olduğunuzdan emin olabilirsiniz. Örneğin:

    <key>keychain-access-groups</key>
    <array>
    <string>YOURBUNDLESEEDID.*</string>
    </array>
    
  4. Anahtarlık paylaşımını etkinleştirdikten sonra, Intune Uygulama SDK'sının verilerini depoladığı ayrı bir erişim grubu oluşturmak için adımları izleyin. Kullanıcı arabirimini veya yetkilendirmeler dosyasını kullanarak bir anahtarlık erişim grubu oluşturabilirsiniz. Anahtarlık erişim grubunu oluşturmak için kullanıcı arabirimini kullanıyorsanız şu adımları izlediğinize emin olun:

    1. Mobil uygulamanızda tanımlı anahtarlık erişim grubu yoksa, uygulamanın paket kimliğini ilk grup olarak ekleyin.

    2. Paylaşılan anahtarlık grubunu com.microsoft.intune.mam mevcut erişim gruplarınıza ekleyin. Intune Uygulama SDK'sı, verileri depolamak için bu erişim grubunu kullanır.

    3. Mevcut erişim gruplarınıza ekleyin com.microsoft.adalcache .

      Intune Uygulama SDK'sı iOS: anahtarlık paylaşımı

      Not

      MSAL'yi varsayılan com.microsoft.adalcacheyerine özel bir anahtarlık erişim grubu kullanacak şekilde yapılandırdıysanız, bu anahtarlık erişim grubunu burada belirtmeniz gerekmez. Bunun yerine özel anahtarlık grubunu belirtin. Ayrıca Intune, IntuneMAMSettings Info.plist sözlüğündeki ADALCacheKeychainGroupOverride ayarı aracılığıyla aynı özel erişim grubunu kullanacak şekilde yapılandırmanız gerekir.

    4. Yetkilendirmeler dosyasını doğrudan düzenliyorsanız, anahtarlık erişim gruplarını oluşturmak için Xcode kullanıcı arabirimini kullanmak yerine anahtarlık erişim gruplarının $(AppIdentifierPrefix) başına ekleyin (Xcode bunu otomatik olarak işler). Örneğin:

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

      Not

      Yetkilendirmeler dosyası, mobil uygulamanıza özgü bir XML dosyasıdır. iOS uygulamanızda özel izinler ve özellikler belirtmek için kullanılır. Uygulamanızın daha önce bir yetkilendirme dosyası yoksa, anahtarlık paylaşımının etkinleştirilmesi (3. adım) Xcode'un uygulamanız için bir tane oluşturmasına neden olmuş olmalıdır. Uygulamanın paket kimliğinin listedeki ilk giriş olduğundan emin olun.

  5. Uygulamanızın geçiş UIApplication canOpenURL yaptığı her protokolü uygulamanızın LSApplicationQueriesSchemes Info.plist dosyasının dizisine ekleyin. Bu dizide listelenen her protokol için, dizinine ile eklenen -intunemam protokolün bir kopyasını ekleyin. Ayrıca, şu değerleri diziye ekleyin: , , , , , , zips, lacoonsecurity, skycurewanderalookoutwork-ase, betteractiveshield, smsec, , mvisionmobile, scmxve .intunemam-mtdsmart-nsmicrosoft-edge-https-intunemammicrosoft-edge-http-intunemamhttps-intunemamhttp-intunemam Uygulamanız mailto: protokolunu kullanıyorsa diziye de ekleyin ms-outlook-intunemam . Sonraki adıma geçmeden önce değişikliklerinizi kaydedin.

    Uygulamanın LSApplicationQueriesSchemes listesinde alanı tükenirse, Intune MAM SDK'sını da uyguladığı bilinen uygulamalar için "-intunemam" düzenlerini kaldırabilir. Uygulama LSApplicationQueriesSchemes listesinden "scheme-intunemam" öğesini kaldırdığında, canOpenURL() bu düzenler için yanlış yanıtlar döndürebilir. Bu sorunu çözmek için bunun yerine bu düzeni çağırabilirsiniz [IntuneMAMPolicy isURLAllowed:url isKnownManagedAppScheme:YES] . İlke URL'nin açılmasını engelliyorsa bu çağrı döndürülüyor NO . True döndürürse, uygulama url'nin açılıp açılamadığını belirlemek için boş bir kimlikle çağrı canOpenURL() yapabilir. Örneğin:

    BOOL __block canOpen = NO;
    if([policy isURLAllowed:urlForKnownManagedApp isKnownManagedAppScheme:YES])
    {
        [[IntuneMAMPolicyManager instance] setCurrentThreadAccountId:"" forScope:^{
        canOpen = [[UIApplication sharedApplication] canOpenURL:urlForKnownManagedApp];
        }];
    }
    
  6. Uygulamanız FaceID kullanmıyorsa NSFaceIDUsageDescription Info.plist anahtarının varsayılan iletiyle yapılandırıldığından emin olun. iOS'un kullanıcıya uygulamanın FaceID'yi nasıl kullanmayı amaçladığından haberdar edebilmesi için bu adım gereklidir. Intune uygulama koruma ilkesi ayarı, FACEID'nin BT yöneticisi tarafından yapılandırıldığında uygulama erişimi için bir yöntem olarak kullanılmasını sağlar.

  7. Uygulamanızın Info.plist dosyasını yapılandırmayı tamamlamak için SDK deposundaki IntuneMAMConfigurator aracını kullanın. Aracın üç parametresi vardır:

    Özellik Nasıl kullanılır?
    <Path to the input plist>
    -E <Path to the entitlements file>
    - o (İsteğe bağlı) <Path to the output plist>

    '-o' parametresi belirtilmezse, giriş dosyası yerinde değiştirilir. Araç bir kez etkilidir ve uygulamanın Info.plist veya yetkilendirmelerinde değişiklik yaptığınızda yeniden çalıştırılmalıdır. Info.plist yapılandırma gereksinimlerinin en son sürümde değişmesi durumunda Intune SDK'yı güncelleştirirken aracın en son sürümünü indirip çalıştırmanız gerekir.

Not

SwiftUI uygulamanız varsa Info.pist dosyasındaki sözlüğün UIApplicationSceneManifest eksik veya boş olmadığından emin olunUISceneConfigurations. Bu ayarın yapılandırılmaması, uygulama koruma ilkelerinin başarıyla uygulanmasına rağmen Intune SDK'sının uygulamanızı korumasını engelleyebilir. için belirli bir değere sahip değilseniz şu varsayılan yapılandırmayı UISceneConfigurations kullanabilirsiniz:

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

Xcode Derleme Ayarları ve Özellikleri

Uygulamanın Xcode derleme ayarlarında hem "Strip Swift Sembolleri"(STRIP_SWIFT_SYMBOLS) hem de "Bitcode'ı Etkinleştir"(ENABLE_BITCODE) ayarı HAYıR olarak ayarlanmalıdır. Uygulamanız Xcode 26+ ile kullanılabilen "Gelişmiş Güvenlik" özelliğini içeriyorsa, "İşaretçilerin kimliğini doğrulama" ve "Salt Okunur Platform Belleğini Etkinleştir" seçeneklerini devre dışı bırakmanız GEREKİr.

Dosya Sağlayıcısı uzantısını tümleştirme

Dosya Sağlayıcısı uzantılarının, tam SDK'nın tümleştirilmesini zorlaştırabilecek bazı bellek gereksinimleri vardır. Daha kolay hale getirmek için, SDK'nın dosya sağlayıcısı uzantılarına özel olarak kaldırılmış bir sürümü olan statik kitaplığı libIntuneMAMSwiftFileProvider.xcframeworkvardır. Bu kitaplığın FileProvider uzantısının kullanıcı arabirimi olmayan bölümüne yönelik olduğunu unutmayın. Tam SDK'yi dosya sağlayıcısı kullanıcı arabirimi uzantısıyla tümleştirmeniz gerekir.

Bu kitaplıklardan birini Dosya Sağlayıcısı uzantınızla tümleştirmek için SDK'yı statik kitaplık olarak tümleştirme adımlarını izleyin. Ayarı eklediğinizden ContainingAppBundleId emin olun.

Çoğaltılmamış Dosya Sağlayıcısı uzantısını tümleştirme

Uygulamanız NSFileProviderExtension protokolü uyguluyorsa Çoğaltılmamış Dosya Sağlayıcısı kullanıyordur. iOS 16.0'ın öncesinde oluşturulan tüm dosya sağlayıcılarının ilgisizdir.

in - startProvidingItemAtURL:completionHandler: [[IntuneMAMPolicy instance]shouldFileProviderEncryptFiles] kullanarak dosyaları şifrelemeniz gerekip gerekmediğini denetleyin. Gerçek dosya şifrelemesi için IntuneMAMFileProtectionManager'da encryptFile:forAccountId: API kullanın. Ayrıca, şifreleme gerektiğinde dosyanın şifrelenmiş bir kopyasını bulut depolama alanınızda depolamak istemediğiniz için dosyanın bir kopyasını paylaşın.

in - importDocumentAtURL:toParentItemIdentifier:completionHandler: IntuneMAMFileProtectionManager'da isFileEncrytped: API kullanılarak dosyanın şifrelenip şifrelenmediğini denetleyin. Bu durumda, DecryptFile:toCopyPath: IntuneMAMFileProtectionManager API'sini kullanarak şifresini çöz. Çok kimlikli uygulamalarda, sahibinin dosyayı alıp alamayacağına karar vermek için hedef sahibinin IntuneMAMPolicy içindeki canReceiveSharedFile: API'sini de denetleyin.

Çoğaltılmış Dosya Sağlayıcısı uzantısını tümleştirme

Uygulamanız NSFileProviderReplicatedExtension protokolü (iOS 16.0'da eklendi) uyguluyorsa Çoğaltılmış Dosya Sağlayıcısı kullanıyordur.

in - fetchContentsForItemWithIdentifier:version:request:completionHandler: [[IntuneMAMPolicy instance]shouldFileProviderEncryptFiles] kullanarak dosyaları şifrelemeniz gerekip gerekmediğini denetleyin. Gerçek dosya şifrelemesi için IntuneMAMFileProtectionManager'da encryptFile:forAccountId: API'sini kullanın. Şifreleme gerektiğinde dosyanın şifrelenmiş bir kopyasını bulut depolama alanınızda depolamak istemediğiniz için dosyanın bir kopyasını paylaşın.

in - createItemBasedOnTemplate:fields:contents:options:request:completionHandler: IntuneMAMFileProtectionManager'da isFileEncrypted: API kullanılarak dosyanın şifrelenip şifrelenmediğini denetleyin. Bu durumda, DecryptFile:toCopyPath: IntuneMAMFileProtectionManager API'sini kullanarak şifresini çöz. Çok kimlikli uygulamalarda, sahibinin dosyayı alıp alamayacağına karar vermek için hedef sahibinin IntuneMAMPolicy içindeki canReceiveSharedFile: API'sini de denetleyin.

Çoğaltılan Dosya Sağlayıcısının oluşturduğu ve sisteme bir NSFileProviderItem geçirdiği her yerde, öğenin sahip kimliğiyle IntuneMAMFileProtectionManager'ın protectFileProviderItem:forAccountId: API'sini çağırın. NSFileProviderItem nesnesinin uzantınızda nerede oluşturulduğuna ve kalıcı olduğuna bağlı olarak, bunu NSFileProviderReplicatedExtension protokol yöntemlerinin her birinde yapmanız gerekebilir.

Intune Uygulama SDK'sı ayarlarını yapılandırma

Intune Uygulama SDK'sını ayarlamak ve yapılandırmak için uygulamanın Info.plist dosyasındaki IntuneMAMSettings sözlüğünü kullanabilirsiniz. IntuneMAMSettings sözlüğü Info.plist dosyanızda görünmüyorsa, oluşturmanız gerekir.

IntuneMAMSettings sözlüğü altında, Intune Uygulama SDK'sını yapılandırmak için aşağıdaki desteklenen ayarları tanımlayabilirsiniz.

Önceki bölümlerde bu ayarlardan bazıları ele alınıyor ve bazıları tüm uygulamalar için geçerli değildir.

Ayar Tür Tanım Gerekli?
ADALClientId Dize Uygulamanın Microsoft Entra istemci tanımlayıcısı. Tüm uygulamalar için gereklidir.
ADALAuthority Dize Uygulamanın kullanımdaki Microsoft Entra yetkilisi. Microsoft Entra hesaplarının yapılandırıldığı kendi ortamınızı kullanmalısınız. Daha fazla bilgi için bkz. Uygulama yapılandırma seçenekleri. Uygulama, tek bir kuruluş / Microsoft Entra kiracıda kullanılmak üzere oluşturulmuş özel bir iş kolu uygulamasıysa gereklidir. Bu değer yoksa, ortak Microsoft Entra yetkilisi kullanılır (yalnızca çok kiracılı uygulamalar için desteklenir).
ADALRedirectUri Dize Uygulamanın Microsoft Entra yeniden yönlendirme URI'si. Tüm uygulamalar için ADALRedirectUri veya ADALRedirectScheme gereklidir.
ADALRedirectScheme Dize Uygulamanın Microsoft Entra ID yeniden yönlendirme şeması. Bu, uygulamanın yeniden yönlendirme URI'sinin biçiminde scheme://bundle_idolması durumunda ADALRedirectUri yerine kullanılabilir. Tüm uygulamalar için ADALRedirectUri veya ADALRedirectScheme gereklidir.
ADALLogOverrideDisabled Boole SDK'nın tüm MSAL günlüklerini (varsa, uygulamadan gelen MSAL çağrıları dahil) kendi günlük dosyasına yönlendirip yönlendirmeyeceğini belirtir. Varsayılan değer HAYıR'dır. Uygulama kendi MSAL günlük geri çağırmasını ayarlarsa EVET olarak ayarlayın. Isteğe bağlı.
ADALCacheKeychainGroupOverride Dize MSAL önbelleği için kullanılacak anahtar zinciri grubunu yerine "com.microsoft.adalcache"belirtir. Sistem bunu çalışma zamanında otomatik olarak önekler. Isteğe bağlı.
AppGroupIdentifiers Dize dizisi Uygulamanın yetkilendirmeler com.apple.security.application-groups bölümünden uygulama grupları dizisi. Uygulama uygulama grupları kullanıyorsa gereklidir.
ContainingAppBundleId Dize Uzantıyı içeren uygulamanın paket kimliğini belirtir. iOS uzantıları için gereklidir.
AutoEnrollOnLaunch Boole Mevcut bir yönetilen kimlik algılanırsa ve henüz yapmadıysa uygulamanın başlatma sırasında otomatik olarak kaydolmaya çalışıp çalışmayacağını belirtir. Varsayılan değer HAYıR'dır.

Not: MSAL önbelleğinde yönetilen kimlik bulunmazsa veya geçerli bir belirteç yoksa, EVET olmadığı sürece MAMPolicyRequired kayıt sessizce başarısız olur.
Isteğe bağlı. Varsayılan değer HAYıR'dır.
MAMPolicyRequired Boole Intune uygulama koruma ilkesi yoksa uygulamanın başlatılmasının engellenip engellenmeyeceğini belirtir. Varsayılan değer HAYıR'dır.

Not: Uygulamalar, bu evet olarak ayarlanmış App Store gönderilemiyor. Evet AutoEnrollOnLaunch olarak ayarlanırken evet de olmalıdır.
Isteğe bağlı. Varsayılan değer HAYıR'dır.
MAMPolicyWarnAbsent Boole Intune uygulama koruma ilkesi yoksa uygulamanın başlatma sırasında kullanıcıyı uyarıp uyarmayacağını belirtir.

Not: Kullanıcılar uyarıyı kapatarak devam edebilir.
Isteğe bağlı. Varsayılan değer HAYıR'dır.
MultiIdentity Boole Uygulamanın çok kimlikli olup olmadığını belirtir. Daha fazla bilgi için çoklu kimlik belgelerine bakın. Isteğe bağlı. Varsayılan değer HAYıR'dır.
MultiIdentityCancelDisabled Boole Çok kimlikli uygulamalarda koşullu başlatma kullanıcı arabirimi ekranlarında Intune iptal düğmesini devre dışı bırakır. Bu evet olarak ayarlanmadıysa uygulamanın hata kodunu işlemesi IntuneMAMSwitchIdentityResultCanceled gerekir. Bkz . Kimlikleri değiştirme. Isteğe bağlı. Varsayılan değer HAYıR'dır.
SafariViewControllerBlockedOverride Boole SFSafariViewController, SFAuthSession veya ASWebAuthSession aracılığıyla MSAL kimlik doğrulamasını etkinleştirmek için Intune SafariViewController kancalarını devre dışı bırakır.

Not: Yapılandırılmış etkinlik düğmesi yalnızca görünüm yönetilmeyense ve bu EVET olarak ayarlandıysa görüntülenir.
Isteğe bağlı. Varsayılan değer HAYıR'dır.

Uyarı: Yanlış kullanıldığında veri sızıntısına neden olabilir.
SplashIconFile
SplashIconFile~ipad
Dize Intune giriş (başlangıç) simgesi dosyasını belirtir. Isteğe bağlı.
SplashDuration Sayı Intune başlangıç ekranının gösterildiği saniye cinsinden minimum süre. Varsayılan değer 1,5'tir. Isteğe bağlı.
Backgroundcolor Dize Intune SDK kullanıcı arabirimi bileşenlerinin arka plan rengini belirtir. Pound işareti olmayan bir onaltılık değeri kabul eder #XXXXXX . Isteğe bağlı. Varsayılan olarak sistem arka plan rengi kullanılır.
ForegroundColor Dize Kullanıcı arabirimi bileşenleri için ön plan/metin rengini belirtir. Pound işareti olmadan kabul eder #XXXXXX veya onaltılık. Isteğe bağlı. Varsayılan olarak sistem etiketi rengi kullanılır.
AccentColor Dize KULLANıCı arabirimi bileşenlerinin vurgu rengini belirtir (düğmeler, PIN kutusu vurgusu). Pound işareti olmadan kabul eder #XXXXXX veya onaltılık. Isteğe bağlı. Varsayılan olarak sistem mavisi olur.
SecondaryBackgroundColor Dize MTD ekranları için ikincil arka plan rengini belirtir. Pound işareti olmadan kabul eder #XXXXXX veya onaltılık. Isteğe bağlı. Varsayılan olarak beyazdır.
SecondaryForegroundColor Dize MTD ekranları için ikincil ön plan rengini belirtir. Pound işareti olmadan kabul eder #XXXXXX veya onaltılık. Isteğe bağlı. Varsayılan olarak gridir.
SupportsDarkMode Boole Açık renkler ayarlanmadığı zaman UI renklerinin sistem Koyu Modu'nu izleyip izlemediğini belirtir. Isteğe bağlı. Varsayılan değer EVET'tir.
MAMTelemetryDisabled Boole Telemetrinin arka uçtan gönderilip gönderilmediğini belirtir. Isteğe bağlı. Varsayılan değer HAYıR'dır.
MAMTelemetryUsePPE Boole PPE arka ucuna telemetri gönderir. Verilerin müşteri verileriyle karışmaması için uygulamaları test etmede kullanışlıdır. Isteğe bağlı. Varsayılan değer HAYıR'dır.
MaxFileProtectionLevel Dize Uygulamanın desteklediği maksimum NSFileProtectionType değeri belirtir. Hizmet daha yüksek bir düzey gönderirse ilkeyi geçersiz kılar.

Olası değerler: NSFileProtectionComplete, NSFileProtectionCompleteUnlessOpen, NSFileProtectionCompleteUntilFirstUserAuthentication, NSFileProtectionNone.

Fark: ile NSFileProtectionCompleteuygulama, cihaz kilitlendikten yaklaşık 10 saniye sonra korumalı dosyalara erişimi kaybeder ve bu da yerel veritabanları gibi bileşenleri bozabilir. Kilit ekranı kullanıcı arabirimine sahip uygulamalar kullanmalıdır NSFileProtectionCompleteUntilFirstUserAuthentication.
Isteğe bağlı. varsayılan olarak ayarlanır NSFileProtectionComplete.
OpenInActionExtension Boole Eylemde Aç uzantıları için EVET olarak ayarlayın. Bkz . UIActivityViewController aracılığıyla Veri Paylaşma. Isteğe bağlı.
TreatAllWebViewsAsUnmanaged Boole Kesme/kopyalama/yapıştırma zorlaması için tüm WebView'ları yönetilmeyen olarak ele alır. Bkz . Web içeriğini görüntüleme. Isteğe bağlı. Varsayılan değer HAYıR'dır.
WebViewHandledURLSchemes Dize dizisi Uygulamanın WebView'u tarafından işlenen URL düzenleri. WebView'unuz bağlantıları veya JavaScript gezintiyi işlerse gereklidir.
DocumentBrowserFileCachePath Dize kullanıyorsanız UIDocumentBrowserViewController, şifresi çözülen yönetilen dosyalar için bir yol (uygulama giriş dizinine göre) ayarlayın. Isteğe bağlı. varsayılan olarak ayarlanır /Documents/.
VerboseLoggingEnabled Boole Ayrıntılı günlüğe kaydetmeyi etkinleştirir. Isteğe bağlı. Varsayılan değer HAYıR'dır.
FinishLaunchingAtStartup Boole kullanırken [BGTaskScheduler registerForTaskWithIdentifier:]gereklidir; EVET olmalıdır. Isteğe bağlı. Varsayılan değer HAYıR'dır.
ValuesToScrubFromLogging Dize dizisi Günlüklerden kaldırılması gereken Uygulama Yapılandırması değerleri. üzerinden de ayarlanabilir valuesToScrubFromLoggingIntuneMAMSettings. Isteğe bağlı.

Uygulama koruma ilkesini alma

Genel bakış

Intune uygulama koruma ilkesi almak için uygulamaların Intune MAM hizmetiyle bir kayıt isteği başlatması gerekir. Uygulamalar, cihaz kaydıyla veya cihaz kaydı olmadan uygulama koruma ilkesini almak için Intune yönetim merkezinde yapılandırılabilir. Mobil Uygulama Yönetimi (MAM), uygulamaların Intune mobil cihaz yönetimine (MDM) kaydedilmesine gerek kalmadan Intune tarafından yönetilmesine olanak tanır. her iki durumda da ilkeyi almak için Intune MAM hizmetine kaydolmak gerekir.

Önemli

iOS için Intune Uygulama SDK'sı, şifreleme uygulama koruma ilkeleri tarafından etkinleştirildiğinde 256 bit şifreleme anahtarlarını kullanır. Korumalı veri paylaşımına izin vermek için tüm uygulamaların geçerli bir SDK sürümüne sahip olması gerekir.

ADAL veya MSAL kullanan uygulamalar

Not

Azure AD Kimlik Doğrulama Kitaplığı (ADAL) ve Azure AD Graph API kullanım dışıdır. Daha fazla bilgi için bkz. Uygulamalarınızı Microsoft Kimlik Doğrulama Kitaplığı (MSAL) ve Microsoft Graph API kullanacak şekilde güncelleştirme.

Kullanıcı başarıyla doğrulandıktan sonra MSAL kullanan uygulamalar örnekte yöntemini IntuneMAMEnrollmentManager çağırmalıdırregisterAndEnrollAccountId:

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

Başarılı oturum açmada MSAL, sonucu MSALResult nesnesine geri gönderir. API için accountId parametresi olarak MSALResult içinde tenantProfile.identifier kullanın.

yöntemini çağırarak registerAndEnrollAccountId SDK, kullanıcı hesabını kaydeder ve bu hesap adına uygulamayı kaydetmeye çalışır. Kayıt herhangi bir nedenle başarısız olursa SDK, kaydı 24 saat sonra otomatik olarak yeniden denenir. Hata ayıklama amacıyla uygulama, herhangi bir kayıt isteğinin sonuçları hakkında bir temsilci aracılığıyla bildirim alabilir.

Bu API çağrıldıktan sonra uygulama normal şekilde çalışmaya devam edebilir. Kayıt başarılı olursa SDK, kullanıcıya uygulamanın yeniden başlatılması gerektiğini bildirir. Bu sırada kullanıcı uygulamayı hemen yeniden başlatabilir.

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

ADAL veya MSAL kullanmayan uygulamalar

ADAL veya MSAL kullanarak kullanıcıda oturum açmayan uygulamalar, SDK'nın bu kimlik doğrulamasını işlemesini sağlamak için API'yi çağırarak Intune MAM hizmetinden uygulama koruma ilkesi almaya devam edebilir. Uygulamalar, Microsoft Entra ID olan bir kullanıcının kimliğini doğrulamamış olsalar da verilerin korunmasına yardımcı olmak için uygulama koruma ilkesini almaları gerektiğinde bu tekniği kullanmalıdır. Uygulama oturum açma için başka bir kimlik doğrulama hizmeti kullanılıyorsa veya uygulamanın oturum açmayı hiç desteklemediği bir örnektir. Bunu yapmak için uygulama örnekte yöntemini IntuneMAMEnrollmentManager çağırabilirloginAndEnrollAccount:

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

Bu yöntemi çağırarak SDK, mevcut belirteç bulunamazsa kullanıcıdan kimlik bilgilerini ister. Ardından SDK, sağlanan kullanıcı hesabı adına uygulamayı Intune MAM hizmetine kaydetmeye çalışır. yöntemi kimlik olarak "nil" ile çağrılabilir. Bu durumda SDK, cihazdaki mevcut yönetilen kullanıcıyla (MDM ise) kaydedilir veya mevcut kullanıcı bulunamazsa kullanıcıdan bir kullanıcı adı ister.

Kayıt başarısız olursa uygulama, hatanın ayrıntılarına bağlı olarak gelecekte bu API'yi yeniden çağırmayı düşünmelidir. Uygulama, herhangi bir kayıt isteğinin sonuçları hakkında bir temsilci aracılığıyla bildirim alabilir.

Bu API çağrıldıktan sonra uygulama normal şekilde çalışmaya devam edebilir. Kayıt başarılı olursa SDK, kullanıcıya uygulamanın yeniden başlatılması gerektiğini bildirir. Uygulama yönetildikten sonra, Microsoft Entra nesne kimliği değerinin IntuneMAMEnrollmentManageriçinde kullanılarak enrolledAccountId sorgulanması gerekir. Bunu, uygulamanın bu kayıtlı hesap için kullandığı tüm MAM SDK API'leri için kullanın.

Örneğin:

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

Intune başlatma sırasında kimlik doğrulaması ve kaydı işlemesine izin ver

uygulamanızın başlatılması tamamlanmadan önce Intune SDK'sının ADAL/MSAL ile tüm kimlik doğrulamasını ve kaydı işlemesini istiyorsanız ve uygulamanız her zaman uygulama koruma ilkeleri gerektiriyorsa API kullanmanız loginAndEnrollAccount gerekmez. Uygulamanın Info.plist dosyasındaki IntuneMAMSettings sözlüğünde aşağıdaki ayarları EVET olarak ayarlayabilirsiniz.

Ayar Tür Tanım
AutoEnrollOnLaunch Boole Mevcut bir yönetilen kimlik algılanırsa ve henüz yapmadıysa uygulamanın başlatma sırasında otomatik olarak kaydolmaya çalışıp çalışmayacağını belirtir. Varsayılan değer HAYıR'dır.

Not: ADAL/MSAL önbelleğinde yönetilen kimlik bulunamazsa veya kimlik için geçerli bir belirteç yoksa, uygulama da EVET olarak ayarlanmadığı MAMPolicyRequired sürece kayıt girişimi kimlik bilgileri istenmeden sessizce başarısız olur.
MAMPolicyRequired Boole Uygulamanın Intune uygulama koruma ilkesi yoksa uygulamanın başlatılmasının engellenip engellenmeyeceğini belirtir. Varsayılan değer HAYıR'dır.

Not: Uygulamalar evet olarak ayarlanmış App Store MAMPolicyRequired gönderilemiyor. Evet olarak ayarlanırkenMAMPolicyRequired, AutoEnrollOnLaunchevet olarak da ayarlanmalıdır.

Uygulamanız için bu seçeneği belirlerseniz, kaydolduktan sonra uygulamanızı yeniden başlatmayı işlemeniz gerekmez.

Kullanıcı hesaplarının kaydını kaldırma

Bir kullanıcı bir uygulamanın oturumunu kapatmadan önce, uygulamanın kullanıcının SDK kaydını kaldırması gerekir. Bu işlem aşağıdakilerden emin olunmasını sağlar:

  1. Kullanıcının hesabı için kayıt yeniden denemeleri artık gerçekleşmez.

  2. Uygulama koruması ilkesi kaldırılır.

  3. Uygulama seçmeli silme başlatırsa şirket verileri silinir (isteğe bağlı).

Kullanıcı oturumu kapatmadan önce uygulamanın örnekte aşağıdaki yöntemi çağırması IntuneMAMEnrollmentManager gerekir:

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

Kullanıcı hesabının Microsoft Entra belirteçleri silinmeden önce bu yöntem çağrılmalıdır. SDK, kullanıcı adına Intune MAM hizmetine belirli isteklerde bulunmak için kullanıcı hesabının Microsoft Entra belirteçlerine ihtiyaç duyar.

Uygulama kullanıcının şirket verilerini kendi kendine silerse, doWipe bayrak false olarak ayarlanabilir. Aksi takdirde, uygulama SDK'nın seçmeli silme başlatmasını sağlayabilir. Bu eylem, uygulamanın seçmeli temizleme temsilcisine yapılan bir çağrıya neden olur.

Örneğin:

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

Durum, sonuç ve hata ayıklama bildirimleri

Uygulama, Intune MAM hizmetine yönelik aşağıdaki istekler hakkında durum, sonuç ve hata ayıklama bildirimleri alabilir:

  • Kayıt istekleri
  • İlke güncelleştirme istekleri
  • Kayıt kaldırma istekleri

Bildirimler, içinde IntuneMAMEnrollmentDelegate.htemsilci yöntemleri aracılığıyla sunulur:

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

Bu temsilci yöntemleri aşağıdaki bilgilere sahip bir IntuneMAMEnrollmentStatus nesne döndürür:

  • İstekle ilişkilendirilmiş hesabın accountId (Nesne Kimliği)
  • İstekle ilişkilendirilmiş hesabın kimliği (UPN)
  • İsteğin sonucunu gösteren durum kodu
  • Durum kodunun açıklamasını içeren bir hata dizesi
  • Bir NSError nesne. Bu nesne, döndürülebilecek belirli durum kodlarıyla birlikte içinde IntuneMAMEnrollmentStatus.htanımlanır.

Örnek kod

Temsilci yöntemlerinin örnek uygulamaları aşağıda verilmiştir:

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

Uygulamayı yeniden başlatma

Bir uygulama MAM ilkelerini ilk kez aldığında, gerekli kancaları uygulamak için yeniden başlatılması gerekir. Uygulamaya yeniden başlatma yapılması gerektiğini bildirmek için SDK içinde bir temsilci yöntemi IntuneMAMPolicyDelegate.hsağlar.

 - (BOOL) restartApplication

Bu yöntemin dönüş değeri SDK'ya uygulamanın gerekli yeniden başlatmayı işlemesi gerekip gerekmediğini bildirir:

  • True döndürülürse uygulamanın yeniden başlatmayı işlemesi gerekir.

  • False döndürülürse, SDK bu yöntem döndürdükten sonra uygulamayı yeniden başlatır. SDK hemen kullanıcıya uygulamayı yeniden başlatmasını söyleyen bir iletişim kutusu gösterir.

Not

.NET MAUI uygulamaları yeniden başlatma gerektirmez.

Çıkış Ölçütleri

Derleme eklentisini yapılandırdıktan veya komut satırı aracını derleme işleminizle tümleştirdikten sonra, başarıyla çalıştığını doğrulayın:

  • Derlemenizin başarıyla derlendiğinden ve derlendiğinden emin olun.
  • Derlenmiş uygulamanızı başlatın, Uygulama Koruma İlkesi ile hedeflenmemiş bir Microsoft Entra kullanıcıyla oturum açın ve uygulamanın beklendiği gibi çalıştığını onaylayın.
  • Oturumu kapatın ve bu testi Uygulama Koruma İlkesi ile hedeflenen bir Microsoft Entra kullanıcıyla tekrarlayın ve uygulamanın artık Intune tarafından yönetildiğini ve yeniden başlatıldığını onaylayın.

Tümleştirmenin bu noktasında uygulamanız artık Uygulama Koruma İlkesi'ni alabilir ve zorunlu kılabilir. Tümleştirmeyi doğrulamak için aşağıdaki testleri yürütür.

İlke Uygulaması Testi

İlke uygulamasının uygulamanızdaki tam son kullanıcı deneyimini öğrenmek için önce aşağıdaki testi yürütebilirsiniz:

  1. Microsoft Intune yönetim merkezinde bir iOS Uygulama Koruma İlkesi oluşturun. Bu test için ilkeyi yapılandırın:
    • Erişim Gereksinimleri'nin altında varsayılan ayarları değiştirmeyin. Özellikle, "Erişim için PIN" "Gerekli" olmalıdır.
  2. Uygulama Koruma İlkesi'nin uygulamanıza hedeflendiğinden emin olun. İlke oluşturma sihirbazında uygulamanın paket kimliğini el ile eklemeniz gerekebilir.
  3. Uygulama Koruma İlkesi'ni test hesabınızı içeren bir kullanıcı grubuna atayın.
  4. Uygulamanızı yükleyin.
  5. Uygulama Koruma İlkesi ile hedeflenen test hesabınızla uygulamanızda oturum açın.
  6. yönetilen Intune ekran istendiğini onaylayın ve istemin uygulamayı yeniden başlatdığını onaylayın. Bu ekran, SDK'nın bu hesap için ilkeyi başarıyla aldığını gösterir.
  7. Uygulama PIN'i ayarlamanız istendiğinde BIR PIN oluşturun.
  8. Yönetilen hesabı uygulamanızın dışında günlüğe kaydetme.
  9. Uygulamanızda gezinin ve oturum açmadan uygulamanızın mümkünse beklendiği gibi çalıştığını onaylayın.

Bu adım listesi, uygulamanızın hesabı düzgün şekilde kaydettirdiğini, kimlik doğrulama geri aramasını kaydedip hesabın kaydını kaldırdığını onaylamak için bir *en düşük- testtir. Diğer Uygulama Koruma İlkesi ayarlarının uygulamanızın davranışını nasıl değiştirişini daha kapsamlı bir şekilde doğrulamak için aşağıdaki testleri yürütebilirsiniz.

Sonraki Adımlar

Tüm Çıkış Ölçütlerini tamamladıktan sonra 4. Aşama: Uygulama katılım özellikleri'ne geçin.