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:
No painel Solução, clique duas vezes no arquivo Info.plist para abri-lo.
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:
Salve as alterações no arquivo Info.plist.
No painel Solução, clique duas vezes no arquivo Entitlements.plist para abri-lo para edição:
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.
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:
Clique com o botão direito do mouse no arquivo de projeto e navegue até Adicionar > novo arquivo...:
Na caixa de diálogo Novo Arquivo, selecione Lista de Propriedades do iOS > e nomeie-a como Direitos:
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)*
- Identificador de tipo de passe
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
- 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:
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)
- Documentos e CloudKit do iCloud
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 comiCloud
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.
- A
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
ouproduction
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
ouproduction
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.