Intune SDK do aplicativo para iOS – Recursos de participação do aplicativo

O SDK do aplicativo Microsoft Intune para iOS permite que você incorpore Intune políticas de proteção de aplicativo (também conhecidas como políticas de APP ou MAM) em seu aplicativo iOS nativo. Um aplicativo gerenciado por Intune é integrado ao SDK do aplicativo Intune. Intune administradores podem implantar facilmente políticas de proteção de aplicativo em seu aplicativo gerenciado por Intune quando Intune gerencia ativamente o aplicativo.

Observação

Este guia é dividido em vários estágios distintos. Comece examinando Planejar a Integração.

Estágio 4: Recursos de participação do aplicativo

Goals de estágio

  • Saiba mais sobre os vários recursos de participação do aplicativo oferecidos pelo SDK do aplicativo Intune.
  • Integrar recursos de participação do aplicativo relevantes para seu aplicativo e usuários.
  • Teste a integração desses recursos.

O que são "Recursos de Participação de Aplicativo"?

Esse processo de integração do SDK tenta minimizar a quantidade de código específico do aplicativo que os desenvolvedores precisam gravar. Ao concluir com êxito os estágios anteriores da integração do SDK, seu aplicativo agora pode impor a maioria das configurações de política de proteção de aplicativo, como criptografia de arquivo, restrições de cópia/colar, bloqueio de captura de tela e restrições de transferência de dados.

No entanto, há algumas configurações que exigem código específico do aplicativo para impor corretamente; são chamados de recursos de participação do aplicativo. Normalmente, o SDK não tem contexto suficiente sobre o código do aplicativo ou o cenário do usuário final para impor automaticamente essas configurações e, portanto, depende dos desenvolvedores para chamar as APIs do SDK adequadamente.

Os recursos de participação do aplicativo não são necessariamente opcionais. Dependendo dos recursos existentes do aplicativo, esses recursos podem ser necessários.

Os próximos estágios deste guia descreverão vários recursos importantes de participação do aplicativo:

O restante deste guia descreve o conjunto restante de recursos de participação do aplicativo:

  • Implementar contas permitidas
  • Implementar a criptografia de arquivo necessária
  • Implementar controles save-as e open-from
  • Compartilhar dados por meio do UIActivityViewController
  • Habilitar a configuração de destino (configuração do aplicativo APP/MAM) para seus aplicativos iOS
  • Telemetria
  • Intenções da Siri
  • Clipes de Aplicativo
  • Impressão
  • Notificações
  • Postar script de build

Personalizar o comportamento do aplicativo com APIs

O SDK do aplicativo Intune tem várias APIs que você pode chamar para obter informações sobre a política de APP Intune implantada no aplicativo. Você pode usar esses dados para personalizar o comportamento do aplicativo. A tabela a seguir fornece informações sobre algumas classes de Intune essenciais que você usa.

Classe Descrição
IntuneMAMPolicyManager.h A classe IntuneMAMPolicyManager expõe a política Intune APP implantada no aplicativo. Notavelmente, ele expõe APIs que são úteis para habilitar várias identidades.
IntuneMAMPolicy.h A classe IntuneMAMPolicy expõe algumas configurações de política de MAM que se aplicam ao aplicativo. A maioria dessas configurações de política é exposta para que o aplicativo possa personalizar sua interface do usuário. A maioria das configurações de política é imposta pelo SDK e não pelo aplicativo. No entanto, existem algumas exceções. Os desenvolvedores de aplicativos devem examinar os comentários neste cabeçalho para determinar quais APIs são aplicáveis aos cenários de seu aplicativo.
IntuneMAMFileProtectionManager.h A classe IntuneMAMFileProtectionManager expõe APIs que o aplicativo pode usar para proteger explicitamente arquivos e diretórios com base em uma identidade fornecida. A identidade pode ser gerenciada por Intune ou não gerenciada e o SDK aplicará a política de MAM apropriada. Usar essa classe é opcional.
IntuneMAMDataProtectionManager.h A classe IntuneMAMDataProtectionManager expõe APIs que o aplicativo pode usar para proteger buffers de dados com uma identidade fornecida. A identidade pode ser gerenciada por Intune ou não gerenciada e o SDK aplicará a criptografia adequadamente.

Implementar contas permitidas

Intune permite que os administradores de TI especifiquem em quais contas podem ser registradas pelo usuário. Os aplicativos podem consultar o SDK do aplicativo Intune para a lista especificada de contas permitidas e, em seguida, garantir que apenas contas permitidas sejam conectados ao dispositivo.

Para consultar contas permitidas, o Aplicativo deve marcar a allowedAccounts propriedade no IntuneMAMEnrollmentManager. A allowedAccounts propriedade é uma matriz que contém as contas permitidas ou zero. Se a propriedade for nula, nenhuma conta permitida será especificada. Os aplicativos habilitados para MSAL/OneAuth devem usar a allowedAccountIds propriedade na instância para consultar o IntuneMAMEnrollmentManager OID.

Os aplicativos também podem reagir às alterações da allowedAccounts propriedade observando a IntuneMAMAllowedAccountsDidChangeNotification notificação. A notificação é postada sempre que a allowedAccounts propriedade é alterada no valor.

Os seguintes requisitos são necessários ao usar APIs para contas permitidas:

  • A comparação de identidade deve ser insensibilidade de caso para UPN e OID.
  • A comparação de identidade deve dar suporte a UPN e OID.
  • O aplicativo deve ter log para diagnosticar qualquer incompatibilidade entre a conta especificada pelo administrador e a conta inserida pelo usuário.

Implementar a criptografia de arquivo necessária

A isFileEncryptionRequired API definida em IntuneMAMPolicy.h informa os aplicativos quando o administrador de TI exige que os aplicativos usem Intune criptografia em todos os arquivos salvos em disco. Se isFileEncryptionRequired for verdadeiro, então é responsabilidade do aplicativo garantir que todos os arquivos salvos em disco pelo aplicativo sejam criptografados usando as APIs em IntuneMAMFile.h, IntuneMAMFileProtectionManager.he IntuneMAMFDataProtectionManager.h.

Os aplicativos podem reagir às alterações nessa política observando a IntuneMAMDataProtectionDidChangeNotification notificação definida em IntuneMAMFDataProtectionManager.h.

Implementar controles save-as e open-from

Intune permite que os administradores de TI selecionem em quais locais de armazenamento um aplicativo gerenciado pode salvar dados ou abrir dados. Os aplicativos podem consultar o SDK do MAM Intune para locais de armazenamento salvos permitidos usando a isSaveToAllowedForLocation:withAccount: API, definida em IntuneMAMPolicy.h. Os aplicativos também podem consultar o SDK para locais de armazenamento abertos permitidos usando a isOpenFromAllowedForLocation:withAccount: API, também definida em IntuneMAMPolicy.h.

Além disso, os aplicativos podem verificar se os dados de entrada de uma extensão de compartilhamento são permitidos consultando a canReceiveSharedItemProvider: API, definida em IntuneMAMPolicy.h. Os aplicativos também podem consultar a canReceiveSharedFile: API para verificar arquivos de entrada de uma chamada openURL, também definida em IntuneMAMPolicy.h

Observação

Foram feitas alterações no comportamento interno a partir do SDK do MAM v15.1.0.

  • Uma nil conta não será mais tratada como a conta atual dos locais LocalDrive/LocalStorage. A passagem de uma nil conta fará com que ela seja tratada como uma conta não gerenciada. Como os aplicativos podem controlar como lidam com o armazenamento de área restrita, uma identidade pode e deve ser associada a esses locais.
  • Uma nil conta não será mais tratada como a conta atual para aplicativos de identidade única. A passagem de uma nil conta em um aplicativo de identidade única agora será tratada exatamente como se ela fosse passada para um aplicativo de várias identidades. Se você estiver desenvolvendo um aplicativo de identidade única, use os IntuneMAMPolicy's primaryUser para consultar a conta corrente se gerenciado e nil para se referir à conta atual se não for gerenciado.

Manipulando cenários de salvamento

Antes de mover dados para um novo armazenamento em nuvem ou local, um aplicativo deve marcar com a isSaveToAllowedForLocation:withAccount: API para saber se o administrador de TI permitiu a transferência de dados. Esse método é chamado em um IntuneMAMPolicy objeto. Os dados que estão sendo editados e salvos no local não precisam ser verificados com essa API.

Observação

O IntuneMAMPolicy objeto deve representar as políticas do proprietário dos dados que estão sendo salvos. Para obter o IntuneMAMPolicy objeto de uma identidade específica, chame IntuneMAMPolicyManagero método de 's policyForIdentity: . Se o proprietário for uma conta não gerenciada sem identidade, nil poderá ser passado para policyForIdentity:. Mesmo que os dados salvos não sejam dados organizacionais, isSaveToAllowedForLocation:withAccount: ainda devem ser chamados. A conta que possui o local de destino ainda pode ter políticas que restringem dados não gerenciados de entrada.

O isSaveToAllowedForLocation:withAccount: método usa dois argumentos. O primeiro argumento é um valor de enumeração do tipo IntuneMAMSaveLocation definido em IntuneMAMPolicy.h. O segundo argumento é o UPN da identidade que possui o local. Se o proprietário não for conhecido, nil poderá ser usado em vez disso.

Locais de salvamento com suporte

O SDK do MAM Intune fornece suporte para os seguintes locais de salvamento definidos em IntuneMAMPolicy.h:

  • IntuneMAMSaveLocationOneDriveForBusiness- Esse local representa OneDrive for Business locais. A identidade associada à conta do OneDrive deve ser passada como o segundo argumento.
  • IntuneMAMSaveLocationSharePoint- Esse local representa o SharePoint online e Microsoft Entra locais locais do SharePoint do Auth Modern Híbrido. A identidade associada à conta do SharePoint deve ser passada como o segundo argumento.
  • IntuneMAMSaveLocationLocalDrive - Esse local representa o armazenamento de área restrita do aplicativo que só pode ser acessado pelo aplicativo. Esse local não deve ser usado para salvar por meio de um seletor de arquivos ou para salvar em arquivos por meio de uma extensão de compartilhamento. Se uma identidade puder ser associada ao armazenamento de área restrita do aplicativo, ela deverá ser passada como o segundo argumento. Se não houver identidade, nil deve ser passado em vez disso. Por exemplo, um aplicativo pode usar contêineres de armazenamento de área restrita de aplicativos separados para contas diferentes. Nesse caso, a conta que possui o contêiner que está sendo acessado deve ser usada como o segundo argumento.
  • IntuneMAMSaveLocationCameraRoll - Esse local representa a Biblioteca de Fotos do iOS. Como não há nenhuma conta associada à Biblioteca de Fotos do iOS, só nil deve ser passada como o segundo argumento quando esse local é usado.
  • IntuneMAMSaveLocationAccountDocument - Esse local representa qualquer local da organização não listado anteriormente que possa ser vinculado a uma conta gerenciada. A conta da organização associada ao local deve ser passada como o segundo argumento. Por exemplo, carregar uma foto no serviço de nuvem LOB de uma organização que está vinculado à conta da organização.
  • IntuneMAMSaveLocationOther - Esse local representa qualquer local não organizacional, não listado anteriormente ou qualquer local desconhecido. Se uma conta estiver associada ao local, ela deverá ser passada como o segundo argumento. Caso contrário, nil deve ser usado em vez disso.
Considerações especiais para salvar locais

O IntuneMAMSaveLocationLocalDrive local só deve ser usado para o armazenamento de área restrita de aplicativo que só pode ser acessado pelo aplicativo. Para verificar se um arquivo pode ser salvo no armazenamento de dispositivos iOS por meio de um seletor de arquivos ou algum outro método em que os dados estarão acessíveis no aplicativo Files, IntuneMAMSaveLocationOther deve ser usado.

Se o local de destino não estiver listado, IntuneMAMSaveLocationAccountDocument ou IntuneMAMSaveLocationOther deverá ser usado. Se o local contiver dados organizacionais acessados usando a conta gerenciada (ou seja, O serviço de nuvem LOB para armazenar dados organizacionais) IntuneMAMSaveLocationAccountDocument deve ser usado. Se o local não contiver dados organizacionais, o IntuneMAMSaveLocationOther local deverá ser usado.

Lidar com cenários abertos

Antes de importar dados de um novo armazenamento em nuvem ou local, um aplicativo deve marcar com a isOpenFromAllowedForLocation:withAccount: API para saber se o administrador de TI permitiu a transferência de dados. Esse método é chamado em um IntuneMAMPolicy objeto. Os dados que estão sendo abertos no local não precisam ser verificados com essa API.

Observação

O IntuneMAMPolicy objeto deve representar as políticas da identidade que recebe os dados. Para obter o IntuneMAMPolicy objeto de uma identidade específica, chame IntuneMAMPolicyManagero método de 's policyForIdentity: . Se a conta receptora for uma conta não gerenciada sem identidade, nil poderá ser passada para policyForIdentity:. Mesmo que os dados recebidos não sejam dados organizacionais, isOpenFromAllowedForLocation:withAccount: ainda devem ser chamados. A conta que possui os dados ainda pode ter políticas que restringem os destinos das transferências de dados de saída.

O isOpenFromAllowedForLocation:withAccount: método usa dois argumentos. O primeiro argumento é um valor de enumeração do tipo IntuneMAMOpenLocation definido em IntuneMAMPolicy.h. O segundo argumento é o UPN da identidade que possui o local. Se o proprietário não for conhecido, nil poderá ser usado em vez disso.

Locais abertos com suporte

O SDK do MAM Intune fornece suporte para os seguintes locais abertos definidos em IntuneMAMPolicy.h:

  • IntuneMAMOpenLocationOneDriveForBusiness- Esse local representa OneDrive for Business locais. A identidade associada à conta do OneDrive deve ser passada como o segundo argumento.
  • IntuneMAMOpenLocationSharePoint- Esse local representa o SharePoint online e Microsoft Entra locais locais do SharePoint do Auth Modern Híbrido. A identidade associada à conta do SharePoint deve ser passada como o segundo argumento.
  • IntuneMAMOpenLocationCamera - Esse local representa apenas novas imagens tiradas pela câmera. Como não há nenhuma conta associada à câmera iOS, só nil deve ser passada como o segundo argumento quando esse local é usado. Para abrir dados da Biblioteca de Fotos do iOS, use IntuneMAMOpenLocationPhotos.
  • IntuneMAMOpenLocationPhotos - Esse local representa apenas imagens existentes na Biblioteca de Fotos do iOS. Como não há nenhuma conta associada à Biblioteca de Fotos do iOS, só nil deve ser passada como o segundo argumento quando esse local é usado. Para abrir imagens tiradas diretamente da câmera do iOS, use IntuneMAMOpenLocationCamera.
  • IntuneMAMOpenLocationLocalStorage - Esse local representa o armazenamento de área restrita do aplicativo que só pode ser acessado pelo aplicativo. Esse local não deve ser usado para abrir arquivos de um seletor de arquivos ou lidar com arquivos de entrada de uma openURL. Se uma identidade puder ser associada ao armazenamento de área restrita do aplicativo, ela deverá ser passada como o segundo argumento. Se não houver identidade, nil deve ser passado em vez disso. Por exemplo, um aplicativo pode usar contêineres de armazenamento de área restrita de aplicativos separados para contas diferentes. Nesse caso, a conta que possui o contêiner que está sendo acessado deve ser usada como o segundo argumento.
  • IntuneMAMOpenLocationAccountDocument - Esse local representa qualquer local da organização não listado anteriormente que possa ser vinculado a uma conta gerenciada. A conta da organização associada ao local deve ser passada como o segundo argumento. Por exemplo, baixar uma foto do serviço de nuvem LOB de uma organização vinculada à conta da organização.
  • IntuneMAMOpenLocationOther - Esse local representa qualquer local não organizacional, não listado anteriormente ou qualquer local desconhecido. Se uma conta estiver associada ao local, ela deverá ser passada como o segundo argumento. Caso contrário, nil deve ser usado em vez disso.
Considerações especiais para locais abertos

O IntuneMAMOpenLocationLocalStorage local só deve ser usado para o armazenamento de área restrita de aplicativo que pode ser acessado pelo aplicativo. Para verificar se um arquivo pode ser aberto do armazenamento de dispositivos iOS por meio de um seletor de arquivos ou algum outro método em que os dados também estão acessíveis no aplicativo Files, IntuneMAMOpenLocationOther deve ser usado.

Se o local de destino não estiver listado, IntuneMAMOpenLocationAccountDocument ou IntuneMAMOpenLocationOther deverá ser usado. Se o local contiver dados organizacionais acessados usando a conta gerenciada. Por exemplo, o serviço de nuvem LOB para armazenar dados IntuneMAMOpenLocationAccountDocument organizacionais deve ser usado. Se o local não contiver dados organizacionais, o IntuneMAMSaveLocationOther local deverá ser usado.

Manipulando NSItemProviders e Arquivos de entrada

Para lidar com NSItemProviders recebidos de uma extensão de compartilhamento, o IntuneMAMPolicymétodo 's canReceiveSharedItemProvider: pode ser usado em vez de isOpenFromAllowedForLocation:withAccount:. O canReceiveSharedItemProvider: método usa um NSItemProvider e retorna se é permitido pelo administrador de TI ser aberto na IntuneMAMPolicy conta do objeto. O item deve ser carregado antes de chamar esse método. Por exemplo, chamando loadItemForTypeIdentifier:options:completionHandler. Esse método também pode ser chamado do manipulador de conclusão passado para a chamada de carga NSItemProvider.

Para lidar com arquivos de entrada, o IntuneMAMPolicymétodo 's canReceiveSharedFile: pode ser usado em vez de isOpenFromAllowedForLocation:withAccount:. O canReceiveSharedFile: método usa um caminho NSString e retorna se é permitido pelo administrador de TI ser aberto na IntuneMAMPolicy conta do objeto.

Compartilhamento de alerta bloqueado

Uma função auxiliar de interface do usuário pode ser usada quando a isSaveToAllowedForLocation:withAccount: API ou isOpenFromAllowedForLocation:withAccount: é chamada e encontrada para bloquear a ação salvar/abrir. Se o aplicativo quiser notificar o usuário de que a ação foi bloqueada, ele poderá chamar a showSharingBlockedMessage API definida IntuneMAMUIHelper.h para apresentar uma exibição de alerta com uma mensagem genérica.

Compartilhar dados por meio do UIActivityViewController

A partir da versão 8.0.2, o SDK do aplicativo Intune pode filtrar UIActivityViewController ações para que apenas Intune locais de compartilhamento gerenciado estejam disponíveis para seleção. Esse comportamento será controlado pela política de transferência de dados do aplicativo.

Ações 'Copiar para'

Ao compartilhar documentos por meio do e UIDocumentInteractionController, o UIActivityViewController iOS exibe ações "Copiar para" para cada aplicativo que dá suporte à abertura do documento que está sendo compartilhado. Os aplicativos declaram os tipos de documento que dão suporte por meio da CFBundleDocumentTypes configuração em seu Info.plist. Esse tipo de compartilhamento não estará mais disponível se a política proibir o compartilhamento em aplicativos não gerenciados. Como substituição, o usuário terá que adicionar uma extensão de Ação que não seja da interface do usuário ao seu aplicativo e vinculá-la ao SDK do aplicativo Intune. A extensão Ação é apenas um stub. O SDK implementará o comportamento de compartilhamento de arquivos. Siga as etapas abaixo:

  1. Seu aplicativo deve ter pelo menos um schemeURL definido em seu Info.plist CFBundleURLTypes junto com seu -intunemam equivalente. Por exemplo:

    <key>CFBundleURLSchemes</key>
     <array>
     	<string>launch-com.contoso.myapp</string>
     	<string>launch-com.contoso.myapp-intunemam</string>
     </array>
    
  2. O aplicativo e a extensão de ação devem compartilhar pelo menos um Grupo de Aplicativos e o Grupo de Aplicativos deve ser listado na AppGroupIdentifiers matriz nos dicionários IntuneMAMSettings do aplicativo e da extensão.

  3. O aplicativo e a extensão de ação devem ter o recurso de Compartilhamento de Chave e compartilhar o com.microsoft.intune.mam grupo keychain.

  4. Nomeie a extensão de ação "Abrir" seguida pelo nome do aplicativo. Localize o Info.plist conforme necessário.

  5. Forneça um ícone de modelo para a extensão, conforme descrito pela documentação do desenvolvedor da Apple. Como alternativa, a ferramenta IntuneMAMConfigurator pode ser usada para gerar essas imagens do diretório .app aplicativo. Para isso, execute:

    IntuneMAMConfigurator -generateOpenInIcons /path/to/app.app -o /path/to/output/directory
    
  6. Em IntuneMAMSettings no Info.plist da extensão, adicione uma configuração booliana nomeada OpenInActionExtension com o valor YES.

  7. Configure o para dar suporte a NSExtensionActivationRule um único arquivo e todos os tipos do prefixado do CFBundleDocumentTypes aplicativo com com.microsoft.intune.mam. Por exemplo, se o aplicativo for compatível com public.text e public.image, a regra de ativação será:

    SUBQUERY (
        extensionItems,
        $extensionItem,
        SUBQUERY (
            $extensionItem.attachments,
            $attachment,
            ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.microsoft.intune.mam.public.text" ||
            ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.microsoft.intune.mam.public.image").@count == 1
    ).@count == 1
    

Atualizar extensões de compartilhamento e ação existentes

Se seu aplicativo já contiver extensões share ou Action, elas NSExtensionActivationRule terão que ser modificadas para permitir os tipos de Intune. Para cada tipo com suporte pela extensão, adicione um tipo adicional prefixado com com.microsoft.intune.mam. Por exemplo, se a regra de ativação existente for:

SUBQUERY (
    extensionItems,
    $extensionItem,
    SUBQUERY (
        $extensionItem.attachments,
        $attachment,
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.url" ||
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.plain-text" ||
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.image" ||
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.data"
    ).@count > 0
).@count > 0

Deve ser alterada para:

SUBQUERY (
    extensionItems,
    $extensionItem,
    SUBQUERY (
        $extensionItem.attachments,
        $attachment,
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.url" ||
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.plain-text" ||
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.image" ||
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.data" ||
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.microsoft.intune.mam.public.url" ||
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.microsoft.intune.mam.public.plain-text" ||
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.microsoft.intune.mam.public.image" ||
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.microsoft.intune.mam.public.data"
    ).@count > 0
).@count > 0

Observação

A ferramenta IntuneMAMConfigurator pode ser usada para adicionar os tipos de Intune à regra de ativação. Se a regra de ativação existente usar as constantes de cadeia de caracteres predefinidas. Por exemplo, NSExtensionActivationSupportsFileWithMaxCount, NSExtensionActivationSupportsText, etc., a sintaxe predicado pode ficar bastante complexa. A ferramenta IntuneMAMConfigurator também pode ser usada para converter a regra de ativação das constantes de cadeia de caracteres em uma cadeia de caracteres predicado ao adicionar os tipos de Intune.

Como a interface do usuário deve ser

Interface do usuário antiga:

Compartilhamento de dados – interface do usuário de compartilhamento antigo do iOS

Nova interface do usuário:

Compartilhamento de dados – nova interface do usuário de compartilhamento do iOS

Habilitar a configuração de aplicativo direcionado para seus aplicativos iOS

A configuração de destino do MAM (também conhecido como configuração de aplicativo MAM) permite que um aplicativo receba dados de configuração por meio do SDK Intune. O formato e as variantes desses dados devem ser definidos e comunicados aos clientes Intune pelo proprietário/desenvolvedor do aplicativo.

Intune administradores podem direcionar e implantar dados de configuração por meio do Microsoft Intune centro de administração e Intune API do Graph. A partir da versão 7.0.1 do SDK do aplicativo Intune para iOS, os aplicativos que estão participando da configuração de destino do MAM podem ser fornecidos dados de configuração direcionados ao MAM por meio do Serviço MAM. Os dados de configuração do aplicativo são enviados por push por meio do serviço MAM diretamente para o aplicativo, em vez de por meio do canal MDM. O SDK do aplicativo Intune fornece uma classe para acessar os dados recuperados desses consoles. Os seguintes itens são pré-requisitos:

  • O aplicativo precisa ser registrado com o serviço Intune MAM antes de acessar a interface do usuário de configuração de destino do MAM. Para obter mais informações, consulte Receber política de proteção de aplicativo.

  • Inclua IntuneMAMAppConfigManager.h no arquivo de origem do aplicativo.

  • Chame [[IntuneMAMAppConfigManager instance] appConfigForIdentity:] para obter o Objeto Config do Aplicativo.

  • Chame o seletor apropriado no IntuneMAMAppConfig objeto. Por exemplo, se a chave do aplicativo for uma cadeia de caracteres, você deseja usar stringValueForKey ou allStringsForKey. Consulte IntuneMAMAppConfig.h uma descrição detalhada sobre valores retornados e condições de erro.

Para obter mais informações sobre os recursos do API do Graph, consulte Referência API do Graph.

Para obter mais informações sobre como criar uma política de configuração de aplicativo direcionada do MAM no iOS, consulte a seção na configuração de aplicativo direcionado do MAM em Como usar Microsoft Intune políticas de configuração de aplicativo para iOS/iPadOS.

Telemetria

Por padrão, o SDK do aplicativo Intune para iOS coleta telemetria nos seguintes tipos de eventos:

  • Lançamento do aplicativo: para ajudar Microsoft Intune aprender sobre o uso do aplicativo habilitado para MAM por tipo de gerenciamento (MAM com MDM, MAM sem registro de MDM e assim por diante).

  • Chamadas de registro: para ajudar Microsoft Intune aprender sobre a taxa de sucesso e outras métricas de desempenho das chamadas de registro iniciadas do lado do cliente.

  • Intune ações: para ajudar a diagnosticar problemas e garantir Intune funcionalidade, coletamos informações sobre Intune ações do SDK.

Observação

Se você optar por não enviar Intune dados de telemetria do SDK do aplicativo para Microsoft Intune do seu aplicativo móvel, deverá desabilitar Intune captura de telemetria do SDK do aplicativo. Defina a propriedade MAMTelemetryDisabled como SIM no dicionário IntuneMAMSettings.

Intenções da Siri

Se seu aplicativo se integrar ao Siri Intents ou fizer Doações de Intenção siri, leia os comentários para areSiriIntentsAllowedIntuneMAMPolicy.h obter instruções sobre como dar suporte a esse cenário.

Observação

No iOS 16 e superior, uma nova estrutura do sistema de Intenções de Aplicativo está disponível para criar as Intenções do Aplicativo Swift. Os aplicativos que implementam uma Intenção de Aplicativo devem primeiro marcar a areSiriIntentsAllowed propriedade no objeto IntuneMAMPolicy para o usuário.

Clipes de Aplicativo

Se seu aplicativo incluir um destino de clipe de aplicativo, verifique se nenhum dado gerenciado é apresentado no clipe do aplicativo. O clipe do aplicativo deve ser considerado um local não gerenciado. No momento, não há suporte para a integração do SDK aos Clipes de Aplicativo.

Impressão

Se o aplicativo implementar a impressão e fornecer uma ação de impressão personalizada em um menu personalizado, utilize para UIPrintInteractionController.isPrintingAvailable() determinar se você deve adicionar sua ação de impressão ao seu menu personalizado.

Notificações

Se seu aplicativo receber notificações, leia os comentários para notificationPolicyIntuneMAMPolicy.h obter instruções sobre como dar suporte a esse cenário. É recomendável que os aplicativos se registrem para IntuneMAMPolicyDidChangeNotification descritos no IntuneMAMPolicyManager.he comuniquem esse valor ao seu UNNotificationServiceExtension por meio do keychain.

Extensões da Web do Safari

Se seu aplicativo tiver uma extensão Web do Safari e oferecer suporte ao envio de dados entre a extensão e o aplicativo pai, em alguns cenários, seu aplicativo poderá precisar dar suporte ao bloqueio dos dados. Para bloquear os dados, no aplicativo pai, chame a isAppSharingAllowed API em IntuneMAMPolicy.he bloqueie a extensão da Web.

Postar script de build

A ferramenta de linha de comando IntuneMAMFrameworkPatcher não deve mais ser executada como a última etapa do processo de build do aplicativo. No entanto, essa ferramenta está disponível como parte do SDK do aplicativo Intune para iOS no GitHub.

Importante

A partir da versão 17.7.1 do Intune SDK do MAM, essa etapa não é mais necessária. A ferramenta de linha de comando IntuneMAMFrameworkPatcher não deve mais ser executada.

Uso de linha de comando

IntuneMAMFrameworkPatcher -i /path/to/directory_or_binary [-resign] [-verbose]

Parâmetros:

  • i, r, v: esse parâmetro permite que você escolha instalar, remover ou verificar o Intune MAM Framework Patcher para o processo de build de aplicativo.
  • path: o path deve ser a raiz do diretório .app do aplicativo.
  • resign: A resign opção instrui a ferramenta a renunciar a binários que tinham uma assinatura válida antes de corrigir o binário. Essa opção deve ser usada se o projeto incluir dependências de estrutura ou plug-ins com a opção Inserir e Assinar , mesmo quando executado antes da assinatura final do aplicativo ou se a ferramenta for executada após a assinatura final do aplicativo.
  • verbose: A opção verbose fará com que a ferramenta gere informações sobre cada binário que foi corrigido.

Outros usos:

  • Remova o patch:

    IntuneMAMFrameworkPatcher -r /path/to/directory_or_binary [-resign] [-verbose]

  • Verifique o patch:

    IntuneMAMFrameworkPatcher -v /path/to/directory_or_binary [-verbose]

Script de exemplo:

IntuneMAMFrameworkPatcher -i $BUILT_PRODUCTS_DIR/$EXECUTABLE_FOLDER_PATH -resign -verbose

Para obter mais informações sobre como começar e baixar o SDK, consulte Introdução ao SDK do aplicativo Microsoft Intune.

Critérios de saída

Validando salvar para / abrir de restrições

Ignore se você não implementou controles save-as e open-from.

Refamiliarize-se em todos os cenários em que seu aplicativo possa salvar dados em armazenamentos de nuvem ou locais e abrir dados de armazenamentos na nuvem ou locais.

Para simplificar, esses testes pressupõem que seu aplicativo inclua apenas suporte para salvar e abrir dados de OneDrive for Business de um único local dentro do aplicativo. No entanto, você deve validar todas as combinações: cada local de salvamento com suporte em cada lugar em que seu aplicativo permite salvar dados e cada local aberto com suporte em cada lugar em que seu aplicativo permite a abertura de dados.

Para esses testes, instale seu aplicativo, integre-o ao SDK e faça logon com uma conta gerenciada antes de iniciar o teste.

Além disso:

  • Defina a política da conta gerenciada como:
    • "Enviar dados da organização para outros aplicativos" para "Aplicativos gerenciados por políticas".
    • "Receber dados de outros aplicativos" para "Aplicativos gerenciados por políticas".
Cenário Pré-condições Etapas
Salvar para, totalmente permitido Política "Salvar cópias de dados da organização" definida como "Permitir" – Navegue até onde seu aplicativo pode salvar dados para OneDrive for Business.
- Tente salvar um documento para OneDrive for Business, para a mesma conta gerenciada registrada em seu aplicativo.
- Confirme se a salvação é permitida.
Salvar para, isento - Política "Salvar cópias de dados da organização" definida como "Bloquear"
- Política "Permitir que o usuário salve cópias em serviços selecionados" definida apenas como "OneDrive for Business"
– Navegue até onde seu aplicativo pode salvar dados para OneDrive for Business.
- Tente salvar um documento para OneDrive for Business, para a mesma conta gerenciada registrada em seu aplicativo.
- Confirme se a salvação é permitida.
- Se o aplicativo permitir, tente salvar o arquivo em um local de armazenamento na nuvem diferente e confirme se ele está bloqueado.
Salvar para, bloqueado Política "Salvar cópias de dados da organização" definida como "Bloquear" – Navegue até onde seu aplicativo pode salvar dados para OneDrive for Business.
- Tente salvar um documento para OneDrive for Business, para a mesma conta gerenciada registrada em seu aplicativo.
- Confirme se a salvação está bloqueada.
- Se o aplicativo permitir, tente salvar o arquivo em um local de armazenamento na nuvem diferente e confirme se ele está bloqueado.
Abrir de, totalmente permitido Política "Abrir dados em documentos da Organização" definida como "Permitir" – Navegue até onde seu aplicativo pode abrir dados de OneDrive for Business.
– Tente abrir um documento de OneDrive for Business, da mesma conta gerenciada registrada no armazenamento do aplicativo.
- Confirme se a abertura é permitida.
Abrir de, isento - Política "Abrir dados em documentos da Organização" definida como "Bloquear"
- Política "Permitir que os usuários abram dados de serviços selecionados" definida apenas como "OneDrive for Business"
– Navegue até onde seu aplicativo pode abrir dados de OneDrive for Business.
– Tente abrir um documento de OneDrive for Business, da mesma conta gerenciada registrada no armazenamento do aplicativo.
- Confirme se a abertura é permitida.
- Se o aplicativo permitir, tente abrir outro arquivo de um local de armazenamento em nuvem diferente e confirme se ele está bloqueado.
Abrir, bloqueado Política "Abrir dados em documentos da Organização" definida como "Bloquear" – Navegue até onde seu aplicativo pode abrir dados de OneDrive for Business.
– Tente abrir um documento de OneDrive for Business, da mesma conta gerenciada registrada no armazenamento do aplicativo.
- Confirme se a abertura está bloqueada.
- Se o aplicativo permitir, tente abrir outro arquivo de um local de armazenamento em nuvem diferente e confirme se ele está bloqueado.

Validando ações de "Copiar para"

Ignore se você não implementou ações de "Copiar para".

Para simplificar, esses testes pressupõem que seu aplicativo inclua apenas suporte para copiar dados para aplicativos do Microsoft Office, como Microsoft Word, Excel etc. No entanto, você deve validar todas as combinações: cada local copiado com suporte em cada lugar para o qual seu aplicativo permite copiar dados.

Para esses testes, instale seu aplicativo, integre-o ao SDK e faça logon com uma conta gerenciada antes de iniciar o teste.

Além disso:

  • Concluiu todas as etapas de integração das ações 'Copiar para' com uma Extensão de Ação para Microsoft Word e compilar e executar o aplicativo com êxito.
  • Defina a política da conta gerenciada como:
    • "Enviar dados da organização para outros aplicativos" para "Aplicativos gerenciados por políticas".
Cenário Pré-condições Etapas
Selecione aplicativos para isenção, Nenhum Política "Enviar dados da organização para outros aplicativos" definida como "Aplicativos gerenciados por políticas" – Navegue até onde seu aplicativo pode copiar dados para a Microsoft Word e iniciar a opção de compartilhamento para esses dados.
- Confirme em vez de ver "Copiar para Word" como uma opção, você pode ver "Abrir em Word".
- Pressione "Abrir em Word" e confirme se o documento foi copiado e exibido com êxito, dado que Word também está conectado com a mesma conta gerenciada.

Validando ações de impressão

Ignore se você não implementou a Impressão.

Para este teste, instale seu aplicativo, integre-o ao SDK e faça logon com uma conta gerenciada antes de iniciar o teste.

Além disso:

  • Concluiu todas as etapas de integração de Imprimir e compilar e executar o aplicativo com êxito.
  • Seu aplicativo já implementa alertas/itens de ação para lidar com o caso quando a impressão não é permitida do administrador de TI do APP. Neste teste, supondo que seu aplicativo solicitará um alerta aos usuários finais quando a impressão for bloqueada.
Cenário Etapas
Imprimir dados da organização, Bloquear – Navegue até onde seu aplicativo pode exibir dados e iniciar a opção de compartilhamento para esses dados.
- Pressione em "Imprimir".
- Confirme se um alerta de bloco é exibido e a impressão não é permitida.
Imprimir dados da organização, permitir – Navegue até onde seu aplicativo pode exibir dados e iniciar a opção de compartilhamento para esses dados.
- Pressione em "Imprimir".
- Confirme a exibição "Imprimir" exibida e você pode selecionar uma impressora e concluir a ação com êxito.

Validando o recebimento de configurações de aplicativo

Ignore se você não habilitar a configuração de aplicativo de destino para seus aplicativos iOS.

Intune é responsável por fornecer os valores da política de configuração do aplicativo para seu aplicativo; posteriormente, seu aplicativo é responsável por usar esses valores para alterar o comportamento ou a interface do usuário dentro do aplicativo. O teste completo de ponta a ponta deve abranger ambos os componentes.

Para validar essa Intune está fornecendo corretamente a política de configuração do aplicativo:

  1. Configure uma política de configuração de aplicativo, que é direcionada ao seu aplicativo e implantada em sua conta de teste.
  2. Faça logon em seu aplicativo com sua conta de teste.
  3. Navegue pelo aplicativo para exercer cada codepath que chama IntuneMAMAppConfigManagerde appConfigForIdentity.
    • Registrar os resultados das chamadas appConfigForIdentity é uma maneira simples de validar quais configurações são entregues. No entanto, como os administradores podem inserir qualquer dado para configurações de configuração do aplicativo, tenha cuidado para não registrar nenhum dado de usuário privado.
  4. Consulte Validar a política de configuração de aplicativo aplicada.

Como as configurações do aplicativo são específicas do aplicativo, somente você sabe como validar como seu aplicativo deve alterar o comportamento ou a interface do usuário para cada configuração do aplicativo.

Ao testar, considere o seguinte:

  • Garantir que todos os cenários sejam abordados criando diferentes políticas de configuração de aplicativo de teste com cada valor compatível com seu aplicativo.
  • Validando a lógica de resolução de conflitos do aplicativo criando várias políticas de configuração de aplicativo de teste com valores diferentes para cada configuração.

Próximas etapas

Se você seguiu este guia em ordem e concluiu todos os Critérios de Saída acima, parabéns, seu aplicativo agora está totalmente integrado ao SDK do aplicativo Intune e pode impor políticas de proteção de aplicativo! Por favor, marcar outros recursos importantes de participação do aplicativo, como Estágio 5: Multi-Identidade, Estágio 6: Suporte ao Acesso Condicional de Proteção de Aplicativo e Estágio 7: recursos de exibição da Web para integrá-los ao seu aplicativo.

Proteção de aplicativos agora é um cenário central para seu aplicativo. Continue a se referir a este guia e ao Apêndice à medida que você continua desenvolvendo seu aplicativo.