Microsoft Intune Uygulama SDK'sı Xamarin Bağlamaları
Önemli
Xamarin.Forms, .NET Çok Platformlu Uygulama Kullanıcı Arabirimine (MAUI) dönüştü. Mevcut Xamarin projeleri .NET MAUI'ye geçirilmelidir. Xamarin projelerini .NET'e yükseltme hakkında daha fazla bilgi için Xamarin'den .NET'e yükseltme & .NET MAUI belgelerine bakın.
Xamarin.Forms ve Intune Uygulama SDK'sı Xamarin Bağlamaları dahil olmak üzere tüm Xamarin SDK'ları için Xamarin desteği 1 Mayıs 2024 itibarıyla sona erdi. Android ve iOS platformlarında Intune desteği için bkz. .NET MAUI için Intune Uygulama SDK'sı -MAUI.iOS için Android ve Microsoft Intune Uygulama SDK'sı.
Genel bakış
Intune Uygulama SDK'sı Xamarin Bağlamaları, Xamarin ile oluşturulan iOS ve Android uygulamalarında Intune uygulama koruma ilkesini etkinleştirir. Bağlamalar, geliştiricilerin Xamarin tabanlı uygulamalarına Intune uygulama koruma özelliklerini kolayca eklemesine olanak sağlar.
Microsoft Intune Uygulama SDK'sı Xamarin Bağlamaları, Xamarin ile geliştirilen uygulamalarınıza Intune uygulama koruma ilkelerini (APP veya MAM ilkeleri olarak da bilinir) eklemenizi sağlar. MAM özellikli bir uygulama, Intune Uygulama SDK'sı ile tümleştirilmiş bir uygulamadır. BT yöneticileri, Intune uygulamayı etkin bir şekilde yönettiğinde mobil uygulamanıza uygulama koruma ilkeleri dağıtabilir.
Neler desteklenir?
Geliştirici makineleri
- Windows (Visual Studio sürüm 15.7+)
- macOS
Mobil uygulama platformları
- Android
- iOS
Intune Mobil Uygulama Yönetimi senaryoları
- Intune MAM
- Intune MDM'ye kayıtlı cihazlar
- Üçüncü taraf EMM'ye kayıtlı cihazlar
Intune Uygulama SDK'sı Xamarin Bağlamaları ile oluşturulan Xamarin uygulamaları artık hem Intune mobil cihaz yönetimi (MDM) kayıtlı cihazlarda hem de kaydı kaldırılmış cihazlarda Intune uygulama koruma ilkelerini alabilir.
Önkoşullar
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. Intune Uygulama SDK'sı Xamarin Bağlamalarını indirip kullanarak bu lisans koşullarını kabul etmiş olursunuz. Bunları kabul etmediyseniz yazılımı kullanmayın.
Intune SDK'sı, uygulamaların Microsoft Entra Id ile yapılandırılmasını gerektiren kimlik doğrulaması ve koşullu başlatma senaryoları için Microsoft Kimlik Doğrulama Kitaplığı'na (MSAL) dayanır.
Uygulamanız zaten MSAL kullanacak şekilde yapılandırılmışsa ve Microsoft Entra Id ile kimlik doğrulaması yapmak için kullanılan kendi özel istemci kimliğine sahipse, Xamarin uygulamanıza Intune Mobil Uygulama Yönetimi (MAM) hizmeti için izin verme adımlarının izlendiğinden emin olun. Intune SDK'sını kullanmaya başlama kılavuzunun "Uygulamanıza Intune Mobil Uygulama Yönetimi hizmetine erişim izni verme" bölümündeki yönergeleri kullanın.
GüvenlikLe İlgili Dikkat Edilmesi Gerekenler
Olası kimlik sahtekarlığını, bilgilerin açığa çıkmasını ve ayrıcalık saldırılarının yükseltilmesini önlemek için:
- Xamarin uygulama geliştirme işleminin güvenli bir iş istasyonunda gerçekleştirildiğinden emin olun.
- Bağlamaların geçerli bir Microsoft kaynağından olduğundan emin olun:
- MS Intune Uygulama SDK'sı NuGet Profili
- Intune Uygulama SDK'sı Xamarin GitHub Deposu
- Projeniz için NuGet yapılandırmanızı imzalı, değiştirilmemiş NuGet paketlerine güvenecek şekilde yapılandırın. Daha fazla bilgi için bkz. imzalı paketleri yükleme .
- Xamarin uygulamasını içeren çıkış dizininin güvenliğini sağlayın. Çıkış için kullanıcı düzeyinde bir dizin kullanmayı göz önünde bulundurun.
iOS mobil uygulamanızda Intune uygulama koruma ilkelerini etkinleştirme
Önemli
Intune düzenli olarak Intune Uygulama SDK'sına güncelleştirmeler yayınlar. Güncelleştirmeler için Intune Uygulama SDK'sı Xamarin Bağlamaları'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.
Microsoft.Intune.MAM.Xamarin.iOS NuGet paketini Xamarin.iOS projenize ekleyin.
Intune Uygulama SDK'sını bir iOS mobil uygulamasıyla tümleştirmek için gereken genel adımları izleyin. iOS için Intune Uygulama SDK'sı Geliştirici Kılavuzu'ndaki tümleştirme yönergelerinin 3. adımıyla başlayabilirsiniz. Bu araç Microsoft.Intune.MAM.Xamarin.iOS paketine dahil olduğundan ve derleme zamanında otomatik olarak çalıştırılacağından, IntuneMAMConfigurator'ı çalıştırmanın bu bölümündeki son adımı atlayabilirsiniz. Önemli: Visual Studio'da bir uygulama için anahtarlık paylaşımını etkinleştirmek Xcode'dan biraz farklıdır. Uygulamanın Yetkilendirmeler plist'ini açın ve "Anahtar Zincirini Etkinleştir" seçeneğinin etkinleştirildiğinden ve ilgili anahtar zinciri paylaşım gruplarının bu bölüme eklendiğinden emin olun. Ardından, tüm uygun Yapılandırma/Platform birleşimleri için projenin "iOS Paket İmzalama" seçeneklerinin "Özel Yetkilendirmeler" alanında Yetkilendirmeler plist'inin belirtildiğinden emin olun.
Bağlamalar eklendikten ve uygulama düzgün yapılandırıldıktan sonra uygulamanız Intune SDK'sının API'lerini kullanmaya başlayabilir. Bunu yapmak için aşağıdaki ad alanını eklemeniz gerekir:
using Microsoft.Intune.MAM;
Uygulama koruma ilkelerini almaya başlamak için uygulamanızın Intune MAM hizmetine kaydolması gerekir. Uygulamanız kullanıcıların kimliğini doğrulamak için Microsoft Kimlik Doğrulama Kitaplığı'nı (MSAL) kullanmıyorsa ve kimlik doğrulamasını Intune SDK'sının işlemesini istiyorsanız, uygulamanız kullanıcının UPN'sini IntuneMAMEnrollmentManager'ın LoginAndEnrollAccount yöntemine sağlamalıdır:
IntuneMAMEnrollmentManager.Instance.LoginAndEnrollAccount([NullAllowed] string identity);
Arama sırasında kullanıcının UPN'i bilinmiyorsa uygulamalar null olarak geçebilir. Bu durumda, kullanıcılardan hem e-posta adreslerini hem de parolalarını girmeleri istenir.
Uygulamanız kullanıcıların kimliğini doğrulamak için zaten MSAL kullanıyorsa, uygulamanızla Intune SDK'sı arasında çoklu oturum açma (SSO) deneyimi yapılandırabilirsiniz. İlk olarak, Intune SDK'sı tarafından kullanılan varsayılan Microsoft Entra ayarlarını uygulamanızın ayarlarıyla geçersiz kılmanız gerekir. Bunu, iOS için Intune Uygulama SDK'sı Geliştirici Kılavuzu'nda belirtildiği gibi uygulamanın Info.plist dosyasındaki IntuneMAMSettings sözlüğü aracılığıyla veya IntuneMAMSettings sınıfının Microsoft Entra Id geçersiz kılma özellikleri aracılığıyla kod içinde yapabilirsiniz. MSAL ayarları statik olan uygulamalar için Info.plist yaklaşımı önerilirken, çalışma zamanında bu değerleri belirleyen uygulamalar için geçersiz kılma özellikleri önerilir. Tüm SSO ayarları yapılandırıldıktan sonra uygulamanız, başarıyla kimlik doğrulamasından geçtikten sonra kullanıcının UPN'sini IntuneMAMEnrollmentManager'ın RegisterAndEnrollAccount yöntemine sağlamalıdır:
IntuneMAMEnrollmentManager.Instance.RegisterAndEnrollAccount(string identity);
Uygulamalar, IntuneMAMEnrollmentDelegate alt sınıfında EnrollmentRequestWithStatus yöntemini uygulayarak ve IntuneMAMEnrollmentManager'ın Delegate özelliğini bu sınıfın bir örneğine ayarlayarak kayıt girişiminin sonucunu belirleyebilir.
Başarılı bir kayıt sonrasında, uygulamalar aşağıdaki özelliği sorgulayarak kayıtlı hesabın UPN'sini (önceden bilinmiyorsa) belirleyebilir:
string enrolledAccount = IntuneMAMEnrollmentManager.Instance.EnrolledAccount;
Android mobil uygulamanızda Intune uygulama koruma ilkelerini etkinleştirme
-
Microsoft.Intune.MAM.Xamarin.Android NuGet paketini Xamarin.Android projenize ekleyin.
- Xamarin.Forms uygulaması için Microsoft.Intune.MAM.Remapper.Tasks NuGet paketini de Xamarin.Android projenize ekleyin.
- Ek ayrıntılar için bu belgeye başvururken Intune Uygulama SDK'sını bir Android mobil uygulamasıyla tümleştirmek için gereken genel adımları izleyin.
Xamarin.Android tümleştirmesi
Intune Uygulama SDK'sını tümleştirmeye yönelik eksiksiz bir genel bakış , Android için Microsoft Intune Uygulama SDK'sı geliştirici kılavuzunda bulunabilir. Kılavuzu okurken ve Intune Uygulama SDK'sını Xamarin uygulamanızla tümleştirirken, aşağıdaki bölümler Java'da geliştirilen yerel bir Android uygulaması ile C# dilinde geliştirilen bir Xamarin uygulaması için uygulama arasındaki farkları vurgulamak için tasarlanmıştır. Bu bölümler tamamlayıcı olarak ele alınmalıdır ve kılavuzu tamamen okumanın yerini alamaz.
Yeniden Çek
1.4428.1 sürümünden Microsoft.Intune.MAM.Remapper
başlayarak, paket BIR Xamarin.Android uygulamasına MAM sınıfı, yöntemi ve sistem hizmetleri değiştirme işlemlerini gerçekleştirmek için derleme araçları olarak eklenebilir. Remapper dahil edilirse, Yeniden Adlandırılmış Yöntemler ve MAM Uygulaması bölümlerinin MAM eşdeğeri değiştirme bölümleri, uygulama oluşturulduğunda otomatik olarak gerçekleştirilir.
Bir sınıfı Remapper tarafından MAM-ification'ın dışında tutmak için aşağıdaki özellik proje .csproj
dosyanıza eklenebilir.
<PropertyGroup>
<ExcludeClasses>Semicolon separated list of relative class paths to exclude from MAM-ification</ExcludeClasses>
</PropertyGroup>
Not
Remapper şu anda Xamarin.Android uygulamalarında hata ayıklamayı engelliyor. Uygulamanızda hata ayıklamak için el ile tümleştirme önerilir.
Yeniden Adlandırılmış Yöntemler
Çoğu durumda, Android sınıfında kullanılabilen bir yöntem MAM değiştirme sınıfında son olarak işaretlenmiştir. Bu durumda, MAM değiştirme sınıfı bunun yerine geçersiz kılmanız gereken benzer adlandırılmış bir yöntem (ile MAM
soneki) sağlar. Örneğin, geçersiz kılmak OnCreate()
ve çağırmak base.OnCreate()
yerine ' den MAMActivity
türetilirken geçersiz Activity
kılmalı OnMAMCreate()
ve çağrısı base.OnMAMCreate()
yapmalıdır.
MAM Uygulaması
Uygulamanızın bir sınıf tanımlaması Android.App.Application
gerekir. MAM el ile tümleştirildiğinde, öğesinin devralması MAMApplication
gerekir. Alt sınıfınızın özniteliğiyle [Application]
düzgün bir şekilde dekore edilmiş olduğundan ve oluşturucuyu geçersiz kılacağından (IntPtr, JniHandleOwnership)
emin olun.
[Application]
class TaskrApp : MAMApplication
{
public TaskrApp(IntPtr handle, JniHandleOwnership transfer)
: base(handle, transfer) { }
Not
MAM Xamarin bağlamalarıyla ilgili bir sorun, Hata Ayıklama modunda dağıtıldığında uygulamanın kilitlenmesine neden olabilir. Geçici bir çözüm olarak, Debuggable=false
özniteliği sınıfa Application
eklenmelidir ve android:debuggable="true"
bayrağı el ile ayarlandıysa bildirimden kaldırılmalıdır.
Uygulama katılımı gerektiren özellikleri etkinleştirme
Örnek: Uygulama için PIN gerekip gerekmediğini belirleme
MAMPolicyManager.GetPolicy(currentActivity).IsPinRequired;
Örnek: Birincil Intune kullanıcısını belirleme
IMAMUserInfo info = MAMComponents.Get<IMAMUserInfo>();
return info?.PrimaryUser;
Örnek: Cihaza veya bulut depolamaya kaydetmeye izin verilmediğini belirleme
MAMPolicyManager.GetPolicy(currentActivity).GetIsSaveToLocationAllowed(SaveLocation service, String username);
SDK'dan bildirimlere kaydolma
Uygulamanızın bir MAMNotificationReceiver
oluşturup ile MAMNotificationReceiverRegistry
kaydederek SDK'dan gelen bildirimlere kaydolması gerekir. Bu, aşağıdaki örnekte gösterildiği gibi alıcı ve içinde App.OnMAMCreate
istenen bildirim türü sağlanarak gerçekleştirilir:
public override void OnMAMCreate()
{
// Register the notification receivers
IMAMNotificationReceiverRegistry registry = MAMComponents.Get<IMAMNotificationReceiverRegistry>();
foreach (MAMNotificationType notification in MAMNotificationType.Values())
{
registry.RegisterReceiver(new ToastNotificationReceiver(this), notification);
}
...
MAM Kayıt Yöneticisi
IMAMEnrollmentManager mgr = MAMComponents.Get<IMAMEnrollmentManager>();
Xamarin.Forms tümleştirmesi
Uygulamalar için Xamarin.Forms
paket, Microsoft.Intune.MAM.Remapper
yaygın olarak kullanılan Xamarin.Forms
sınıfların sınıf hiyerarşisine sınıf ekleyerek MAM
MAM sınıf değişimini otomatik olarak gerçekleştirir.
Not
Xamarin.Forms tümleştirmesi, yukarıda ayrıntılarıyla belirtilen Xamarin.Android tümleştirmesine ek olarak yapılmalıdır. Remapper, Xamarin.Forms uygulamaları için farklı davranır, bu nedenle el ile MAM değiştirme işlemleri yine de yapılmalıdır.
Remapper projenize eklendikten sonra MAM eşdeğeri değiştirmeleri gerçekleştirmeniz gerekir. Örneğin, FormsAppCompatActivity
ve FormsApplicationActivity
uygulaması tarafından sağlanan geçersiz kılmalar OnCreate
uygulamanızda kullanılmaya devam edebilir ve OnResume
bunların yerine SıRAsıyla MAM eşdeğerleri OnMAMCreate
kullanılır OnMAMResume
.
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override void OnMAMCreate(Bundle savedInstanceState)
{
base.OnMAMCreate(savedInstanceState);
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
LoadApplication(new App());
}
Değiştirmeler yapılmazsa, değişiklikleri yapana kadar aşağıdaki derleme hatalarıyla karşılaşabilirsiniz:
-
Derleyici Hatası CS0239. Bu hata genellikle bu biçimde
'MainActivity.OnCreate(Bundle)': cannot override inherited member 'MAMAppCompatActivityBase.OnCreate(Bundle)' because it is sealed
görülür. Bu beklenen bir durumdur çünkü Remapper Xamarin sınıflarının devralma işlemini değiştirdiğinde bazı işlevler yapılırsealed
ve geçersiz kılmaya yeni bir MAM değişkeni eklenir. -
Derleyici Hatası CS0507: Bu hata bu formda
'MyActivity.OnRequestPermissionsResult()' cannot change access modifiers when overriding 'public' inherited member ...
yaygın olarak görülür. Remapper bazı Xamarin sınıflarının devralma işlemini değiştirdiğinde, bazı üye işlevleri olarakpublic
değiştirilir. Bu işlevlerden herhangi birini geçersiz kılarsanız, bu geçersiz kılmaların erişim değiştiricilerinipublic
de değiştirmeniz gerekir.
Not
Remapper, Visual Studio'da IntelliSense otomatik tamamlama için kullanılan bir bağımlılığı yeniden yazar. Bu nedenle, değişiklikleri doğru şekilde tanımak için IntelliSense için Remapper eklendiğinde projeyi yeniden yüklemeniz ve yeniden oluşturmanız gerekebilir.
Sorun giderme
- Başlatmada uygulamanızda boş, beyaz bir ekranla karşılaşırsanız, gezinti çağrılarını ana iş parçacığında yürütülmeye zorlamanız gerekebilir.
- Intune SDK Xamarin Bağlamaları, MvvmCross ile Intune MAM sınıfları arasındaki çakışmalar nedeniyle MvvmCross gibi platformlar arası bir çerçeve kullanan uygulamaları desteklemez. Bazı müşteriler uygulamalarını düz Xamarin.Forms'a taşıdıktan sonra tümleştirme konusunda başarılı olmuş olsa da, MvvmCross kullanan uygulama geliştiricileri için açık rehberlik veya eklentiler sağlamayız.
Şirket Portalı uygulaması
Intune SDK Xamarin Bağlamaları, uygulama koruma ilkelerini etkinleştirmek için cihazda Şirket Portalı Android uygulamasının varlığına bağlıdır. Şirket Portalı, Intune hizmetinden uygulama koruma ilkelerini alır. Uygulama başlatıldığında, şirket portalından bu ilkeyi zorlamak için ilke ve kod yükler. Kullanıcının oturum açması gerekmez.
Not
Şirket Portalı uygulaması Android cihazında olmadığında, Intune tarafından yönetilen bir uygulama, Intune uygulama koruma ilkelerini desteklemeyen normal bir uygulamayla aynı şekilde davranır.
Cihaz kaydı olmadan uygulama koruması için kullanıcının Şirket Portalı uygulamasını kullanarak cihazı kaydetmesi gerekmez.
Destek
Kuruluşunuz mevcut bir Intune müşterisiyse lütfen Microsoft destek temsilcinizle birlikte çalışarak bir destek bileti açın ve GitHub sorunları sayfasında bir sorun oluşturun. En kısa sürede yardımcı olacağız.