Trabalhar com direitos no Xamarin.iOS

Direitos são capacidades especiais do aplicativo e permissões de segurança concedidas a aplicativos que estão configurados corretamente para usá-las.

No iOS, aplicativos são executados em uma área restrita, que fornece um conjunto de regras que limitam o acesso entre o aplicativo e certos recursos do sistema ou dados de usuário. Direitos são usados para solicitar que o sistema expanda a área restrita para fornecer capacidades adicionais ao aplicativo.

Para estender as capacidades do aplicativo, um direito deve ser fornecido no arquivo Entitlements.plist do aplicativo. Somente determinadas capacidades podem ser estendidas e elas estão listadas no guia Trabalhando com capacidades e descritas abaixo. Os direitos são transmitidos para o sistema como um par chave-valor e, geralmente, é necessário apenas um por capacidade. As chaves e os valores específicos estão descritos na seção Referência de chave de direito mais adiante neste guia. O Visual Studio para Mac e o Visual Studio fornecem uma interface clara para adicionar direitos em um aplicativo Xamarin.iOS por meio do editor de Entitlements.plist. Este guia apresenta o editor de Entitlements.plist e como usá-lo. Ele também fornece uma referência de todos os direitos que podem ser adicionados a um projeto do iOS para cada capacidade.

Direitos e provisionamento

O arquivo Entitlements.plist é usado para especificar direitos e é usado para assinar o lote de aplicativo.

No entanto, certo provisionamento adicional é necessário para garantir que o aplicativo seja assinado por código da forma correta. O perfil de provisionamento usado deve conter uma ID do aplicativo com a capacidade necessária habilitada. Para obter informações de como fazer isso, consulte o guia Trabalhando com capacidades.

Importante

O arquivo Entitlements.plist ajuda a preencher as propriedades corretas de um aplicativo usando capacidades, mas não pode gerar um perfil de provisionamento porque não está vinculado a uma conta de desenvolvedor da Apple. Você ainda precisará gerar um perfil de provisionamento usando o portal do desenvolvedor para implantar e distribuir o aplicativo.

Definir direitos em um projeto Xamarin.iOS

Além de selecionar e configurar os serviços de aplicativo necessários ao definir a ID do aplicativo, os direitos também devem ser configurados no projeto Xamarin.iOS editando os arquivos Info.plist e Entitlements.plist.

Para configurar os direitos no Visual Studio para Mac, faça o seguinte:

  1. No painel Solução, clique duas vezes no arquivo Info.plist para abri-lo.

  2. Na seção Identidade, preencha um nome para o aplicativo e insira o Identificador de Pacote que foi criado quando a ID do Aplicativo foi definida:

    Enter a Bundle Identifier

  3. Salve as alterações no arquivo Info.plist.

  4. No painel Solução, clique duas vezes no arquivo Entitlements.plist para abri-lo para edição:

    Editing the Entitlements

  5. Selecione e configure os direitos necessários (se houver) para o aplicativo Xamarin.iOS de maneira que eles correspondam à configuração definida quando a ID do aplicativo foi criada.

  6. Salve as alterações no arquivo Entitlements.plist.

Adicionando um novo arquivo Entitlements.plist

Os direitos são adicionados a um aplicativo por meio do arquivo Entitlements.plist. Esse arquivo é incluído por padrão nos projetos Xamarin.iOS, mas pode estar ausente em projetos mais antigos.

Para adicionar um arquivo Entitlements.plist no Xamarin.iOS, faça o seguinte:

  1. Clique com o botão direito do mouse no arquivo de projeto e navegue até Adicionar > novo arquivo...:

    Add Files context menu

  2. Na caixa de diálogo Novo Arquivo, selecione Lista de Propriedades do iOS > e nomeie-a como Direitos:

    New File dialog

Referência de chave de direito

Chaves de direitos podem ser adicionadas por meio do painel Código-fonte do editor de Entitlements.plist. As chaves necessárias normalmente serão adicionadas ao usar o editor de Entitlements.plist, mas estão listadas abaixo para referência.

Carteira

  • Descrição: formalmente conhecido como Passbook, o wallet é um aplicativo que armazena e gerencia passes. Esses passes podem ser cartões de crédito, cartões de armazenamento, passagens aéreas ou tíquetes.

    • Identificador de tipo de passe
      • Chaves: com.apple.developer.pass-type-identifiers
      • Cadeia de caracteres: $(TeamIdentifierPrefix)*
  • Observações:

    • Isso habilitará o aplicativo a permitir todos os tipos de passes. Para restringir o aplicativo e permitir somente um subconjunto de tipos de passe de equipe, defina o valor de cadeia de caracteres como: $(TeamIdentifierPrefix)pass.$(CFBundleIdentifier)

    Em que pass.$(CFBundleIdentifier) é a ID do Passe criada acima

iCloud

  • Descrição: o iCloud fornece aos usuários do iOS uma maneira fácil e simples de armazenar conteúdo e compartilhá-lo entre dispositivos. Os desenvolvedores podem usar o iCloud de quatro maneiras para fornecer um meio de armazenamento para seus usuários: armazenamento de chave-valor, armazenamento de UIDocument, CoreData e usando o CloudKit diretamente para fornecer armazenamento para arquivos e diretórios individuais. Para obter mais informações sobre essas maneiras, consulte o guia Introdução ao iCloud.

    • Documentos e CloudKit do iCloud
      • Chaves: com.apple.developer.ubiquity-container-identifiers
      • Cadeia de caracteres: $(TeamIdentifierPrefix)$(CFBundleIdentifier)
    • Armazenamento de KeyValue do iCloud
      • Chave: com.apple.developer.ubiquity-kvstore-identifier
      • Cadeia de caracteres: $(TeamIdentifierPrefix)$(CFBundleIdentifier)
  • Observações:

    • A $(TeamIdentifierPrefix) cadeia de caracteres pode ser localizada fazendo login no developer.apple.com e visite o Resumo da Conta de Desenvolvedor do Centro > de Membros da Sua Conta > para obter sua ID de Equipe (ou ID Individual para desenvolvedores individuais). Ela será uma cadeia de 10 caracteres (A93A5CM278, por exemplo).
    • A cadeia de caracteres $(CFBundleIdentifier) começa com iCloud e é definida quando o contêiner do iCloud é criado de acordo com as etapas no guia Trabalhando com capacidades.
    • Os espaços reservados $(TeamIdentifierPrefix) e $(CFBundleIdentifier) podem ser usados e serão substituídos pelos valores corretos no momento do build.

Importante

A Apple fornece ferramentas para ajudar os desenvolvedores a lidar adequadamente com o GDPR (Regulamento Geral sobre a Proteção de Dados) da União Europeia.

Grupos de Aplicativos

  • Descrição: um Grupo de Aplicativos permite que diferentes aplicativos (ou um aplicativo e suas extensões) acessem um local de armazenamento de arquivo compartilhado.

    • Chave: com.apple.security.application-groups
    • Cadeia de caracteres: group.$(CFBundleIdentifier)

Apple Pay

  • Descrição: o Apple Pay permite que os usuários paguem produtos físicos usando o dispositivo iOS.
    • Chave: com.apple.developer.in-app-payments
    • Cadeia de caracteres: merchant.your.mechantid

Notificações por Push

  • Chave: aps-environment
  • Cadeia de caracteres: development ou production

Siri

  • Descrição: o SiriKit permite que um aplicativo iOS forneça serviços acessíveis ao Siri e ao aplicativo de Mapas em um dispositivo iOS usando Extensões de Aplicativo e as novas estruturas de Intenções e interface do usuário de Intenções. Para obter mais informações, consulte o guia Introdução ao SiriKit.
    • Chave: com.apple.developer.siri

VPN pessoal

  • Chave: com.apple.developer.networking.vpn.api
  • Cadeia de caracteres: allow-vpn

Compartilhamento de conjunto de chaves

  • Descrição: o compartilhamento de conjunto de chaves permite que os desenvolvedores de aplicativos compartilhem as senhas armazenadas no conjunto de chaves do dispositivo com outros aplicativos desenvolvidos pela mesma equipe. O acesso pode ser restringido passando um identificador de grupo de acesso do conjunto de chaves na cadeia de caracteres.
    • Chave: keychain-access-groups
    • Cadeia de caracteres: $(AppIdentifierPrefix) $(CFBundleIdentifier)

Áudio entre aplicativos

  • Descrição: o Áudio entre aplicativos permite que os desenvolvedores transmitam áudio entre aplicativos.
    • Chave: inter-app-audio
    • Booliano: sim

Domínios associados

  • Descrição: os domínios associados que precisam ser tratados como links universais devem ser transmitidos com esse direito. Os links universais podem ser implementados para permitir a vinculação entre o aplicativo e o site. Você deve fornecer uma entrada para cada domínio com suporte do aplicativo e cada entrada deve começar com applinks:
    • Chave: com.apple.developer.associated-domains
    • Cadeia de caracteres: webcredentials:example.com

Proteção de dados

  • Descrição: a habilitação da proteção de dados usa hardware de criptografia interno para armazenar os dados confidenciais usados no aplicativo em um formato criptografado. Por padrão, o nível de proteção é definido como proteção completa (os arquivos são acessíveis apenas quando o dispositivo está desbloqueado).
    • Chave: com.apple.developer.default-data-protection
    • Cadeia de caracteres: NSFileProtectionComplete

HomeKit

  • Descrição: a estrutura HomeKit fornece uma plataforma para instalar, configurar e gerenciar dispositivos de automação residencial com suporte, tudo usando um dispositivo iOS. Para obter mais informações sobre como usar o HomeKit, consulte o guia Introdução ao HomeKit.
    • Chave: com.apple.developer.homekit
    • Booliano: sim

HealthKit

  • Descrição: o HealthKit é uma estrutura introduzida no iOS 8 que fornece um armazenamento de dados centralizado, coordenado e seguro para obter informações relacionadas à integridade. Para obter mais informações sobre como usar o HealthKit, consulte o guia Introdução ao HealthKit.
    • Chave: com.apple.developer.healthkit
    • Booliano: sim

Configuração de Acessório sem Fio

  • Descrição: Usar a Configuração de Acessórios Sem Fio permite que seu aplicativo configure acessórios Wi-Fi MFi
    • Chave: com.apple.external-accessory.wireless-configuration
    • Booliano: sim

ClassKit

  • Descrição: o ClassKit permite que professores vejam o progresso do aluno em atividades atribuídas em seu aplicativo.
    • Chave: com.apple.developer.ClassKit-environment
    • Cadeia de caracteres: development ou production

Resumo

Este guia apresentou direitos e instruções sobre como usá-los no Visual Studio para Mac e no Visual Studio. Também forneceu uma referência de pares chave/valor para cada capacidade.