Enlaces Xamarin do SDK da Aplicação Microsoft Intune
Importante
O Xamarin.Forms evoluiu para a IU da Aplicação multiplataformas .NET (MAUI). Os projetos Xamarin existentes devem ser migrados para o .NET MAUI. Para obter mais informações sobre como atualizar projetos Xamarin para .NET, veja a documentação Atualizar do Xamarin para o .NET & .NET MAUI .
O suporte do Xamarin terminou a partir de 1 de maio de 2024 para todos os SDKs Xamarin, incluindo Xamarin.Forms e Enlaces Xamarin do SDK da Aplicação Intune. Para obter suporte do Intune em plataformas Android e iOS, veja SDK da Aplicação Intune para .NET MAUI – Androide SDK da Aplicação Do Microsoft Intune para MAUI.iOS.
Visão Geral
Os Enlaces Xamarin do SDK da Aplicação Intune ativam a política de proteção de aplicações do Intune em aplicações iOS e Android criadas com Xamarin. Os enlaces permitem aos programadores criar facilmente funcionalidades de proteção de aplicações do Intune na respetiva aplicação baseada em Xamarin.
Os Enlaces Xamarin do SDK da Aplicação Microsoft Intune permitem-lhe incorporar políticas de proteção de aplicações do Intune (também conhecidas como políticas de APLICAÇÃO ou MAM) nas suas aplicações desenvolvidas com Xamarin. Uma aplicação com MAM ativada é uma aplicação integrada com o SDK da Aplicação intune. Os administradores de TI podem implementar políticas de proteção de aplicações na sua aplicação móvel quando o Intune gere ativamente a aplicação.
O que é suportado?
Máquinas para programadores
- Windows (versão 15.7 e superior do Visual Studio)
- macOS
Plataformas de aplicações móveis
- Android
- iOS
Cenários de Gestão de Aplicações Móveis do Intune
- MAM do Intune
- Dispositivos inscritos na MDM do Intune
- Dispositivos inscritos em EMM de terceiros
As aplicações Xamarin criadas com os Enlaces Xamarin do SDK da Aplicação Intune podem agora receber políticas de proteção de aplicações do Intune em dispositivos inscritos na gestão de dispositivos móveis (MDM) do Intune e em dispositivos não inscritos.
Pré-requisitos
Reveja os termos de licenciamento. Imprima e retenha uma cópia dos termos de licenciamento dos seus registos. Ao transferir e utilizar os Enlaces Xamarin do SDK da Aplicação Intune, concorda com esses termos de licenciamento. Se não os aceitar, não utilize o software.
O SDK do Intune baseia-se na Biblioteca de Autenticação da Microsoft (MSAL) para os seus cenários de autenticação e iniciação condicional, que exigem que as aplicações sejam configuradas com o Microsoft Entra ID.
Se a sua aplicação já estiver configurada para utilizar a MSAL e tiver o seu próprio ID de cliente personalizado utilizado para autenticar com o Microsoft Entra ID, certifique-se de que são seguidos os passos para conceder as permissões da sua aplicação Xamarin ao serviço de Gestão de Aplicações Móveis (MAM) do Intune. Utilize as instruções na secção "Conceder acesso à aplicação ao serviço de Gestão de Aplicações Móveis do Intune" da introdução ao Guia do SDK do Intune.
Considerações sobre segurança
Para impedir potenciais ataques de spoofing, divulgação de informações e elevação de privilégios:
- Certifique-se de que o desenvolvimento de aplicações Xamarin é realizado numa estação de trabalho segura.
- Certifique-se de que os enlaces provêm de uma origem válida da Microsoft:
- Perfil NuGet do SDK da Aplicação MS Intune
- SDK da Aplicação Intune Xamarin Repositório do GitHub
- Configure a configuração do NuGet para o seu projeto confiar em pacotes NuGet assinados e não modificados. Veja instalar pacotes assinados para obter mais informações.
- Proteja o diretório de saída que contém a aplicação Xamarin. Considere utilizar um diretório ao nível do utilizador para a saída.
Ativar as políticas de proteção de aplicações do Intune na sua aplicação móvel iOS
Importante
O Intune lança regularmente atualizações para o SDK da Aplicação Intune. Verifique regularmente os Enlaces Xamarin do SDK da Aplicação Intune para obter atualizações e incorpore o ciclo de lançamento de desenvolvimento de software para garantir que as suas aplicações suportam as definições mais recentes da Política de Proteção de Aplicações.
Adicione o pacote NuGet Microsoft.Intune.MAM.Xamarin.iOS ao seu projeto Xamarin.iOS.
Siga os passos gerais necessários para integrar o SDK da Aplicação Intune numa aplicação móvel iOS. Pode começar com o passo 3 das instruções de integração do Guia para Programadores do SDK da Aplicação Intune para iOS. Pode ignorar o passo final nessa secção de execução do IntuneMAMConfigurator, uma vez que esta ferramenta está incluída no pacote Microsoft.Intune.MAM.Xamarin.iOS e será executada automaticamente no momento da compilação. Importante: ativar a partilha de porta-chaves para uma aplicação é ligeiramente diferente no Visual Studio a partir do Xcode. Abra o plist de Elegibilidades da aplicação e certifique-se de que a opção "Ativar Keychain" está ativada e que os grupos de partilha de keychain adequados são adicionados nessa secção. Em seguida, certifique-se de que a lista de Elegibilidades está especificada no campo "Elegibilidades Personalizadas" das opções de "Assinatura de Pacotes iOS" do projeto para todas as combinações de Configuração/Plataforma adequadas.
Assim que os enlaces forem adicionados e a aplicação estiver configurada corretamente, a aplicação pode começar a utilizar as APIs do SDK do Intune. Para tal, tem de incluir o seguinte espaço de nomes:
using Microsoft.Intune.MAM;
Para começar a receber políticas de proteção de aplicações, a sua aplicação tem de se inscrever no serviço MAM do Intune. Se a sua aplicação não utilizar a Biblioteca de Autenticação da Microsoft (MSAL) para autenticar utilizadores e quiser que o SDK do Intune processe a autenticação, a sua aplicação deve fornecer o UPN do utilizador ao método LoginAndEnrollAccount do IntuneMAMEnrollmentManager:
IntuneMAMEnrollmentManager.Instance.LoginAndEnrollAccount([NullAllowed] string identity);
As aplicações podem passar nulas se o UPN do utilizador for desconhecido no momento da chamada. Neste caso, será pedido aos utilizadores que introduzam o respetivo endereço de e-mail e palavra-passe.
Se a sua aplicação já utilizar a MSAL para autenticar utilizadores, pode configurar uma experiência de início de sessão único (SSO) entre a sua aplicação e o SDK do Intune. Primeiro, terá de substituir as predefinições do Microsoft Entra utilizadas pelo SDK do Intune com as da sua aplicação. Pode fazê-lo através do dicionário IntuneMAMSettings no info.plist da aplicação, conforme mencionado no Guia para Programadores do SDK da Aplicação Intune para iOS ou pode fazê-lo em código através das propriedades de substituição do ID do Microsoft Entra da classe IntuneMAMSettings. A abordagem Info.plist é recomendada para aplicações cujas definições MSAL são estáticas, enquanto as propriedades de substituição são recomendadas para aplicações que determinam esses valores no runtime. Assim que todas as definições do SSO tiverem sido configuradas, a sua aplicação deve fornecer o UPN do utilizador ao método RegisterAndEnrollAccount do IntuneMAMEnrollmentManager depois de ter sido autenticado com êxito:
IntuneMAMEnrollmentManager.Instance.RegisterAndEnrollAccount(string identity);
As aplicações podem determinar o resultado de uma tentativa de inscrição ao implementar o método EnrollmentRequestWithStatus numa subclasse do IntuneMAMEnrollmentDelegate e ao definir a propriedade Delegate do IntuneMAMEnrollmentManager para uma instância dessa classe.
Após uma inscrição bem-sucedida, as aplicações podem determinar o UPN da conta inscrita (se anteriormente desconhecido) ao consultar a seguinte propriedade:
string enrolledAccount = IntuneMAMEnrollmentManager.Instance.EnrolledAccount;
Ativar políticas de proteção de aplicações do Intune na sua aplicação móvel Android
- Adicione o pacote NuGet Microsoft.Intune.MAM.Xamarin.Android ao seu projeto Xamarin.Android.
- Para uma aplicação Xamarin.Forms, adicione também o pacote NuGet Microsoft.Intune.MAM.Remapper.Tasks ao seu projeto Xamarin.Android.
- Siga os passos gerais necessários para integrar o SDK da Aplicação Intune numa aplicação móvel Android ao consultar este documento para obter detalhes adicionais.
Integração do Xamarin.Android
Pode encontrar uma descrição geral completa da integração do SDK da Aplicação Intune no Guia para programadores do SDK da Aplicação Microsoft Intune para Android. À medida que lê o guia e integra o SDK da Aplicação Intune com a sua aplicação Xamarin, as secções seguintes destinam-se a realçar as diferenças entre a implementação de uma aplicação Android nativa desenvolvida em Java e uma aplicação Xamarin desenvolvida em C#. Estas secções devem ser tratadas como suplementares e não podem servir de substituto para ler o guia na sua totalidade.
Remapper
A partir da versão 1.4428.1, o Microsoft.Intune.MAM.Remapper
pacote pode ser adicionado a uma aplicação Xamarin.Android como ferramentas de compilação para efetuar substituições de serviços de classe, método e sistemas de MAM. Se o Remapper estiver incluído, as partes de substituição equivalentes à MAM das secções Métodos Mudados e Aplicação MAM serão executadas automaticamente quando a aplicação for criada.
Para excluir uma classe da MAM-ification pelo Remapper, a seguinte propriedade pode ser adicionada no ficheiro 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 aplicações Xamarin.Android. Recomenda-se a integração manual para depurar a sua aplicação.
Métodos com Nome Mudado
Em muitos casos, um método disponível na classe Android foi marcado como final na classe de substituição MAM. Neste caso, a classe de substituição MAM fornece um método com o mesmo nome (sufixo com MAM
) que deve substituir. Por exemplo, ao derivar de MAMActivity
, em vez de substituir OnCreate()
e chamar base.OnCreate()
, Activity
tem de substituir OnMAMCreate()
e chamar base.OnMAMCreate()
.
Aplicação MAM
A sua aplicação tem de definir uma Android.App.Application
classe. Se integrar manualmente a MAM, tem de herdar de MAMApplication
. Certifique-se de que a subclasse está devidamente decorada com o [Application]
atributo e substitui o (IntPtr, JniHandleOwnership)
construtor.
[Application]
class TaskrApp : MAMApplication
{
public TaskrApp(IntPtr handle, JniHandleOwnership transfer)
: base(handle, transfer) { }
Observação
Um problema com os enlaces de MAM Xamarin pode fazer com que a aplicação falhe quando implementada no modo de Depuração. Como solução, o Debuggable=false
atributo tem de ser adicionado à Application
classe e o android:debuggable="true"
sinalizador tem de ser removido do manifesto se tiver sido definido manualmente.
Ativar funcionalidades que requerem a participação da aplicação
Exemplo: Determinar se o PIN é necessário para a aplicação
MAMPolicyManager.GetPolicy(currentActivity).IsPinRequired;
Exemplo: Determinar o utilizador primário do Intune
IMAMUserInfo info = MAMComponents.Get<IMAMUserInfo>();
return info?.PrimaryUser;
Exemplo: Determinar se é permitido guardar no dispositivo ou no armazenamento na cloud
MAMPolicyManager.GetPolicy(currentActivity).GetIsSaveToLocationAllowed(SaveLocation service, String username);
Registar-se para receber notificações do SDK
A aplicação tem de se registar para receber notificações do SDK ao criar um MAMNotificationReceiver
e registá-lo no MAMNotificationReceiverRegistry
. Isto é feito ao fornecer o recetor e o tipo de notificação pretendido 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);
}
...
Gestor de Inscrição de MAM
IMAMEnrollmentManager mgr = MAMComponents.Get<IMAMEnrollmentManager>();
Integração do Xamarin.Forms
Para Xamarin.Forms
aplicações, o Microsoft.Intune.MAM.Remapper
pacote efetua automaticamente a substituição da classe MAM ao injetar MAM
classes na hierarquia de classes de classes utilizadas Xamarin.Forms
frequentemente.
Observação
A integração Xamarin.Forms tem de ser feita para além da integração Xamarin.Android detalhada acima. O Remapper comporta-se de forma diferente para as aplicações Xamarin.Forms, pelo que as substituições manuais de MAM ainda têm de ser feitas.
Assim que o Remapper for adicionado ao seu projeto, terá de efetuar as substituições equivalentes de MAM. Por exemplo, FormsAppCompatActivity
e FormsApplicationActivity
pode continuar a ser utilizado na sua aplicação, as substituições fornecidas para OnCreate
e OnResume
são substituídas pelos equivalentes OnMAMCreate
de MAM e OnMAMResume
respetivamente.
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 efetuadas, poderá encontrar os seguintes erros de compilação até efetuar as substituições:
-
Erro CS0239 do Compilador. Este erro é geralmente visto neste formulário
'MainActivity.OnCreate(Bundle)': cannot override inherited member 'MAMAppCompatActivityBase.OnCreate(Bundle)' because it is sealed
. Tal é esperado porque, quando o Remapper modifica a herança de classes Xamarin, serão criadassealed
determinadas funções e é adicionada uma nova variante de MAM para substituir. -
Erro CS0507 do Compilador: este erro é normalmente visto neste formulário
'MyActivity.OnRequestPermissionsResult()' cannot change access modifiers when overriding 'public' inherited member ...
. Quando o Remapper altera a herança de algumas das classes Xamarin, determinadas funções de membro serão alteradas parapublic
. Se substituir qualquer uma destas funções, terá de alterar os modificadores de acesso para que essas substituições também sejampublic
.
Observação
O Remapper escreve novamente uma dependência que o Visual Studio utiliza para a conclusão automática do IntelliSense. Por conseguinte, poderá ter de recarregar e reconstruir o projeto quando o Remapper for adicionado para o IntelliSense reconhecer corretamente as alterações.
Solução de problemas
- Se encontrar um ecrã branco em branco na sua aplicação ao iniciar, poderá ter de forçar a execução das chamadas de navegação no thread principal.
- Os Enlaces Xamarin do SDK do Intune não suportam aplicações que estejam a utilizar uma arquitetura de várias plataformas, como o MvvmCross, devido a conflitos entre classes MVVMCross e MAM do Intune. Embora alguns clientes possam ter tido sucesso com a integração após moverem as suas aplicações para Xamarin.Forms simples, não fornecemos orientações explícitas ou plug-ins para programadores de aplicações que utilizem o MvvmCross.
Aplicativo do Portal da Empresa
Os Enlaces Xamarin do SDK do Intune dependem da presença da aplicação Android do Portal da Empresa no dispositivo para ativar as políticas de proteção de aplicações. O Portal da Empresa obtém as políticas de proteção de aplicações do serviço Intune. Quando a aplicação inicializa, carrega a política e o código para impor essa política a partir do Portal da Empresa. O utilizador não precisa de ter sessão iniciada.
Observação
Quando a aplicação Portal da Empresa não está no dispositivo Android , uma aplicação gerida pelo Intune comporta-se da mesma forma que uma aplicação normal que não suporta políticas de proteção de aplicações do Intune.
Para a proteção de aplicações sem inscrição de dispositivos, o utilizador não é obrigado a inscrever o dispositivo através da aplicação Portal da Empresa.
Suporte
Se a sua organização for um cliente existente do Intune, trabalhe com o seu representante de suporte da Microsoft para abrir um pedido de suporte e criar um problema na página de problemas do GitHub. Ajudaremos assim que pudermos.