powiązania Xamarin zestawu SDK aplikacji Microsoft Intune

Uwaga

Bieżące powiązania platformy Xamarin dla platformy Android obsługują tylko aplikacje przeznaczone dla systemów Android 9.0 i niższych oraz Xamarin Forms 4.4 i nowsze. Firma Microsoft pracuje nad ulepszaniem obsługi nowszych wersji w systemie Android, zapewniając obsługę Intune na platformie .NET MAUI. Wersja beta dla obsługi interfejsu MAUI platformy .NET jest teraz dostępna. Aby uzyskać więcej informacji, zobacz zestaw SDK aplikacji Intune dla programu .NET MAUI — Android. Aby uzyskać obsługę interfejsu MAUI platformy .NET w systemie iOS, zobacz Intune App SDK for .NET MAUI — iOS. Zobacz Zasady pomocy technicznej platformy Xamarin i Migrowanie aplikacji z platformy Xamarin.Forms, aby uzyskać więcej informacji na temat obsługi platformy Xamarin i migrowania aplikacji z platformy Xamarin Forms do środowiska .NET MAUI.

Możesz najpierw przeczytać artykuł Wprowadzenie do zestawu SDK aplikacji Intune, w którym wyjaśniono, jak przygotować się do integracji na każdej obsługiwanej platformie.

Omówienie

Powiązania Xamarin zestawu SDK aplikacji Intune umożliwiają Intune zasad ochrony aplikacji w aplikacjach dla systemów iOS i Android utworzonych za pomocą platformy Xamarin. Powiązania umożliwiają deweloperom łatwe tworzenie Intune funkcji ochrony aplikacji w aplikacji opartej na platformie Xamarin.

Powiązania zestawu Xamarin zestawu Microsoft Intune App SDK umożliwiają dołączanie Intune zasad ochrony aplikacji (znanych również jako zasady aplikacji lub zarządzania aplikacjami mobilnymi) do aplikacji opracowanych za pomocą platformy Xamarin. Aplikacja z obsługą zarządzania aplikacjami mobilnymi jest zintegrowana z zestawem Intune App SDK. Administratorzy IT mogą wdrażać zasady ochrony aplikacji w aplikacji mobilnej, gdy Intune aktywnie zarządza aplikacją.

Co jest obsługiwane?

Maszyny deweloperskie

  • Windows (Visual Studio w wersji 15.7 lub nowszej)
  • macOS

Platformy aplikacji mobilnych

  • Android
  • iOS

Intune scenariusze zarządzania aplikacjami mobilnymi

  • Intune MAM
  • Intune urządzeń zarejestrowanych w rozwiązaniu MDM
  • Urządzenia zarejestrowane w programie EMM innej firmy

Aplikacje platformy Xamarin utworzone przy użyciu powiązań Xamarin zestawu Intune App SDK mogą teraz odbierać zasady ochrony aplikacji Intune zarówno na urządzeniach zarejestrowanych Intune zarządzania urządzeniami przenośnymi (MDM), jak i urządzeniach niezarejestrowanych.

Wymagania wstępne

Przejrzyj postanowienia licencyjne. Drukuj i zachowaj kopię postanowień licencyjnych dotyczących rekordów. Pobierając i korzystając z powiązań Xamarin zestawu Intune App SDK, wyrażasz zgodę na takie postanowienia licencyjne. Jeśli ich nie akceptujesz, nie używaj oprogramowania.

Zestaw SDK Intune opiera się na bibliotece uwierzytelniania firmy Microsoft (MSAL) na potrzeby scenariuszy uwierzytelniania i uruchamiania warunkowego, które wymagają skonfigurowania aplikacji przy użyciu Tożsamość Microsoft Entra.

Jeśli aplikacja jest już skonfigurowana do korzystania z biblioteki MSAL i ma własny niestandardowy identyfikator klienta używany do uwierzytelniania za pomocą Tożsamość Microsoft Entra, upewnij się, że wykonano kroki udzielania aplikacji platformy Xamarin uprawnień do usługi zarządzania aplikacjami mobilnymi (MAM) Intune. Skorzystaj z instrukcji zawartych w sekcji "Udzielanie aplikacji dostępu do usługi zarządzania aplikacjami mobilnymi Intune" w przewodniku rozpoczynania pracy z zestawem SDK Intune.

Zagadnienia dotyczące zabezpieczeń

Aby zapobiec potencjalnym fałszowaniu, ujawnieniu informacji i atakom na podniesienie uprawnień:

Włączanie Intune zasad ochrony aplikacji w aplikacji mobilnej systemu iOS

Ważna

Intune regularnie publikuje aktualizacje zestawu SDK aplikacji Intune. Regularnie sprawdzaj powiązania Xamarin zestawu Intune App SDK pod kątem aktualizacji i dołączaj je do cyklu tworzenia oprogramowania, aby upewnić się, że aplikacje obsługują najnowsze ustawienia zasad ochrony aplikacji.

  1. Dodaj plik Microsoft.Intune. MAM. Pakiet NuGet platformy Xamarin.iOS do projektu Xamarin.iOS.

  2. Wykonaj ogólne kroki wymagane do zintegrowania zestawu Intune App SDK z aplikacją mobilną systemu iOS. Krok 3 instrukcji integracji można rozpocząć od przewodnika dla deweloperów zestawu Intune App SDK dla systemu iOS. Możesz pominąć ostatni krok w tej sekcji uruchamiania narzędzia IntuneMAMConfigurator, ponieważ to narzędzie jest zawarte w firmie Microsoft. Intune. MAM. Pakiet Xamarin.iOS i będzie uruchamiany automatycznie w czasie kompilacji. Ważne: Włączanie udostępniania łańcucha kluczy dla aplikacji w programie Visual Studio różni się nieco od środowiska Xcode. Otwórz plist Uprawnienia aplikacji i upewnij się, że opcja "Włącz pęku kluczy" jest włączona, a odpowiednie grupy udostępniania łańcucha kluczy zostaną dodane w tej sekcji. Następnie upewnij się, że pole Uprawnienia jest określone w polu "Uprawnienia niestandardowe" opcji "Podpisywanie pakietów systemu iOS" projektu dla wszystkich odpowiednich kombinacji konfiguracji/platformy.

  3. Po dodaniu powiązań i prawidłowym skonfigurowaniu aplikacji aplikacja może zacząć korzystać z interfejsów API zestawu Intune SDK. W tym celu należy uwzględnić następującą przestrzeń nazw:

    using Microsoft.Intune.MAM;
    
  4. Aby rozpocząć odbieranie zasad ochrony aplikacji, aplikacja musi zostać zarejestrowana w usłudze Intune MAM. Jeśli aplikacja nie używa biblioteki microsoft authentication library (MSAL) do uwierzytelniania użytkowników i chcesz, aby zestaw SDK Intune obsługiwał uwierzytelnianie, aplikacja powinna udostępnić nazwę UPN użytkownika metodzie LoginAndEnrollAccount usługi IntuneMAMEnrollmentManager:

     IntuneMAMEnrollmentManager.Instance.LoginAndEnrollAccount([NullAllowed] string identity);
    

    Aplikacje mogą mieć wartość null, jeśli nazwa UPN użytkownika jest nieznana w momencie wywołania. W takim przypadku użytkownicy będą monitować o wprowadzenie zarówno adresu e-mail, jak i hasła.

    Jeśli aplikacja już używa biblioteki MSAL do uwierzytelniania użytkowników, możesz skonfigurować środowisko logowania jednokrotnego między aplikacją a zestawem SDK Intune. Najpierw należy zastąpić domyślne ustawienia Microsoft Entra używane przez zestaw SDK Intune z ustawieniami aplikacji. Można to zrobić za pośrednictwem słownika IntuneMAMSettings w pliku Info.plist aplikacji, jak wspomniano w przewodniku dla deweloperów zestawu SDK aplikacji Intune dla systemu iOS lub można to zrobić w kodzie za pośrednictwem Tożsamość Microsoft Entra zastąpić właściwości klasy IntuneMAMSettings. Podejście Info.plist jest zalecane w przypadku aplikacji, których ustawienia BIBLIOTEKI MSAL są statyczne, podczas gdy właściwości zastąpienia są zalecane dla aplikacji, które określają te wartości w czasie wykonywania. Po skonfigurowaniu wszystkich ustawień logowania jednokrotnego aplikacja powinna dostarczyć nazwę UPN użytkownika do metody RegisterAndEnrollAccount intuneMAMEnrollmentManager po pomyślnym uwierzytelnieniu:

    IntuneMAMEnrollmentManager.Instance.RegisterAndEnrollAccount(string identity);
    

    Aplikacje mogą określić wynik próby rejestracji, implementując metodę EnrollmentRequestWithStatus w podklasie intuneMAMEnrollmentDelegate i ustawiając właściwość Delegat intuneMAMEnrollmentManager na wystąpienie tej klasy.

    Po pomyślnej rejestracji aplikacje mogą określić nazwę UPN zarejestrowanego konta (jeśli wcześniej nieznane), wykonując zapytanie o następującą właściwość:

     string enrolledAccount = IntuneMAMEnrollmentManager.Instance.EnrolledAccount;
    

Przykładowe aplikacje

Przykładowe aplikacje wyróżniające funkcje zarządzania aplikacjami mobilnymi w aplikacjach platformy Xamarin.iOS są dostępne w witrynie GitHub.

Uwaga

Brak narzędzia remapper dla systemu iOS/iPadOS. Integracja z platformą Xamarin. Forms aplikacja powinna być taka sama jak w przypadku zwykłego projektu platformy Xamarin.iOS.

Włączanie zasad ochrony aplikacji Intune w aplikacji mobilnej systemu Android

  1. Dodaj plik Microsoft.Intune. MAM. Pakiet NuGet platformy Xamarin.Android do projektu Xamarin.Android.
    1. Dla platformy Xamarin. Forms aplikacji dodaj Intune Microsoft.Intune. MAM. Pakiet NuGet Remapper.Tasks również do projektu Xamarin.Android.
  2. Wykonaj ogólne kroki wymagane do zintegrowania zestawu Intune App SDK z aplikacją mobilną systemu Android, korzystając z tego dokumentu, aby uzyskać dodatkowe informacje.

Integracja platformy Xamarin.Android

Pełne omówienie integracji zestawu Intune App SDK można znaleźć w przewodniku dla deweloperów Microsoft Intune App SDK for Android. Podczas zapoznania się z przewodnikiem i zintegrowania zestawu Intune App SDK z aplikacją Xamarin poniższe sekcje mają na celu wyróżnienie różnic między implementacją natywnej aplikacji systemu Android opracowanej w języku Java a aplikacją Xamarin opracowaną w języku C#. Te sekcje powinny być traktowane jako uzupełniające i nie mogą służyć jako podstawa do czytania przewodnika w całości.

Remapper

Począwszy od wersji 1.4428.1, Microsoft.Intune.MAM.Remapper pakiet można dodać do aplikacji platformy Xamarin.Android jako narzędzie kompilacji w celu wykonania zamiany klas, metod i usług zarządzania aplikacjami mobilnymi. Jeśli pakiet Remapper zostanie uwzględniony, równoważne części zastępcze funkcji MAM w sekcjach Zmieniono nazwy metod i aplikacji MAM zostaną automatycznie wykonane podczas kompilowania aplikacji.

Aby wykluczyć klasę z funkcji MAM-ification przez program Remapper, w pliku projektów .csproj można dodać następującą właściwość.

  <PropertyGroup>
    <ExcludeClasses>Semicolon separated list of relative class paths to exclude from MAM-ification</ExcludeClasses>
  </PropertyGroup>

Uwaga

Program Remapper obecnie uniemożliwia debugowanie w aplikacjach platformy Xamarin.Android. Zaleca się ręczną integrację w celu debugowania aplikacji.

Zmieniono nazwy metod

W wielu przypadkach metoda dostępna w klasie systemu Android została oznaczona jako ostateczna w klasie zastępczej MAM. W takim przypadku klasa zamiany funkcji MAM udostępnia metodę o podobnej nazwie (sufiks z elementem MAM), którą należy zastąpić. Na przykład w przypadku korzystania z MAMActivityelementu , zamiast zastępowania i wywoływania OnCreate()base.OnCreate(), Activity należy zastąpić OnMAMCreate() i wywołać metodę base.OnMAMCreate().

Aplikacja MAM

Aplikacja musi zdefiniować klasę Android.App.Application . W przypadku ręcznej integracji zarządzania aplikacjami mobilnymi musi ona dziedziczyć z MAMApplicationprogramu . Upewnij się, że podklasa jest poprawnie ozdobiona atrybutem [Application] i zastępuje konstruktor (IntPtr, JniHandleOwnership) .

    [Application]
    class TaskrApp : MAMApplication
    {
    public TaskrApp(IntPtr handle, JniHandleOwnership transfer)
        : base(handle, transfer) { }

Uwaga

Problem z powiązaniami platformy Xamarin funkcji MAM może spowodować awarię aplikacji po wdrożeniu w trybie debugowania. Aby obejść ten problem, Debuggable=false atrybut musi zostać dodany do Application klasy, a android:debuggable="true" flaga musi zostać usunięta z manifestu, jeśli została ustawiona ręcznie.

Włączanie funkcji wymagających udziału aplikacji

Przykład: określ, czy dla aplikacji jest wymagany numer PIN

MAMPolicyManager.GetPolicy(currentActivity).IsPinRequired;

Przykład: określanie użytkownika Intune podstawowego

IMAMUserInfo info = MAMComponents.Get<IMAMUserInfo>();
return info?.PrimaryUser;

Przykład: określ, czy zapisywanie w magazynie urządzenia lub w chmurze jest dozwolone

MAMPolicyManager.GetPolicy(currentActivity).GetIsSaveToLocationAllowed(SaveLocation service, String username);

Rejestrowanie w celu otrzymywania powiadomień z zestawu SDK

Aplikacja musi zarejestrować się w celu otrzymywania powiadomień z zestawu SDK, tworząc MAMNotificationReceiver obiekt i rejestrując go w programie MAMNotificationReceiverRegistry. Można to zrobić, podając odbiornik i typ powiadomienia żądanego w programie , jak pokazano w App.OnMAMCreateponiższym przykładzie:

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

Menedżer rejestracji zarządzania aplikacjami mobilnymi

IMAMEnrollmentManager mgr = MAMComponents.Get<IMAMEnrollmentManager>();

Xamarin. integracja Forms

W przypadku Xamarin.Forms aplikacji Microsoft.Intune.MAM.Remapper pakiet automatycznie zastępuje klasy MAM, wprowadzając MAM klasy do hierarchii klas powszechnie używanych Xamarin.Forms klas.

Uwaga

The Xamarin. Forms integracji należy przeprowadzić oprócz opisanej powyżej integracji platformy Xamarin.Android. Remapper zachowuje się inaczej dla platformy Xamarin. Forms aplikacje, więc ręczne zastępowanie funkcji MAM musi być nadal wykonywane.

Po dodaniu narzędzia Remapper do projektu należy wykonać równoważne zamiany funkcji MAM. Na przykład FormsAppCompatActivity i FormsApplicationActivity mogą być nadal używane w aplikacji pod warunkiem zastąpienia OnCreate i OnResume są zastępowane przez odpowiedniki OnMAMCreate mam i OnMAMResume odpowiednio.

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

Jeśli zamiany nie zostaną wykonane, mogą wystąpić następujące błędy kompilacji, dopóki nie zostaną zastąpione:

  • Błąd kompilatora CS0239. Ten błąd jest często wyświetlany w tym formularzu 'MainActivity.OnCreate(Bundle)': cannot override inherited member 'MAMAppCompatActivityBase.OnCreate(Bundle)' because it is sealed. Jest to oczekiwane, ponieważ gdy program Remapper modyfikuje dziedziczenie klas Xamarin, zostaną wykonane sealed pewne funkcje i zostanie dodany nowy wariant mam w celu zastąpienia.
  • Błąd kompilatora CS0507: Ten błąd jest często wyświetlany w tym formularzu 'MyActivity.OnRequestPermissionsResult()' cannot change access modifiers when overriding 'public' inherited member .... Gdy program Remapper zmieni dziedziczenie niektórych klas platformy Xamarin, niektóre funkcje składowe zostaną zmienione na public. Jeśli zastąpisz dowolną z tych funkcji, musisz również zmienić modyfikatory dostępu dla tych przesłonięcia public .

Uwaga

Narzędzie Remapper ponownie zapisuje zależność używaną przez program Visual Studio do automatycznego uzupełniania funkcji IntelliSense. W związku z tym może być konieczne ponowne załadowanie i ponowne skompilowanie projektu po dodaniu narzędzia Remapper dla funkcji IntelliSense w celu poprawnego rozpoznania zmian.

Rozwiązywanie problemów

  • Jeśli podczas uruchamiania aplikacji napotkasz pusty, biały ekran, może być konieczne wymuszone wykonanie wywołań nawigacji w głównym wątku.
  • Powiązania Xamarin zestawu Intune SDK nie obsługują aplikacji korzystających z platformy międzyplatformowej, takiej jak MvvmCross z powodu konfliktów między klasami MvvmCross i Intune MAM. Niektórzy klienci mogli odnotować sukces integracji po przeniesieniu aplikacji do zwykłego środowiska Xamarin. Forms nie udostępniamy jawnych wskazówek ani wtyczek dla deweloperów aplikacji korzystających z narzędzia MvvmCross.

aplikacja Portal firmy

Powiązania Xamarin zestawu Intune SDK zależą od obecności aplikacji Portal firmy Systemu Android na urządzeniu w celu włączenia zasad ochrony aplikacji. Portal firmy pobiera zasady ochrony aplikacji z usługi Intune. Podczas inicjowania aplikacji ładuje zasady i kod w celu wymuszenia tych zasad z Portal firmy. Użytkownik nie musi być zalogowany.

Uwaga

Jeśli aplikacja Portal firmy nie znajduje się na urządzeniu z systemem Android, aplikacja zarządzana przez Intune zachowuje się tak samo jak zwykła aplikacja, która nie obsługuje zasad ochrony aplikacji Intune.

W przypadku ochrony aplikacji bez rejestracji urządzenia użytkownik nie musi rejestrować urządzenia przy użyciu aplikacji Portal firmy.

Przykładowe aplikacje

Przykładowe aplikacje wyróżniające funkcje zarządzania aplikacjami mobilnymi w systemach Xamarin.Android i Xamarin. Forms aplikacje są dostępne w usłudze GitHub.

Pomoc techniczna

Jeśli Twoja organizacja jest istniejącym klientem Intune, skontaktuj się z przedstawicielem pomocy technicznej firmy Microsoft, aby otworzyć bilet pomocy technicznej i utworzyć problem na stronie problemów z usługą GitHub. Pomożemy tak szybko, jak to możliwe.