Autenticação baseada em token (HTTP/2) para o APNS
Visão geral
Este artigo explica sobre como usar o novo protocolo HTTP/2 do APNS com autenticação baseada em token.
Os principais benefícios de usar o novo protocolo incluem:
- A geração de token é relativamente simples (em comparação com certificados)
- Não há mais dadas de expiração – você está no controle dos seus tokens de autenticação e sua revogação
- O conteúdo agora pode ser de até 4 KB
- Comentários síncronos
- Você está usando o protocolo mais recente da Apple – os certificados ainda usam o protocolo binário, que está marcado para substituição
O uso esse novo mecanismo pode ser realizado em duas etapas:
- Obtenha as informações necessárias do portal da conta de Desenvolvedor da Apple.
- Configure seu hub de notificações com as novas informações.
Os Hubs de Notificação agora estão configurados para usar o novo sistema de autenticação com APNS.
Observe que, se você migrar do uso de credenciais de certificado para o APNS, as propriedades do token substituirão seu certificado em nosso sistema, mas o aplicativo continuará a receber notificações diretamente.
Obtendo informações de autenticação da Apple
Para habilitar a autenticação baseada em token, você precisará das seguintes propriedades da conta de Desenvolvedor da Apple:
Identificador da chave
O identificador de chave pode ser obtido na página Chaves em Certificados, Identificadores e Perfis, na sua conta de Desenvolvedor da Apple:
Identificador do aplicativo e nome do aplicativo
O nome do aplicativo e o identificador também estão disponíveis na página Certificados, Identificadores e Perfis na conta de desenvolvedor.
Configurar por meio do SDK do .NET ou do portal do Azure
Você pode configurar seu hub para usar a autenticação baseada em token usando nosso SDK de cliente mais recente ou no portal do Azure. Para habilitar a autenticação baseada em token no portal, faça logon no portal do Azure e vá para o painel Hub de Notificações Configurações > Apple (APNS). Selecione o Token da propriedade Modo de autenticação para atualizar o hub com todas as propriedades de token relevantes.
- Insira as propriedades que você recuperou da sua conta de Desenvolvedor da Apple.
- Escolha o modo de aplicativo (Produção ou Área Restrita).
- Clique no botão Salvar para atualizar suas credenciais APNS.
As credenciais baseadas em token são compostas dos seguintes campos:
- ID da chave: identificador da chave privada gerada no portal do Desenvolvedor da Apple; por exemplo,
2USFGKSKLT
. - ID da Equipe: também chamada de "Prefixo" ou "Prefixo do Aplicativo". Esse é o identificador da organização no portal do Desenvolvedor da Apple; por exemplo,
S4V3D7CHJR
. - ID do pacote: também chamado de "ID do aplicativo". Este é o identificador do pacote para o aplicativo; por exemplo,
com.example.myapp
. Observe que você só pode usar uma chave para um aplicativo. Esse valor é mapeado para oapns-topic
cabeçalho HTTP ao enviar uma notificação e é usado para direcionar o aplicativo específico. Você não pode definir o valor deapns-topic
explicitamente. - Token: também chamado de "Chave" ou "Chave Privada". Isso é obtido do arquivo .p8 gerado no portal do Desenvolvedor da Apple. A chave deve ter o APNS habilitado (que está selecionado no portal do Desenvolvedor da Apple ao gerar a chave). O valor deve ter o cabeçalho/rodapé PEM extraído dele ao fornecê-lo ao portal/API do NH.
- Ponto de extremidade: é uma alternância na folha do portal de Hubs de Notificação e um campo de cadeia de caracteres na API. Os valores válidos são
https://api.development.push.apple.com:443/3/device
ouhttps://api.sandbox.push.apple.com:443/3/device
. Os Hubs de Notificação usam esse valor para o ambiente de produção ou área restrita, para enviar notificações. Isso deve corresponder ao direitoaps-environment
no aplicativo, caso contrário, os tokens de dispositivo dos APNS gerados não corresponderão ao ambiente e as notificações falharão ao enviar.
Aqui está um exemplo de código que ilustra o uso correto:
NamespaceManager nm = NamespaceManager.CreateFromConnectionString(_endpoint);
string token = "YOUR PRIVATE KEY HERE";
string keyId = "YOUR KEY ID HERE";
string appName = "YOUR APP NAME HERE";
string appId = "YOUR APP ID HERE";
NotificationHubDescription desc = new NotificationHubDescription("PATH TO YOUR HUB");
desc.ApnsCredential = new ApnsCredential(token, keyId, appId, appName);
desc.ApnsCredential.Endpoint = @"https://api.development.push.apple.com:443/3/device";
nm.UpdateNotificationHubAsync(desc);