Привязки Xamarin для пакета SDK для приложений Microsoft Intune

Важно!

Xamarin. Forms превратился в пользовательский интерфейс многоплатформенных приложений .NET (MAUI). Существующие проекты Xamarin следует перенести в .NET MAUI. Дополнительные сведения об обновлении проектов Xamarin до .NET см. в документации по обновлению Xamarin до .NET & .NET MAUI .

Поддержка Xamarin прекращена с 1 мая 2024 г. для всех пакетов SDK для Xamarin, включая Xamarin. Forms и Intune привязки пакета SDK для приложений Xamarin. Сведения о поддержке Intune на платформах Android и iOS см. в разделе пакет SDK для приложений Intune для .NET MAUI — Androidи пакет SDK для приложений Microsoft Intune для MAUI.iOS.

Обзор

Привязки Xamarin sdk для приложений Intune позволяют Intune политику защиты приложений в приложениях iOS и Android, созданных с помощью Xamarin. Привязки позволяют разработчикам легко встраивать Intune функции защиты приложений в приложение на основе Xamarin.

Привязки Xamarin пакета SDK для Microsoft Intune приложений позволяют включить Intune политики защиты приложений (также известные как политики APP или MAM) в приложения, разработанные с помощью Xamarin. Приложение с поддержкой MAM интегрировано с пакетом SDK для приложений Intune. ИТ-администраторы могут развертывать политики защиты приложений в мобильном приложении, когда Intune активно управляет приложением.

Что поддерживается?

Компьютеры разработчика

  • Windows (Visual Studio версии 15.7 и более поздних версий)
  • macOS

Платформы мобильных приложений

  • Android
  • iOS

сценарии управления мобильными приложениями Intune

  • Intune MAM
  • Intune устройств, зарегистрированных в MDM
  • Сторонние устройства, зарегистрированные в EMM

Приложения Xamarin, созданные с помощью пакета Xamarin SDK для приложений Intune, теперь могут получать Intune политики защиты приложений как на Intune зарегистрированных устройствах управления мобильными устройствами (MDM), так и на незарегистрированных устройствах.

Предварительные требования

Ознакомьтесь с условиями лицензии. Распечатайте и сохраните копию условий лицензии для записей. Скачивая и используя Xamarin Bindings пакета SDK для приложений Intune, вы соглашаетесь с такими условиями лицензии. Если вы не принимаете их, не используйте программное обеспечение.

Пакет SDK для Intune использует библиотеку проверки подлинности Майкрософт (MSAL) для сценариев проверки подлинности и условного запуска, которые требуют настройки приложений с помощью Microsoft Entra ID.

Если приложение уже настроено для использования MSAL и имеет собственный пользовательский идентификатор клиента, используемый для проверки подлинности с помощью Microsoft Entra ID, убедитесь, что выполнены действия, чтобы предоставить приложению Xamarin разрешения для службы управления мобильными приложениями (MAM) Intune. Используйте инструкции в разделе "Предоставление приложению доступа к службе управления мобильными приложениями Intune" руководства по началу работы с пакетом SDK для Intune.

Вопросы безопасности

Чтобы предотвратить потенциальный подделывание, раскрытие информации и атаки на повышение привилегий, выполните следующие действия.

Включение Intune политик защиты приложений в мобильном приложении iOS

Важно!

Intune регулярно выпускает обновления пакета SDK для приложений Intune. Регулярно проверка Intune привязки пакета SDK для приложений Xamarin для обновлений и включения в цикл выпуска программного обеспечения, чтобы ваши приложения поддерживали последние параметры политики защиты приложений.

  1. Добавьте Microsoft.Intune. МАМ. Пакет NuGet Xamarin.iOS для проекта Xamarin.iOS.

  2. Выполните общие действия, необходимые для интеграции пакета SDK для приложений Intune в мобильное приложение iOS. Вы можете начать с шага 3 инструкций по интеграции из руководства разработчика Intune app SDK для iOS. Вы можете пропустить последний шаг в этом разделе запуска IntuneMAMConfigurator, так как это средство входит в состав корпорации Майкрософт. Intune. МАМ. Пакет Xamarin.iOS будет выполняться автоматически во время сборки. Важно! Включение общего доступа к связка ключей для приложения немного отличается в Visual Studio от Xcode. Откройте список прав приложения и убедитесь, что включен параметр "Включить цепочку ключей" и в этом разделе добавлены соответствующие связка ключей группы общего доступа. Затем убедитесь, что список прав указан в поле "Пользовательские права" параметров "Подписывание пакета iOS" проекта для всех соответствующих сочетаний конфигурации и платформы.

  3. После добавления привязок и правильной настройки приложения приложение может начать использовать API пакета SDK для Intune. Для этого необходимо включить следующее пространство имен:

    using Microsoft.Intune.MAM;
    
  4. Чтобы начать получать политики защиты приложений, приложение должно быть зарегистрировано в службе Intune MAM. Если ваше приложение не использует библиотеку проверки подлинности Майкрософт (MSAL) для проверки подлинности пользователей и вы хотите, чтобы пакет SDK для Intune обрабатывал проверку подлинности, приложение должно предоставить имя участника-пользователя методу LoginAndEnrollAccount IntuneMAMEnrollmentManager:

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

    Приложения могут передавать значение NULL, если имя участника-пользователя неизвестно во время вызова. В этом случае пользователям будет предложено ввести адрес электронной почты и пароль.

    Если приложение уже использует MSAL для проверки подлинности пользователей, вы можете настроить единый вход (SSO) между приложением и пакетом SDK для Intune. Сначала необходимо переопределить параметры по умолчанию Microsoft Entra, используемые пакетом SDK для Intune, с параметрами вашего приложения. Это можно сделать с помощью словаря IntuneMAMSettings в info.plist приложения, как упоминалось в руководстве разработчика по пакету SDK для приложений для iOS для Intune, или сделать это в коде с помощью Microsoft Entra ID свойств переопределения класса IntuneMAMSettings. Подход Info.plist рекомендуется использовать для приложений, параметры MSAL которых являются статическими, а свойства переопределения — для приложений, определяющих эти значения во время выполнения. После настройки всех параметров единого входа приложение должно предоставить имя участника-пользователя методу RegisterAndEnrollmentManager IntuneMAMEnrollmentManager после успешной проверки подлинности:

    IntuneMAMEnrollmentManager.Instance.RegisterAndEnrollAccount(string identity);
    

    Приложения могут определить результат попытки регистрации, реализовав метод EnrollmentRequestWithStatus в подклассе IntuneMAMEnrollmentDelegate и задав для свойства Delegate IntuneMAMEnrollmentManager экземпляр этого класса.

    После успешной регистрации приложения могут определить имя участника-пользователя зарегистрированной учетной записи (если ранее неизвестно), запросив следующее свойство:

     string enrolledAccount = IntuneMAMEnrollmentManager.Instance.EnrolledAccount;
    

Примеры приложений

Примеры приложений, в которых подчеркивается функциональность MAM в приложениях Xamarin.iOS, доступны на сайте GitHub.

Примечание.

Для iOS/iPadOS не существует повторного сопоставления. Интеграция в Xamarin. Forms приложение должно быть таким же, как для обычного проекта Xamarin.iOS.

Включение политик защиты приложений Intune в мобильном приложении Android

  1. Добавьте Microsoft.Intune. МАМ. Пакет NuGet Xamarin.Android для проекта Xamarin.Android.
    1. Для Xamarin. Forms приложение добавьте Microsoft.Intune. МАМ. Также remapper.Tasks NuGet package to your Xamarin.Android project.
  2. Выполните общие действия, необходимые для интеграции пакета SDK для приложений Intune в мобильное приложение Android, а дополнительные сведения см. в этом документе.

Интеграция с Xamarin.Android

Полный обзор интеграции пакета SDK для приложений Intune см. в руководстве разработчика по пакету SDK для Microsoft Intune приложений для Android. При чтении руководства и интеграции пакета SDK для приложений Intune с приложением Xamarin в следующих разделах описаны различия между реализацией собственного приложения Android, разработанного на Java, и приложением Xamarin, разработанным на C#. Эти разделы должны рассматриваться как дополнительные и не могут служить заменой для чтения руководства в полном объеме.

Remapper

Начиная с выпуска 1.4428.1 пакет Microsoft.Intune.MAM.Remapper можно добавить в приложение Xamarin.Android в качестве средств сборки для замены классов, методов и системных служб MAM. Если включен параметр Remapper, то эквивалентные MAM части замены разделов Переименованные методы и Приложение MAM будут автоматически выполняться при сборке приложения.

Чтобы исключить класс из MAM-ification с помощью Remapper, в файл проектов .csproj можно добавить следующее свойство.

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

Примечание.

Remapper в настоящее время предотвращает отладку в приложениях Xamarin.Android. Для отладки приложения рекомендуется выполнить интеграцию вручную.

Переименованные методы

Во многих случаях метод, доступный в классе Android, помечается как окончательный в классе замены MAM. В этом случае класс замены MAM предоставляет метод с аналогичным именем (суффиксом MAM), который следует переопределить. Например, при наследовавеся от MAMActivity, вместо переопределения OnCreate() и вызова base.OnCreate()должен Activity переопределять OnMAMCreate() и вызывать base.OnMAMCreate().

Приложение MAM

Приложение должно определить Android.App.Application класс. Если MAM интегрируется вручную, он должен наследоваться от MAMApplication. Убедитесь, что подкласс правильно украшен атрибутом [Application] и переопределяет (IntPtr, JniHandleOwnership) конструктор.

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

Примечание.

Проблема с привязками MAM Xamarin может привести к сбою приложения при развертывании в режиме отладки. В качестве обходного Debuggable=false решения атрибут должен быть добавлен в Application класс, а android:debuggable="true" флаг должен быть удален из манифеста, если он был задан вручную.

Включение функций, требующих участия в приложении

Пример. Определение того, требуется ли ПИН-код для приложения

MAMPolicyManager.GetPolicy(currentActivity).IsPinRequired;

Пример. Определение основного пользователя Intune

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

Пример. Определение того, разрешено ли сохранение на устройстве или в облачное хранилище

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

Регистрация для получения уведомлений из пакета SDK

Приложение должно зарегистрироваться для получения уведомлений из пакета SDK, создав MAMNotificationReceiver и зарегистрировав его в MAMNotificationReceiverRegistry. Это делается путем предоставления получателя и типа уведомления, требуемого в , как показано в App.OnMAMCreateпримере ниже.

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

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

Xamarin. интеграция Forms

Для Xamarin.Forms приложений Microsoft.Intune.MAM.Remapper пакет автоматически выполняет замену классов MAM, внедряя MAM классы в иерархию классов часто используемых Xamarin.Forms классов.

Примечание.

The Xamarin. Forms интеграция должна выполняться в дополнение к описанной выше интеграции с Xamarin.Android. Remapper работает по-разному для Xamarin. Forms приложения, поэтому замена MAM вручную по-прежнему должна быть выполнена.

После добавления Remapper в проект необходимо выполнить замены, эквивалентные MAM. Например, FormsAppCompatActivity и FormsApplicationActivity могут по-прежнему использоваться в приложении при условии, что переопределения OnCreate для и OnResume заменяются эквивалентами OnMAMCreate MAM и 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());
        }

Если замена не выполнена, могут возникнуть следующие ошибки компиляции до тех пор, пока не будет выполнена замена:

  • Ошибка компилятора CS0239. Эта ошибка обычно встречается в этой форме 'MainActivity.OnCreate(Bundle)': cannot override inherited member 'MAMAppCompatActivityBase.OnCreate(Bundle)' because it is sealed. Это ожидаемо, потому что, когда remapper изменяет наследование классов Xamarin, будут выполнены sealed некоторые функции, а вместо этого добавляется новый вариант MAM для переопределения.
  • Ошибка компилятора CS0507: эта ошибка обычно встречается в этой форме 'MyActivity.OnRequestPermissionsResult()' cannot change access modifiers when overriding 'public' inherited member .... Когда remapper изменяет наследование некоторых классов Xamarin, некоторые функции-члены будут изменены на public. При переопределении любой из этих функций потребуется изменить модификаторы доступа для этих переопределений public .

Примечание.

Remapper повторно записывает зависимость, которую Visual Studio использует для автозавершения IntelliSense. Поэтому при добавлении remapper для IntelliSense может потребоваться перезагрузить и перестроить проект, чтобы правильно распознать изменения.

Устранение неполадок

  • Если при запуске приложения отображается пустой белый экран, может потребоваться принудительное выполнение вызовов навигации в потоке main.
  • Xamarin Bindings пакета SDK для Intune не поддерживают приложения, использующие кроссплатформенную платформу, например MvvmCross, из-за конфликтов между MvvmCross и Intune классами MAM. Хотя некоторые клиенты, возможно, успешно выполнили интеграцию после перемещения своих приложений в обычный Xamarin. Forms, мы не предоставляем явных рекомендаций или подключаемых модулей для разработчиков приложений, использующих MvvmCross.

Приложение "Корпоративный портал"

Привязки Xamarin sdk для Intune зависят от наличия Корпоративный портал приложения Android на устройстве, чтобы включить политики защиты приложений. Корпоративный портал извлекает политики защиты приложений из службы Intune. Когда приложение инициализируется, оно загружает политику и код для принудительного применения этой политики из Корпоративный портал. Пользователю не требуется вход.

Примечание.

Если приложение Корпоративный портал отсутствует на устройстве Android, управляемое Intune приложение работает так же, как обычное приложение, которое не поддерживает политики защиты приложений Intune.

Для защиты приложений без регистрации устройства пользователю не требуется регистрировать устройство с помощью приложения Корпоративный портал.

Примеры приложений

Примеры приложений, в котором подчеркивается функциональность MAM в Xamarin.Android и Xamarin. Forms приложения доступны на сайте GitHub.

Поддержка

Если ваша организация является клиентом Intune, обратитесь к представителю службы поддержки Майкрософт, чтобы отправить запрос в службу поддержки и создать проблему на странице проблем GitHub. Мы поможем, как только сможем.