Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Observação
Este guia é dividido em várias etapas distintas. Comece revisando Planeje a integração.
Objetivos do Estágio
- Baixe o SDK do aplicativo do Intune.
- Saiba quais arquivos estão incluídos no SDK do aplicativo do Intune.
- Consulte o SDK do aplicativo do Intune em seu aplicativo.
- Confirme se o SDK do aplicativo do Intune está incluído corretamente em sua compilação.
- Registre novas contas para gerenciamento de MAM após autenticar com o MSAL.
- Para remover dados corporativos, cancele o registro de contas ao sair
- (Recomendado) Incorpore o registro em log do MAM em seu aplicativo.
Pré-requisitos
Você precisa de um computador macOS com o Xcode 16.0 ou posterior.
Seu aplicativo deve ser direcionado para iOS 16.0 ou posterior.
Examine os Termos de Licença do SDK do Aplicativo do Intune para iOS. Imprima e guarde uma cópia dos termos de licença para seus registros. Ao baixar e usar o SDK do Aplicativo do Intune para iOS, você concorda com esses termos de licença. Se você não os aceitar, não use o software.
Baixe os arquivos do SDK do Aplicativo do Intune para iOS no GitHub.
O que há no repositório do SDK
IntuneMAMSwift.xcframework: a estrutura dinâmica do SDK do Aplicativo do Intune. É recomendável vincular essa estrutura ao seu aplicativo/extensões para habilitar o gerenciamento de aplicativos cliente do Intune. No entanto, alguns desenvolvedores podem preferir os benefícios de desempenho da estrutura estática (IntuneMAMStatic.xcframework).
IntuneMAMStatic.xcframework: a estrutura estática do SDK do Aplicativo do Intune. Os desenvolvedores podem optar por vincular a estrutura estática em vez da estrutura dinâmica. Como o código executável de uma estrutura estática é inserido diretamente no binário do aplicativo/extensão no momento da compilação, há alguns benefícios de desempenho no tempo de inicialização no uso da biblioteca estática. No entanto, se o aplicativo incluir extensões, vincular a estrutura estática ao aplicativo e às extensões resultará em um tamanho maior do pacote de aplicativos. O código executável é inserido em cada binário de aplicativo/extensão. Por outro lado, ao usar a estrutura dinâmica, os aplicativos e as extensões podem compartilhar o mesmo binário do SDK do Intune, resultando em um tamanho de aplicativo menor.
IntuneMAMSwiftStub.xcframework: a estrutura de stub do Swift do SDK do aplicativo do Intune. Essa estrutura é uma dependência necessária do IntuneMAMSwift.xcframework e do IntuneMAMStatic.xcframework, que aplicativos/extensões devem vincular.
IntuneMAMConfigurator: uma ferramenta usada para configurar o Info.plist do aplicativo ou da extensão com as alterações mínimas necessárias para o gerenciamento do Intune. Dependendo da funcionalidade do seu aplicativo ou extensão, talvez seja necessário fazer mais alterações manuais no Info.plist.
libIntuneMAMSwift.xcframework: a biblioteca estática do SDK do Aplicativo do Intune. Esta variante do SDK do iOS do Intune MAM foi preterida e removida em uma atualização futura. Recomendamos que você não vincule a biblioteca estática e, em vez disso, vincule seu aplicativo/extensões à estrutura dinâmica (IntuneMAMSwift.xcframework) ou à estrutura estática (IntuneMAMStatic.xcframework) mencionada anteriormente.
IntuneMAMResources.bundle: um pacote de recursos que contém recursos dos quais o SDK depende. O pacote de recursos é necessário apenas para aplicativos que integram a biblioteca estática preterida (libIntuneMAMSwift.xcframework) e a removerá em uma atualização futura.
Como funciona o SDK do aplicativo do Intune
O objetivo do SDK do Aplicativo do Intune para iOS é adicionar recursos de gerenciamento a aplicativos iOS com alterações mínimas de código. Quanto menos o código mudar, menor será o tempo de lançamento no mercado, mas sem afetar a consistência e a estabilidade do seu aplicativo móvel.
Fluxo do processo
O diagrama a seguir fornece o fluxo de processo do SDK do Aplicativo do Intune para iOS:
Crie o SDK em seu aplicativo móvel
Importante
O Intune lança regularmente atualizações para o SDK do aplicativo do Intune. Marque regularmente o SDK do Aplicativo do Intune para iOS para obter atualizações e incorporá-las ao ciclo de lançamento de desenvolvimento de software para garantir que seus aplicativos dêem suporte às configurações mais recentes da Política de Proteção do Aplicativo.
Para habilitar o SDK do Aplicativo do Intune, siga estas etapas:
Vincule um ou
IntuneMAMSwift.xcframeworkIntuneMAMStatic.xcframeworkao seu destino: Arraste o pacote xcframework para a lista Frameworks, Bibliotecas e Conteúdo Incorporado do destino do projeto. Repita essas etapas paraIntuneMAMSwiftStub.xcframework. Para seu aplicativo principal, selecione "Inserir & Sinal" na coluna "Inserir" para ambos os xcframeworks adicionados. Para qualquer extensão, selecione "Não Incorporar".
Adicione estas estruturas iOS ao projeto:
- MessageUI.framework
- Security.framework
- CoreServices.framework
- SystemConfiguration.framework
- libsqlite3.tbd
- libc++.tbd
- ImageIO.framework
- LocalAuthentication.framework
- AudioToolbox.framework
- QuartzCore.framework
- WebKit.framework
- MetricKit.framework
Habilite o compartilhamento de conjunto de chaves (se ainda não estiver habilitado) escolhendo Recursos em cada destino de projeto e habilitando a opção Compartilhamento de Conjunto de Chaves . O compartilhamento de conjunto de chaves é necessário para prosseguir para a próxima etapa.
Observação
Seu perfil de provisionamento precisa dar suporte a novos valores de compartilhamento de chaves. Os grupos de acesso do conjunto de chaves devem dar suporte a um caractere curinga. Você pode marcar isso abrindo o arquivo .mobileprovision em um editor de texto, pesquisando por keychain-access-groups e garantindo que você tenha um caractere curinga. Por exemplo:
<key>keychain-access-groups</key> <array> <string>YOURBUNDLESEEDID.*</string> </array>Depois de habilitar o compartilhamento de conjunto de chaves, siga as etapas para criar um grupo de acesso separado no qual o SDK do aplicativo do Intune armazena seus dados. Você pode criar um grupo de acesso de conjunto de chaves usando a interface do usuário ou usando o arquivo de direitos. Se você estiver usando a interface do usuário para criar o grupo de acesso do conjunto de chaves, siga estas etapas:
Se o aplicativo móvel não tiver nenhum grupo de acesso de conjunto de chaves definido, adicione a ID do pacote do aplicativo como o primeiro grupo.
Adicione o grupo
com.microsoft.intune.mamde chaves compartilhadas aos seus grupos de acesso existentes. O SDK do aplicativo do Intune usa esse grupo de acesso para armazenar dados.Adicione
com.microsoft.adalcacheaos seus grupos de acesso existentes.
Observação
Se você configurou a MSAL para usar um grupo de acesso de conjunto de chaves personalizado em vez do padrão de , não precisará especificar esse grupo de acesso de conjunto de
com.microsoft.adalcachechaves aqui. Em vez disso, especifique o grupo de chaves personalizadas. Você também deve configurar o Intune para usar o mesmo grupo de acesso personalizado por meio da configuração ADALCacheKeychainGroupOverride no dicionário Info.plist do IntuneMAMSettings.Se você estiver editando o arquivo de direitos diretamente, em vez de usar a interface do usuário do Xcode para criar os grupos de acesso de conjunto de chaves, adicione os grupos de acesso de conjunto de chaves com (o Xcode lida com
$(AppIdentifierPrefix)isso automaticamente). Por exemplo:$(AppIdentifierPrefix)com.microsoft.intune.mam$(AppIdentifierPrefix)com.microsoft.adalcache
Observação
Um arquivo de direitos é um arquivo XML exclusivo para seu aplicativo móvel. É usado para especificar permissões e recursos especiais em seu aplicativo iOS. Se o aplicativo não tinha anteriormente um arquivo de direitos, a habilitação do compartilhamento de conjunto de chaves (etapa 3) deve ter feito com que o Xcode gerasse um para o aplicativo. Verifique se a ID do pacote do aplicativo é a primeira entrada na lista.
Inclua cada protocolo para
UIApplication canOpenURLoLSApplicationQueriesSchemesqual seu aplicativo passa na matriz do arquivo Info.plist do seu aplicativo. Para cada protocolo listado nesta matriz, adicione uma cópia do protocolo anexado à-intunemammatriz. Além disso, adicione estes valores à matriz:http-intunemam, ,microsoft-edge-https-intunemamsmart-nssmsecbetteractiveshieldmvisionmobilescmxmicrosoft-edge-http-intunemamlacoonsecurityintunemam-mtdzipswanderalookoutwork-aseskycurehttps-intunemamSe o aplicativo usar o protocolo mailto:, adicione tambémms-outlook-intunemamà matriz. Salve suas alterações antes de prosseguir para a próxima etapa.Se o aplicativo ficar sem espaço em sua lista LSApplicationQueriesSchemes, ele poderá remover os esquemas "-intunemam" para aplicativos que também implementam o SDK do Intune MAM. Quando o aplicativo remove "scheme-intunemam" da lista LSApplicationQueriesSchemes,
canOpenURL()o pode retornar respostas incorretas para esses esquemas. Para corrigir esse problema, chame[IntuneMAMPolicy isURLAllowed:url isKnownManagedAppScheme:YES]esse esquema. Essa chamada será retornadaNOse a política bloquear a abertura da URL. Se retornar true, o aplicativo poderá chamarcanOpenURL()com uma identidade vazia para determinar se a URL pode ser aberta. Por exemplo:BOOL __block canOpen = NO; if([policy isURLAllowed:urlForKnownManagedApp isKnownManagedAppScheme:YES]) { [[IntuneMAMPolicyManager instance] setCurrentThreadAccountId:"" forScope:^{ canOpen = [[UIApplication sharedApplication] canOpenURL:urlForKnownManagedApp]; }]; }Se o seu aplicativo ainda não usa o FaceID, verifique se a chave NSFaceIDUsageDescription Info.plist está configurada com uma mensagem padrão. Esta etapa é necessária para que o iOS possa informar ao usuário como o aplicativo pretende usar o FaceID. Uma configuração de política de proteção do aplicativo do Intune permite que o FaceID seja usado como um método de acesso ao aplicativo quando configurado pelo administrador de TI.
Use a ferramenta IntuneMAMConfigurator incluída no repositório do SDK para concluir a configuração do Info.plist do aplicativo. A ferramenta tem três parâmetros:
Propriedade Como usar - Eu <Path to the input plist>- e <Path to the entitlements file>- o (Opcional) <Path to the output plist>Se o parâmetro '-o' não for especificado, o arquivo de entrada será modificado in-loco. A ferramenta é idempotente e deve ser executada novamente sempre que você fizer alterações no Info.plist ou nos direitos do aplicativo. Você também deve baixar e executar a versão mais recente da ferramenta ao atualizar o SDK do Intune, caso os requisitos de configuração do Info.plist tenham sido alterados na versão mais recente.
Observação
Se você tiver um aplicativo SwiftUI, verifique se UISceneConfigurations o UIApplicationSceneManifest dicionário no arquivo Info.pist não está ausente ou vazio. A falha ao definir essa configuração pode impedir que o SDK do Intune proteja seu aplicativo, apesar das políticas de proteção do aplicativo serem aplicadas com êxito.
Se você não tiver um valor específico definido para o UISceneConfigurations então você pode usar esta configuração padrão:
<key>UISceneConfigurations</key>
<dict>
<key>UIWindowSceneSessionRoleApplication</key>
<array>
<dict>
<key>UISceneConfigurationName</key>
<string>Default Configuration</string>
<key>UISceneDelegateClassName</key>
<string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
</dict>
</array>
</dict>
Configurações e recursos do Xcode Build
O aplicativo deve ter "Strip Swift Symbols"(STRIP_SWIFT_SYMBOLS) e "Enable Bitcode"(ENABLE_BITCODE) definidos como NO nas configurações de build do Xcode. Se o aplicativo incluir o recurso "Segurança Aprimorada" disponível no Xcode 26+, você DEVERÁ desabilitar as opções "Autenticar ponteiros" e "Habilitar memória de plataforma somente leitura".
Integrando uma extensão de provedor de arquivos
As extensões de provedor de arquivos têm determinados requisitos de memória que podem dificultar a integração do SDK completo. Para facilitar, há uma biblioteca libIntuneMAMSwiftFileProvider.xcframeworkestática , que é uma versão simplificada do SDK especificamente para extensões de provedor de arquivos. Observe que essa biblioteca é para a parte não relacionada à interface do usuário da extensão FileProvider. Você precisa integrar o SDK completo à extensão de interface do usuário do provedor de arquivos.
Para integrar uma dessas bibliotecas com a extensão do Provedor de Arquivos, siga as etapas para integrar o SDK como uma biblioteca estática. Certifique-se de incluir ContainingAppBundleId a configuração.
Integrando uma extensão de Provedor de Arquivo Não Replicado
Seu aplicativo está usando um Provedor de Arquivos Não Replicado se implementar o protocolo NSFileProviderExtension. Todos os provedores de arquivos criados antes do iOS 16.0 não são replicados.
Em - startProvidingItemAtURL:completionHandler: Marque se você deve criptografar arquivos usando [[IntuneMAMPolicy instance]shouldFileProviderEncryptFiles]. Use a API encryptFile:forAccountId: no IntuneMAMFileProtectionManager para a criptografia de arquivo real. Além disso, compartilhe uma cópia do arquivo quando a criptografia for necessária, pois você não deseja armazenar uma cópia criptografada do arquivo em seu armazenamento em nuvem.
In - importDocumentAtURL:toParentItemIdentifier:completionHandler: Marque se o arquivo está criptografado usando a API isFileEncrytped: no IntuneMAMFileProtectionManager. Se for, descriptografe-o usando a API decryptFile:toCopyPath: do IntuneMAMFileProtectionManager. Em aplicativos de várias identidades, marque também a API canReceiveSharedFile: no IntuneMAMPolicy do proprietário de destino para determinar se o proprietário pode receber o arquivo.
Integrando uma extensão de Provedor de Arquivo Replicado
Seu aplicativo está usando um Provedor de Arquivos Replicado se implementar o protocolo NSFileProviderReplicatedExtension (adicionado no iOS 16.0).
Em - fetchContentsForItemWithIdentifier:version:request:completionHandler: Marque se você deve criptografar arquivos usando [[instância IntuneMAMPolicy]shouldFileProviderEncryptFiles]. Use a API encryptFile:forAccountId: no IntuneMAMFileProtectionManager para obter a criptografia de arquivo real. Compartilhe uma cópia do arquivo quando a criptografia for necessária, porque você não deseja armazenar uma cópia criptografada do arquivo em seu armazenamento em nuvem.
Em - createItemBasedOnTemplate:fields:contents:options:request:completionHandler: Marque se o arquivo está criptografado usando a API isFileEncrypted: no IntuneMAMFileProtectionManager. Se for, descriptografe-o usando a API decryptFile:toCopyPath: do IntuneMAMFileProtectionManager. Em aplicativos de várias identidades, marque também a API canReceiveSharedFile: no IntuneMAMPolicy do proprietário de destino para determinar se o proprietário pode receber o arquivo.
Em qualquer lugar em que o Provedor de Arquivos Replicado crie e passe um NSFileProviderItem para o sistema, chame a API protectFileProviderItem:forAccountId: do IntuneMAMFileProtectionManager com a identidade do proprietário do item. Dependendo de onde o objeto NSFileProviderItem é criado e persistido em sua extensão, talvez seja necessário fazer isso em cada um dos métodos de protocolo do NSFileProviderReplicatedExtension.
Definir as configurações do SDK do Aplicativo do Intune
Você pode usar o dicionário IntuneMAMSettings no arquivo Info.plist do aplicativo para instalar e configurar o SDK do aplicativo do Intune. Se o dicionário IntuneMAMSettings não for visto no arquivo Info.plist, você deverá criá-lo.
No dicionário IntuneMAMSettings, você pode definir as seguintes configurações com suporte para configurar o SDK do aplicativo do Intune.
As seções anteriores abordam algumas dessas configurações e algumas não se aplicam a todos os aplicativos.
| Configuração | Tipo | Definição | Obrigatório? |
|---|---|---|---|
| ADALClientId | Cadeia de caracteres | O identificador de cliente do Microsoft Entra do aplicativo. | Necessário para todos os aplicativos. |
| ADALAuthoridade | Cadeia de caracteres | A autoridade do aplicativo no Microsoft Entra em uso. Você deve usar seu próprio ambiente em que as contas do Microsoft Entra estão configuradas. Para obter mais informações, consulte Opções de configuração do aplicativo. | Obrigatório se o aplicativo for um aplicativo de linha de negócios personalizado criado para uso em uma única organização/locatário do Microsoft Entra. Se esse valor estiver ausente, será usada a autoridade comum do Microsoft Entra (com suporte apenas para aplicativos multilocatários). |
| ADALRedirectUri | Cadeia de caracteres | O URI de redirecionamento do Microsoft Entra do aplicativo. | ADALRedirectUri ou ADALRedirectScheme é necessário para todos os aplicativos. |
| ADALRedirectScheme | Cadeia de caracteres | O esquema de redirecionamento do aplicativo do Microsoft Entra ID. Isso pode ser usado no lugar de ADALRedirectUri se o URI de redirecionamento do aplicativo estiver no formato scheme://bundle_id. |
ADALRedirectUri ou ADALRedirectScheme é necessário para todos os aplicativos. |
| ADALLogOverrideDisabled | Booliano | Especifica se o SDK roteia todos os logs MSAL (incluindo chamadas MSAL do aplicativo, se houver) para seu próprio arquivo de log. O padrão é NÃO. Defina como SIM se o aplicativo definir seu próprio retorno de chamada de log MSAL. | Opcional. |
| ADALCacheKeychainGroupOverride | Cadeia de caracteres | Especifica o grupo de conjunto de chaves a ser usado para o cache MSAL, em vez de "com.microsoft.adalcache". O sistema prefixa isso automaticamente em tempo de execução. |
Opcional. |
| AppGroupIdentifiers | Matriz de cadeias de caracteres | Matriz de grupos de aplicativos da seção de direitos com.apple.security.application-groups do aplicativo. |
Obrigatório se o aplicativo usar grupos de aplicativos. |
| ContainingAppBundleId | Cadeia de caracteres | Especifica a ID do pacote do aplicativo que contém a extensão. | Necessário para extensões do iOS. |
| AutoEnrollOnLaunch | Booliano | Especifica se o aplicativo deve tentar se registrar automaticamente no lançamento se uma identidade gerenciada existente for detectada e ainda não tiver feito isso. O padrão é NÃO. Observação: Se nenhuma identidade gerenciada for encontrada ou nenhum token válido estiver disponível no cache MSAL, o registro falhará silenciosamente, a menos que MAMPolicyRequired seja SIM. |
Opcional. O padrão é NÃO. |
| MAMPolicyRequired | Booliano | Especifica se o aplicativo será impedido de iniciar se ele não tiver uma política de proteção do aplicativo do Intune. O padrão é NÃO. Observação: Os aplicativos não podem ser enviados para a App Store com esta configuração definida como SIM. Ao defini-lo como SIM, AutoEnrollOnLaunch também deve ser SIM. |
Opcional. O padrão é NÃO. |
| MAMPolicyWarnAbsent | Booliano | Especifica se o aplicativo avisará o usuário durante a inicialização se nenhuma política de proteção do aplicativo do Intune estiver presente. Observação: Os usuários ainda podem continuar depois de dispensar o aviso. |
Opcional. O padrão é NÃO. |
| MultiIdentidade | Booliano | Especifica se o aplicativo reconhece várias identidades. Para obter mais informações, consulte a documentação de várias identidades. | Opcional. O padrão é NÃO. |
| MultiIdentityCancelDisabled | Booliano | Desabilita o botão cancelar nas telas de interface do usuário de inicialização condicional do Intune em aplicativos com várias identidades. Se não estiver definido como SIM, o aplicativo deverá lidar com o código de IntuneMAMSwitchIdentityResultCanceled falha. Consulte Identidades de comutação. |
Opcional. O padrão é NÃO. |
| SafariViewControllerBlockedOverride | Booliano | Desabilita os ganchos SafariViewController do Intune para habilitar a autenticação MSAL por meio de SFSafariViewController, SFAuthSession ou ASWebAuthSession. Observação: Um botão de atividade configurada aparecerá somente se a exibição não for gerenciada e estiver definida como SIM. |
Opcional. O padrão é NÃO. Atenção: Pode causar vazamento de dados se usado incorretamente. |
| SplashIconFile SplashIconFile~ipad |
Cadeia de caracteres | Especifica o arquivo de ícone de abertura (inicialização) do Intune. | Opcional. |
| SplashDuration | Número | Tempo mínimo em segundos que a tela de inicialização do Intune é exibida. O padrão é 1.5. | Opcional. |
| BackgroundColor | Cadeia de caracteres | Especifica a cor da tela de fundo dos componentes de interface do usuário do SDK do Intune. Aceita #XXXXXX ou um valor hexadecimal sem o sinal de libra. |
Opcional. O padrão é a cor de fundo do sistema. |
| ForegroundColor | Cadeia de caracteres | Especifica a cor do primeiro plano/texto para os componentes da interface do usuário. Aceita #XXXXXX ou encanta sem sinal de libra. |
Opcional. O padrão é a cor do rótulo do sistema. |
| AccentColor | Cadeia de caracteres | Especifica a cor de destaque para componentes de interface do usuário (botões, realce da caixa PIN). Aceita #XXXXXX ou encanta sem sinal de libra. |
Opcional. O padrão é azul do sistema. |
| SecondaryBackgroundColor | Cadeia de caracteres | Especifica a cor da tela de fundo secundária para telas MTD. Aceita #XXXXXX ou encanta sem sinal de libra. |
Opcional. O padrão é branco. |
| SecondaryForegroundColor | Cadeia de caracteres | Especifica a cor secundária do primeiro plano para telas MTD. Aceita #XXXXXX ou encanta sem sinal de libra. |
Opcional. O padrão é cinza. |
| SupportsDarkMode | Booliano | Especifica se as cores da interface do usuário seguem o Modo Escuro do sistema quando cores explícitas não estão definidas. | Opcional. O padrão é SIM. |
| MAMTelemetryDisabled | Booliano | Especifica se a telemetria é enviada para o back-end. | Opcional. O padrão é NÃO. |
| MAMTelemetryUsePPE | Booliano | Envia telemetria para o back-end do PPE. Útil para testar aplicativos, para que os dados não se misturem com os dados do cliente. | Opcional. O padrão é NÃO. |
| MaxFileProtectionLevel | Cadeia de caracteres | Especifica o limite máximo NSFileProtectionType compatível com o aplicativo. Substitui a política se o serviço enviar um nível superior.Valores possíveis: NSFileProtectionComplete, NSFileProtectionCompleteUnlessOpen, NSFileProtectionCompleteUntilFirstUserAuthenticationNSFileProtectionNone, .Aviso prévio: Com NSFileProtectionComplete, o aplicativo perde o acesso a arquivos protegidos ~10 segundos depois que o dispositivo é bloqueado, o que pode interromper componentes, como bancos de dados locais. Os aplicativos com interface do usuário de tela de bloqueio devem usar NSFileProtectionCompleteUntilFirstUserAuthentication. |
Opcional. O padrão é NSFileProtectionComplete |
| OpenInActionExtension | Booliano | Defina como SIM para extensões Open in Action. Consulte Compartilhando dados via UIActivityViewController. | Opcional. |
| TreatAllWebViewsAsUnmanaged | Booliano | Trata todos os WebViews como não gerenciados para imposição de cortar/copiar/colar. Consulte Exibição de conteúdo da Web. | Opcional. O padrão é NÃO. |
| WebViewHandledURLSchemes | Matriz de cadeias de caracteres | Esquemas de URL manipulados pelo WebView do aplicativo. | Obrigatório se o WebView manipular links ou navegação em JavaScript. |
| DocumentBrowserFileCachePath | Cadeia de caracteres | Se estiver usando UIDocumentBrowserViewController, defina um caminho (relativo ao diretório base do aplicativo) para arquivos gerenciados descriptografados. |
Opcional. O padrão é /Documents/ |
| VerboseLoggingEnabled | Booliano | Habilita o registro em log detalhado. | Opcional. O padrão é NÃO. |
| FinishLaunchingAtStartup | Booliano | Necessário ao usar [BGTaskScheduler registerForTaskWithIdentifier:]; deve ser SIM. |
Opcional. O padrão é NÃO. |
| ValuesToScrubFromLogging | Matriz de cadeias de caracteres | Valores de Configuração do Aplicativo que devem ser removidos dos logs. Também pode ser definido por meio de valuesToScrubFromLogging .IntuneMAMSettings |
Opcional. |
Receber política de proteção do aplicativo
Visão Geral
Para receber a política de proteção do aplicativo do Intune, os aplicativos devem iniciar uma solicitação de registro com o serviço Intune MAM. Os aplicativos podem ser configurados no centro de administração do Intune para receber a política de proteção de aplicativo com ou sem o registro do dispositivo. O MAM (Gerenciamento de Aplicativos Móveis) permite que os aplicativos sejam gerenciados pelo Intune sem a necessidade de o dispositivo ser registrado no MDM (gerenciamento de dispositivo móvel) do Intune. Em ambos os casos, a inscrição no serviço Intune MAM é necessário para receber a política.
Importante
O SDK do aplicativo do Intune para iOS usa chaves de criptografia de 256 bits quando a criptografia é habilitada pelas políticas de proteção do aplicativo. Todos os aplicativos precisam ter uma versão atual do SDK para permitir o compartilhamento protegido de dados.
Aplicativos que já usam ADAL ou MSAL
Observação
Azure AD Biblioteca de Autenticação (ADAL) e Azure AD API do Graph foram preteridas. Para obter mais informações, consulte Atualizar seus aplicativos para usar a Biblioteca de Autenticação da Microsoft (MSAL) e a API do Microsoft Graph .
Os aplicativos que já usam MSAL IntuneMAMEnrollmentManager devem chamar o registerAndEnrollAccountId método na instância depois que o usuário for autenticado com êxito:
/*
* This method adds the account to the list of registered accounts.
* An enrollment request starts immediately.
* @param accountId The Entra object ID of the account to be registered with the SDK
*/
(void)registerAndEnrollAccountId:(NSString *_Nonnull)accountId;
Em caso de logon bem-sucedido, a MSAL retorna o resultado no objeto MSALResult. Use tenantProfile.identifier em MSALResult como o parâmetro accountId para a API.
Ao chamar o registerAndEnrollAccountId método, o SDK registra a conta de usuário e tenta registrar o aplicativo em nome dessa conta. Se o registro falhar por qualquer motivo, o SDK repetirá automaticamente o registro 24 horas depois. Para fins de depuração, o aplicativo pode receber notificações, por meio de um delegado, sobre os resultados de qualquer solicitação de registro.
Depois que essa API for invocada, o aplicativo poderá continuar funcionando normalmente. Se o registro for bem-sucedido, o SDK notificará o usuário de que uma reinicialização do aplicativo é necessária. Nesse momento, o usuário pode reiniciar o aplicativo imediatamente.
[[IntuneMAMEnrollmentManager instance] registerAndEnrollAccountId:@"3ec2c00f-b125-4519-acf0-302ac3761822"];
Aplicativos que não usam ADAL ou MSAL
Os aplicativos que não conectam o usuário usando ADAL ou MSAL ainda podem receber a política de proteção de aplicativo do serviço Intune MAM chamando a API para que o SDK lide com essa autenticação. Os aplicativos devem usar essa técnica quando não autenticaram um usuário com o Microsoft Entra ID, mas ainda precisam recuperar a política de proteção do aplicativo para ajudar a proteger os dados. Um exemplo é se outro serviço de autenticação está sendo usado para entrada no aplicativo ou se o aplicativo não oferece suporte para entrada. Para fazer isso, o aplicativo pode chamar o loginAndEnrollAccountIntuneMAMEnrollmentManager método na instância:
/**
* Creates an enrollment request, which starts immediately.
* If no token can be retrieved for the identity, the user is prompted
* to enter their credentials, after which enrollment is retried.
* @param identity The UPN of the account to be logged in and enrolled.
*/
(void)loginAndEnrollAccount: (NSString *)identity;
Ao chamar esse método, o SDK solicitará credenciais ao usuário se nenhum token existente puder ser encontrado. Em seguida, o SDK tenta registrar o aplicativo no serviço Intune MAM em nome da conta de usuário fornecida. O método pode ser chamado com "nil" como a identidade. Nesse caso, o SDK é registrado com o usuário gerenciado existente no dispositivo (se MDM) ou solicita ao usuário um nome de usuário se nenhum usuário existente for encontrado.
Se o registro falhar, o aplicativo deverá considerar chamar essa API novamente no futuro, dependendo dos detalhes da falha. O aplicativo pode receber notificações, por meio de um representante, sobre os resultados de qualquer solicitação de registro.
Depois que essa API for invocada, o aplicativo poderá continuar funcionando normalmente. Se o registro for bem-sucedido, o SDK notificará o usuário de que uma reinicialização do aplicativo é necessária.
Depois que o aplicativo é gerenciado, o valor da ID do objeto do Microsoft Entra precisa ser consultado usando-se enrolledAccountId o IntuneMAMEnrollmentManagerarquivo . Use isso para todas as APIs do MAM SDK que o aplicativo usa para esta conta registrada.
Exemplo:
[[IntuneMAMEnrollmentManager instance] loginAndEnrollAccount:@"user@foo.com"];
Permitir que o Intune lide com a autenticação e o registro na inicialização
Se você quiser que o SDK do Intune lide com toda a autenticação com ADAL/MSAL e o registro antes que seu aplicativo termine de iniciar e seu aplicativo sempre exija políticas de proteção de aplicativo, você não precisará usar loginAndEnrollAccount a API. Você pode definir as configurações a seguir como SIM no dicionário IntuneMAMSettings no Info.plist do aplicativo.
| Configuração | Tipo | Definição |
|---|---|---|
| AutoEnrollOnLaunch | Booliano | Especifica se o aplicativo deve tentar se registrar automaticamente no lançamento se uma identidade gerenciada existente for detectada e ainda não tiver feito isso. O padrão é NÃO. Observação: Se nenhuma identidade gerenciada for encontrada ou nenhum token válido para a identidade estiver disponível no cache ADAL/MSAL, a tentativa de registro falhará silenciosamente sem solicitar credenciais, a menos que o aplicativo também defina MAMPolicyRequiredcomo SIM. |
| MAMPolicyRequired | Booliano | Especifica se o aplicativo será impedido de iniciar se o aplicativo não tiver uma política de proteção de aplicativo do Intune. O padrão é NÃO. Observação: Os aplicativos não podem ser enviados para a App Store com MAMPolicyRequired definido como SIM. Ao definir MAMPolicyRequired como SIM,AutoEnrollOnLaunch também deve ser definido como SIM. |
Se você escolher essa opção para seu aplicativo, não precisará lidar com a reinicialização do aplicativo após o registro.
Cancelar registro de contas de usuário
Antes que um usuário seja desconectado de um aplicativo, o aplicativo deve cancelar o registro do usuário no SDK. Esse processo garante:
As tentativas de registro não ocorrem mais para a conta do usuário.
A política de Proteção de aplicativos foi removida.
Os dados corporativos serão excluídos se o aplicativo iniciar um apagamento seletivo (opcional).
Antes que o usuário seja desconectado, o aplicativo deve chamar o IntuneMAMEnrollmentManager seguinte método na instância:
/*
* This method removes the provided account from the list of
* registered accounts. Once removed, if the account enrolled
* the application, the account is un-enrolled.
* @note In the case where an un-enroll is required, this method blocks
* until the Intune APP AAD token is acquired, then returns. This method must be called before
* the user is removed from the application (so that required AAD tokens are not purged
* before this method is called).
* @param accountId The object ID of the account to be removed.
* @param doWipe If YES, a selective wipe if the account is un-enrolled
*/
(void)deRegisterAndUnenrollAccountId:(NSString *)accountId withWipe:(BOOL)doWipe;
Esse método deve ser chamado antes que os tokens do Microsoft Entra da conta de usuário sejam excluídos. O SDK precisa dos tokens do Microsoft Entra da conta de usuário para fazer solicitações específicas ao serviço Intune MAM em nome do usuário.
Se o aplicativo excluir os dados corporativos do usuário por conta própria, o doWipe sinalizador poderá ser definido como falso. Caso contrário, o aplicativo pode fazer com que o SDK inicie um apagamento seletivo. Essa ação resulta em uma chamada para o delegado de apagamento seletivo do aplicativo.
Exemplo:
[[IntuneMAMEnrollmentManager instance] deRegisterAndUnenrollAccountId:@"3ec2c00f-b125-4519-acf0-302ac3761822" withWipe:YES];
Notificações de status, resultado e depuração
O aplicativo pode receber notificações de status, resultado e depuração sobre as seguintes solicitações para o serviço Intune MAM:
- Solicitações de registro
- Solicitações de atualização de política
- Solicitações de cancelamento de registro
As notificações são apresentadas por meio de métodos delegados em IntuneMAMEnrollmentDelegate.h:
/**
* Called when an enrollment request operation is completed.
* @param status status object containing debug information
*/
(void)enrollmentRequestWithStatus:(IntuneMAMEnrollmentStatus *)status;
/**
* Called when a MAM policy request operation is completed.
* @param status status object containing debug information
*/
(void)policyRequestWithStatus:(IntuneMAMEnrollmentStatus *)status;
/**
* Called when a un-enroll request operation is completed.
* @Note: when a user is un-enrolled, the user is also de-registered with the SDK
* @param status status object containing debug information
*/
(void)unenrollRequestWithStatus:(IntuneMAMEnrollmentStatus *)status;
Esses métodos delegados retornam um IntuneMAMEnrollmentStatus objeto que tem as seguintes informações:
- A accountId (ID do Objeto) da conta associada à solicitação
- A identidade (UPN) da conta associada à solicitação
- Um código de status que indica o resultado da solicitação
- Uma cadeia de caracteres de erro com uma descrição do código de status
- Um
NSErrorobjeto. Este objeto é definido emIntuneMAMEnrollmentStatus.h, juntamente com os códigos de status específicos que podem ser retornados.
Código de exemplo
A seguir estão exemplos de implementações dos métodos delegados:
- (void)enrollmentRequestWithStatus:(IntuneMAMEnrollmentStatus*)status
{
NSLog(@"enrollment result for identity %@ with status code %ld", status.accountId, (unsigned long)status.statusCode);
NSLog(@"Debug Message: %@", status.errorString);
}
- (void)policyRequestWithStatus:(IntuneMAMEnrollmentStatus*)status
{
NSLog(@"policy check-in result for identity %@ with status code %ld", status.accountId, (unsigned long)status.statusCode);
NSLog(@"Debug Message: %@", status.errorString);
}
- (void)unenrollRequestWithStatus:(IntuneMAMEnrollmentStatus*)status
{
NSLog(@"un-enroll result for identity %@ with status code %ld", status.accountId, (unsigned long)status.statusCode);
NSLog(@"Debug Message: %@", status.errorString);
}
Reinicialização do aplicativo
Quando um aplicativo recebe políticas de MAM pela primeira vez, ele deve reiniciar para aplicar os ganchos necessários. Para notificar o aplicativo de que uma reinicialização precisa acontecer, o SDK fornece um método delegado no IntuneMAMPolicyDelegate.h.
- (BOOL) restartApplication
O valor retornado desse método informa ao SDK se o aplicativo deve lidar com a reinicialização necessária:
Se true for retornado, o aplicativo deverá lidar com a reinicialização.
Se false for retornado, o SDK reiniciará o aplicativo após o retorno desse método. O SDK mostra imediatamente uma caixa de diálogo informando ao usuário para reiniciar o aplicativo.
Observação
Os aplicativos .NET MAUI não exigem uma reinicialização.
Critérios de Saída
Depois de configurar o plug-in de build ou integrar a ferramenta de linha de comando ao processo de build, valide se ela está sendo executada com êxito:
- Certifique-se de que seu build seja compilado e compilado com êxito.
- Inicie seu aplicativo compilado, entre com um usuário do Microsoft Entra que não seja direcionado com a Política de Proteção do Aplicativo e confirme se o aplicativo funciona conforme o esperado.
- Saia e repita esse teste com um usuário do Microsoft Entra direcionado à Política de Proteção do Aplicativo e confirme se o aplicativo agora é gerenciado pelo Intune e reiniciado.
Neste ponto da integração, seu aplicativo agora pode receber e impor a Política de Proteção do Aplicativo. Execute os testes a seguir para validar a integração.
Primeiro teste de aplicativo de política
Execute o seguinte teste primeiro para se familiarizar com a experiência completa do usuário final do aplicativo de política em seu aplicativo:
- Crie uma Política de Proteção do Aplicativo iOS no centro de administração do Microsoft Intune. Para este teste, configure a política:
- Em Requisitos de acesso, mantenha as configurações padrão. Notavelmente, "PIN para Acesso" deve ser "Exigir".
- Verifique se a Política de Proteção do Aplicativo está direcionada ao seu aplicativo. Talvez seja necessário adicionar manualmente a ID do pacote do aplicativo no assistente de criação de política.
- Atribua a Política de Proteção do Aplicativo a um grupo de usuários que contém sua conta de teste.
- Instale o aplicativo.
- Entre no aplicativo com sua conta de teste direcionada à Política de Proteção do Aplicativo.
- Confirme se você é solicitado com uma tela gerenciada do Intune e confirmando que o prompt reinicia o aplicativo. Essa tela indica que o SDK recupera com êxito a política para essa conta.
- Crie um PIN quando for solicitado que você defina um PIN de aplicativo.
- Faça logoff da conta gerenciada do aplicativo.
- Navegue pelo aplicativo e confirme se ele funciona conforme o esperado, se possível, sem fazer logon.
Esta lista de etapas é um teste *mínimo- para confirmar se seu aplicativo registra corretamente a conta, registra o retorno de chamada de autenticação e cancela o registro da conta. Execute os testes a seguir para validar mais detalhadamente como outras configurações de Política de Proteção de Aplicativo modificam o comportamento do seu aplicativo.
Próximas etapas
Depois de concluir todos os Critérios de Saída, vá para o Estágio 4: Recursos de participação no aplicativo.