Associações de Xamarin do SDK do Microsoft Intune Aplicativo

Importante

Xamarin. Forms evoluiu para a interface do usuário de aplicativo multiplataforma do .NET (MAUI). Os projetos Xamarin existentes devem ser migrados para o .NET MAUI. Para obter mais informações sobre como atualizar projetos do Xamarin para o .NET, confira a atualização do Xamarin para o .NET & documentação do .NET MAUI .

O suporte ao Xamarin terminou a partir de 1º de maio de 2024 para todos os SDKs Xamarin, incluindo Xamarin. Forms e Intune Associações de Xamarin do SDK do Aplicativo. Para Intune suporte em plataformas Android e iOS, consulte Intune SDK do aplicativo para .NET MAUI – SDK do aplicativo Androide Microsoft Intune para MAUI.iOS.

Visão Geral

As Associações de Xamarin do SDK do Intune aplicativo permitem Intune política de proteção de aplicativo em aplicativos iOS e Android criados com Xamarin. As associações permitem que os desenvolvedores criem facilmente Intune recursos de proteção de aplicativo em seu aplicativo baseado em Xamarin.

As Associações de Xamarin do SDK do Microsoft Intune de Aplicativo permitem que você incorpore Intune políticas de proteção de aplicativo (também conhecidas como políticas de APP ou MAM) em seus aplicativos desenvolvidos com Xamarin. Um aplicativo habilitado para MAM é integrado ao SDK do aplicativo Intune. Os administradores de TI podem implantar políticas de proteção de aplicativo em seu aplicativo móvel quando Intune gerencia ativamente o aplicativo.

O que tem suporte?

Computadores desenvolvedores

  • Windows (Visual Studio versão 15.7+)
  • macOS

Plataformas de aplicativos móveis

  • Android
  • iOS

Intune cenários de Gerenciamento de Aplicativos Móveis

  • Intune MAM
  • Intune dispositivos registrados em MDM
  • Dispositivos registrados em EMM de terceiros

Os aplicativos Xamarin criados com o Intune Associações de Xamarin do SDK do Aplicativo agora podem receber Intune políticas de proteção de aplicativo em dispositivos registrados Intune MDM (gerenciamento de dispositivo móvel) e dispositivos não registrados.

Pré-requisitos

Examine os termos da licença. Imprima e mantenha uma cópia dos termos de licença para seus registros. Ao baixar e usar o Intune Associações Xamarin do SDK do Aplicativo, você concorda com esses termos de licença. Se você não as aceitar, não use o software.

O SDK Intune depende da MSAL (Biblioteca de Autenticação da Microsoft) para seus cenários de autenticação e inicialização condicional, que exigem que os aplicativos sejam configurados com Microsoft Entra ID.

Se seu aplicativo já estiver configurado para usar o MSAL e tiver sua própria ID de cliente personalizada usada para autenticar com Microsoft Entra ID, verifique se as etapas para dar permissões de aplicativo Xamarin ao serviço Intune MAM (Gerenciamento de Aplicativos Móveis) serão seguidas. Use as instruções na seção "Dar acesso ao aplicativo ao serviço Intune Gerenciamento de Aplicativos Móveis" do guia introdução ao Intune SDK.

Considerações sobre segurança

Para evitar possíveis falsificações, divulgação de informações e elevação de ataques de privilégios:

Habilitar Intune políticas de proteção de aplicativo em seu aplicativo móvel iOS

Importante

Intune libera regularmente as atualizações para o SDK do aplicativo Intune. Marcar regularmente as Associações de Xamarin do SDK do SDK do aplicativo Intune para atualizações e incorpore em seu ciclo de versão de desenvolvimento de software para garantir que seus aplicativos dêem suporte às configurações mais recentes da Política de Proteção de Aplicativo.

  1. Adicione o Microsoft.Intune. MAM. Pacote NuGet do Xamarin.iOS para o projeto Xamarin.iOS.

  2. Siga as etapas gerais necessárias para integrar o SDK do aplicativo Intune em um aplicativo móvel iOS. Você pode começar com a etapa 3 das instruções de integração do Intune SDK do Aplicativo para Guia de Desenvolvedor do iOS. Você pode ignorar a etapa final nessa seção de execução do IntuneMAMConfigurator, pois essa ferramenta está incluída na Microsoft. Intune. MAM. O pacote Xamarin.iOS será executado automaticamente no momento do build. Importante: habilitar keychain compartilhamento para um aplicativo é um pouco diferente no Visual Studio do Xcode. Abra a lista de direitos do aplicativo e certifique-se de que a opção "Habilitar chavechain" esteja habilitada e que os grupos de compartilhamento de keychain apropriados sejam adicionados nessa seção. Em seguida, verifique se a lista de direitos é especificada no campo "Direitos Personalizados" das opções "Assinatura de Pacote do iOS" do projeto para todas as combinações de configuração/plataforma apropriadas.

  3. Depois que as associações forem adicionadas e o aplicativo estiver configurado corretamente, seu aplicativo poderá começar a usar as APIs do SDK Intune. Para fazer isso, você deve incluir o seguinte namespace:

    using Microsoft.Intune.MAM;
    
  4. Para começar a receber políticas de proteção de aplicativo, seu aplicativo deve se registrar no serviço Intune MAM. Se seu aplicativo não usar a MSAL (Biblioteca de Autenticação da Microsoft) para autenticar usuários e você quiser que o SDK Intune para lidar com a autenticação, seu aplicativo deverá fornecer o UPN do usuário ao método LoginAndEnrollAccount do IntuneMAMEnrollmentManager:

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

    Os aplicativos poderão ser transmitidos nulos se o UPN do usuário for desconhecido no momento da chamada. Nesse caso, os usuários serão solicitados a inserir seu endereço de email e senha.

    Se seu aplicativo já usa o MSAL para autenticar usuários, você poderá configurar uma experiência de SSO (logon único) entre seu aplicativo e o SDK Intune. Primeiro, você precisará substituir as configurações de Microsoft Entra padrão usadas pelo SDK Intune com as do seu aplicativo. Você pode fazer isso por meio do dicionário IntuneMAMSettings no Info.plist do aplicativo, conforme mencionado no SDK do aplicativo Intune para o Guia de Desenvolvedor do iOS ou pode fazê-lo em código por meio das propriedades de substituição Microsoft Entra ID da classe IntuneMAMSettings. A abordagem Info.plist é recomendada para aplicativos cujas configurações MSAL são estáticas, enquanto as propriedades de substituição são recomendadas para aplicativos que determinam esses valores em runtime. Depois que todas as configurações do SSO tiverem sido configuradas, seu aplicativo deverá fornecer o UPN do usuário ao método RegisterAndEnrollAccount do IntuneMAMEnrollmentManager depois que ele tiver autenticado com êxito:

    IntuneMAMEnrollmentManager.Instance.RegisterAndEnrollAccount(string identity);
    

    Os aplicativos podem determinar o resultado de uma tentativa de registro implementando o método EnrollmentRequestWithStatus em uma subclasse do IntuneMAMEnrollmentDelegate e definindo a propriedade Delegado do IntuneMAMEnrollmentManager como uma instância dessa classe.

    Após um registro bem-sucedido, os aplicativos podem determinar o UPN da conta registrada (se anteriormente desconhecida) consultando a seguinte propriedade:

     string enrolledAccount = IntuneMAMEnrollmentManager.Instance.EnrolledAccount;
    

Aplicativos de exemplo

Aplicativos de exemplo que realçam a funcionalidade do MAM em aplicativos Xamarin.iOS estão disponíveis no GitHub.

Observação

Não há nenhum repositório para iOS/iPadOS. Integrando-se a um Xamarin. Forms aplicativo deve ser o mesmo que para um projeto Xamarin.iOS regular.

Habilitar Intune políticas de proteção de aplicativo em seu aplicativo móvel Android

  1. Adicione o Microsoft.Intune. MAM. Pacote NuGet do Xamarin.Android para seu projeto Xamarin.Android.
    1. Para um Xamarin. Forms aplicativo, adicione o Microsoft.Intune. MAM. Pacote NuGet Remapper.Tasks para seu projeto Xamarin.Android também.
  2. Siga as etapas gerais necessárias para integrar o SDK do aplicativo Intune em um aplicativo móvel Android enquanto se refere a este documento para obter detalhes adicionais.

Integração Xamarin.Android

Uma visão geral completa para integrar o SDK do aplicativo Intune pode ser encontrada no SDK do aplicativo Microsoft Intune para o guia de desenvolvedor do Android. Ao ler o guia e integrar o SDK do aplicativo Intune ao aplicativo Xamarin, as seções a seguir visam destacar as diferenças entre a implementação de um aplicativo Android nativo desenvolvido em Java e um aplicativo Xamarin desenvolvido em C#. Essas seções devem ser tratadas como suplementares e não podem atuar como um substituto para a leitura do guia em sua totalidade.

Redefinidor

Começando com a versão 1.4428.1, o Microsoft.Intune.MAM.Remapper pacote pode ser adicionado a um aplicativo Xamarin.Android como ferramenta de build para executar as substituições de serviços de classe, método e sistemas MAM. Se o Remapper for incluído, as partes de substituição equivalentes do MAM das seções Métodos Renomeados e Aplicativo MAM serão executadas automaticamente quando o aplicativo for criado.

Para excluir uma classe da MAM-ification pelo Remapper, a propriedade a seguir pode ser adicionada no arquivo de projetos .csproj .

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

Observação

Atualmente, o Remapper impede a depuração em aplicativos Xamarin.Android. A integração manual é recomendada para depurar seu aplicativo.

Métodos renomeados

Em muitos casos, um método disponível na classe Android foi marcado como final na classe de substituição MAM. Nesse caso, a classe de substituição MAM fornece um método de nome semelhante (sufixo com MAM) que você deve substituir em vez disso. Por exemplo, ao derivar de MAMActivity, em vez de substituir OnCreate() e chamar base.OnCreate(), Activity deve substituir OnMAMCreate() e chamar base.OnMAMCreate().

Aplicativo MAM

Seu aplicativo deve definir uma Android.App.Application classe. Se integrar manualmente o MAM, ele deverá herdar de MAMApplication. Certifique-se de que sua subclasse seja decorada corretamente com o [Application] atributo e substitua o (IntPtr, JniHandleOwnership) construtor.

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

Observação

Um problema com as associações de Xamarin do MAM pode fazer com que o aplicativo falhe quando implantado no modo Depuração. Como solução alternativa, o Debuggable=false atributo deve ser adicionado à Application classe e o android:debuggable="true" sinalizador deve ser removido do manifesto se ele foi definido manualmente.

Habilitar recursos que exigem a participação do aplicativo

Exemplo: determinar se o PIN é necessário para o aplicativo

MAMPolicyManager.GetPolicy(currentActivity).IsPinRequired;

Exemplo: determinar o usuário de Intune primário

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

Exemplo: determinar se a economia no dispositivo ou no armazenamento em nuvem é permitida

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

Registrar-se para notificações do SDK

Seu aplicativo deve registrar-se para notificações do SDK criando um MAMNotificationReceiver e registrando-o com MAMNotificationReceiverRegistry. Isso é feito fornecendo o receptor e o tipo de notificação desejada em App.OnMAMCreate, como ilustra o exemplo abaixo:

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

Gerenciador de Registro do MAM

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

Xamarin. Forms integração

Para Xamarin.Forms aplicativos, o Microsoft.Intune.MAM.Remapper pacote executa a substituição de classe MAM automaticamente injetando MAM classes na hierarquia de classe de classes comumente usadas Xamarin.Forms .

Observação

O Xamarin. Forms integração deve ser feita além da integração Xamarin.Android detalhada acima. O Remapper se comporta de forma diferente para Xamarin. Forms aplicativos, portanto, as substituições MAM mam manuais ainda devem ser feitas.

Depois que o Remapper for adicionado ao seu projeto, você precisará executar as substituições equivalentes do MAM. Por exemplo, FormsAppCompatActivity e FormsApplicationActivity pode continuar a ser usado em seu aplicativo fornecido substitui e OnResume são substituídos OnCreate pelos equivalentes OnMAMCreate MAM eOnMAMResume, respectivamente.

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

Se as substituições não forem feitas, você poderá encontrar os seguintes erros de compilação até fazer as substituições:

  • Erro do compilador CS0239. Esse erro é comumente visto neste formulário 'MainActivity.OnCreate(Bundle)': cannot override inherited member 'MAMAppCompatActivityBase.OnCreate(Bundle)' because it is sealed. Isso é esperado porque quando o Remapper modifica a herança das classes Xamarin, determinadas funções serão feitas sealed e uma nova variante MAM é adicionada à substituição.
  • Erro do compilador CS0507: esse erro é comumente visto neste formulário 'MyActivity.OnRequestPermissionsResult()' cannot change access modifiers when overriding 'public' inherited member .... Quando o Remapper alterar a herança de algumas das classes Xamarin, determinadas funções membro serão alteradas para public. Se você substituir qualquer uma dessas funções, precisará alterar os modificadores de acesso para que essas substituições também sejam public .

Observação

O Remapper grava novamente uma dependência que o Visual Studio usa para conclusão automática do IntelliSense. Portanto, talvez seja necessário recarregar e recompilar o projeto quando o Remapper for adicionado para o IntelliSense reconhecer corretamente as alterações.

Solução de problemas

  • Se você encontrar uma tela branca em branco em seu aplicativo no início, talvez seja necessário forçar as chamadas de navegação a serem executadas no thread main.
  • As associações de Xamarin do SDK Intune não dão suporte a aplicativos que estão usando uma estrutura entre plataformas, como o MvvmCross, devido a conflitos entre as classes MvvmCross e Intune MAM. Embora alguns clientes possam ter tido sucesso com a integração depois de mover seus aplicativos para xamarin simples. Forms, não fornecemos diretrizes explícitas ou plug-ins para desenvolvedores de aplicativos usando o MvvmCross.

Aplicativo do Portal da Empresa

As associações de Xamarin do SDK Intune dependem da presença do Portal da Empresa aplicativo Android no dispositivo para habilitar políticas de proteção de aplicativo. O Portal da Empresa recupera políticas de proteção de aplicativo do serviço de Intune. Quando o aplicativo inicializa, ele carrega a política e o código para impor essa política do Portal da Empresa. O usuário não precisa ser conectado.

Observação

Quando o aplicativo Portal da Empresa não está no dispositivo Android, um aplicativo gerenciado por Intune se comporta da mesma forma que um aplicativo normal que não dá suporte Intune políticas de proteção de aplicativo.

Para proteção de aplicativo sem registro de dispositivo, o usuário não é obrigado a registrar o dispositivo usando o aplicativo Portal da Empresa.

Aplicativos de exemplo

Aplicativos de exemplo que realçam a funcionalidade do MAM em Xamarin.Android e Xamarin. Forms aplicativos estão disponíveis no GitHub.

Suporte

Se sua organização for um cliente Intune existente, trabalhe com seu representante de suporte da Microsoft para abrir um tíquete de suporte e criar um problema na página de problemas do GitHub. Ajudaremos assim que pudermos.