Tutorial: Enviar notificações por push para aplicativos Xamarin.iOS usando os Hubs de Notificação do Azure
Descrição geral
Este tutorial mostra como utilizar os Notification Hubs do Azure para enviar notificações push para uma aplicação iOS. Vai criar uma aplicação Xamarin.iOS em branco que recebe notificações push com o serviço Apple Push Notification (APNs).
Quando tiver terminado, pode utilizar o Hub de Notificação para difundir notificações push para todos os dispositivos a executar a sua aplicação. O código concluído está disponível no exemplo aplicação NotificationHubs.
Neste tutorial, pode criar/atualizar código para efetuar as seguintes tarefas:
- Gerar o ficheiro de solicitação de assinatura de certificado
- Registar a aplicação para notificações push
- Criar um perfil de aprovisionamento para a aplicação
- Configurar o Hub de Notificação para notificações push do iOS
- Enviar notificações push de teste
Pré-requisitos
Subscrição do Azure. Se não tiver uma subscrição do Azure, crie uma conta do Azure gratuita antes de começar.
Versão mais recente do Xcode
Um dispositivo compatível iOS 10 (ou versão posterior)
Associação ao Programa de Programador da Apple
-
Nota
Devido aos requisitos de configuração para as notificações push do iOS, deve implementar e testar a aplicação de exemplo num dispositivo iOS físico (iPhone ou iPad) em vez do simulador.
A conclusão deste tutorial é um pré-requisito para todos os outros tutoriais de Hubs de Notificação para aplicações Xamarin.iOS.
Gerar o arquivo de solicitação de assinatura de certificado
O Serviço de Notificação por Push da Apple (APNs) usa certificados para autenticar suas notificações por push. Siga estas instruções para criar o certificado push necessário para enviar e receber notificações. Para obter mais informações sobre estes conceitos, veja a documentação oficial do Serviço Apple Push Notification.
Gere o arquivo CSR (Certificate Signing Request), que a Apple usa para gerar um certificado push assinado.
No Mac, execute a ferramenta Acesso Keychain. Ele pode ser aberto a partir da pasta Utilitários ou da pasta Outros na Barra Inicial.
Selecione Acesso às Chaves, expanda Assistente de Certificado e selecione Solicitar um Certificado de uma Autoridade de Certificação.
Nota
Por padrão, o Acesso às Chaves seleciona o primeiro item da lista. Isso pode ser um problema se você estiver na categoria Certificados e a Apple Worldwide Developer Relations Certification Authority não for o primeiro item da lista. Certifique-se de que tem um item não chave, ou que a chave Apple Worldwide Developer Relations Certification Authority está selecionada, antes de gerar o CSR (Pedido de Assinatura de Certificado).
Selecione o seu Endereço de E-mail de Utilizador, introduza o valor do seu Nome Comum, certifique-se de que especifica Guardado no disco e, em seguida, selecione Continuar. Deixe o endereço de e-mail da autoridade de certificação em branco, pois não é necessário.
Introduza um nome para o ficheiro CSR em Guardar Como, selecione a localização em Onde e, em seguida, selecione Guardar.
Esta ação salva o arquivo CSR no local selecionado. O local padrão é Área de trabalho. Memorize a localização escolhida para o ficheiro.
Em seguida, registre seu aplicativo na Apple, ative as notificações por push e carregue o CSR exportado para criar um certificado push.
Registar a aplicação para notificações push
Para enviar notificações push para uma aplicação iOS, registe a sua aplicação na Apple e registe-se também para receber notificações push.
Se você ainda não registrou seu aplicativo, navegue até o Portal de provisionamento do iOS no Apple Developer Center. Inicie sessão no portal com o seu ID Apple e selecione Identificadores. Em seguida, selecione + para registrar um novo aplicativo.
Na tela Registrar um novo identificador, selecione o botão de opção IDs do aplicativo. Em seguida, selecione Continuar.
Atualize os três valores seguintes para a sua nova aplicação e, em seguida, selecione Continuar:
Descrição: digite um nome descritivo para seu aplicativo.
ID do pacote: insira um ID do pacote do formulário Identificador da organização.Nome do produto , conforme mencionado no Guia de distribuição do aplicativo. Os valores Identificador da Organização e Nome do Produto devem corresponder ao identificador da organização e ao nome do produto que você usa ao criar seu projeto Xcode. Na captura de tela a seguir, o valor NotificationHubs é usado como um identificador da organização e o valor GetStarted é usado como o nome do produto. Verifique se o valor Bundle Identifier corresponde ao valor em seu projeto Xcode, para que o Xcode use o perfil de publicação correto.
Notificações push: marque a opção Notificações por push na seção Recursos.
Essa ação gera sua ID de aplicativo e solicita que você confirme as informações. Selecione Continuar e, em seguida, selecione Registar para confirmar o novo ID da aplicação.
Depois de selecionar Registrar, você verá a nova ID do aplicativo como um item de linha na página Certificados, identificadores e perfis .
Na página Certificados, Identificadores e Perfis, em Identificadores, localize o item de linha ID do Aplicativo que você acabou de criar e selecione sua linha para exibir a tela Editar a Configuração do ID do Aplicativo.
Criando um certificado para Hubs de Notificação
Um certificado é necessário para permitir que o hub de notificação funcione com APNS. Isso pode ser feito de duas maneiras:
- Crie um .p12 que possa ser carregado diretamente no Hub de Notificação.
- Crie um .p8 que possa ser usado para autenticação baseada em token (a abordagem mais recente).
A abordagem mais recente tem uma série de benefícios (em comparação com o uso de certificados), conforme documentado na autenticação baseada em token (HTTP/2) para APNS. No entanto, foram tomadas medidas para ambas as abordagens.
OPÇÃO 1: Criando um certificado por push .p12 que pode ser carregado diretamente no Hub de Notificação
Role para baixo até a opção Notificações por push marcada e selecione Configurar para criar o certificado.
A janela Certificados SSL do serviço de Notificação por Push da Apple é exibida. Selecione o botão Criar certificado na seção Certificado SSL de desenvolvimento.
A tela Criar um novo certificado é exibida.
Nota
Este tutorial usa um certificado de desenvolvimento, que seu aplicativo usa para gerar um token de dispositivo exclusivo. É utilizado o mesmo processo ao registar um certificado de produção. Não se esqueça de verificar se está a utilizar o mesmo tipo de certificado ao enviar notificações.
Selecione Escolher arquivo, navegue até o local onde você salvou o arquivo CSR da primeira tarefa e clique duas vezes no nome do certificado para carregá-lo. Em seguida, selecione Continuar.
Depois que o portal criar o certificado, selecione o botão Download . Salve o certificado e lembre-se do local no qual ele foi salvo.
O certificado é transferido e guardado no seu computador na pasta Transferências .
Nota
Por padrão, o certificado de desenvolvimento baixado é chamado aps_development.cer.
Faça duplo clique no certificado push aps_development.cer transferido. Esta ação instala o novo certificado na Keychain, conforme apresentado na imagem seguinte:
Nota
Embora o nome no seu certificado possa ser diferente, o nome será prefixado com o Apple Development iOS Push Services.
No Acesso Keychain, clique com o botão direito do rato no novo certificado push que criou na categoria Certificados. Selecione Exportar, nomeie o arquivo, selecione o formato .p12 e selecione Salvar.
Você pode optar por proteger o certificado com uma senha, mas isso é opcional. Clique em OK se quiser ignorar a criação de senha. Tome nota do nome do ficheiro e da localização do certificado .p12 exportado. Eles são usados para habilitar a autenticação com APNs.
Nota
O nome e o local do arquivo .p12 podem ser diferentes do que é retratado neste tutorial.
OPÇÃO 2: Criando um certificado .p8 que pode ser usado para autenticação baseada em token
Anote os seguintes detalhes:
- Prefixo do ID do Aplicativo (este é um ID de Equipe)
- ID do pacote
De volta em Certificados, Identificadores e Perfis, clique em Chaves.
Nota
Se você já tiver uma chave configurada para APNS, poderá reutilizar o certificado .p8 baixado logo após sua criação. Em caso afirmativo, pode ignorar os passos 3 a 5.
Clique no botão (ou no + botão Criar uma chave) para criar uma nova chave .
Forneça um valor adequado de Nome da Chave, marque a opção Serviço de Notificações por Push da Apple (APNs) e clique em Continuar, seguido de Registrar na próxima tela.
Clique em Download e, em seguida, mova o arquivo .p8 (prefixado com AuthKey_) para um diretório local seguro e, em seguida, clique em Concluído.
Nota
Certifique-se de manter seu arquivo .p8 em um lugar seguro (e salve um backup). Depois de baixar sua chave, ela não pode ser baixada novamente, pois a cópia do servidor é removida.
Em Chaves, clique na chave que acabou de criar (ou numa chave existente se tiver optado por usá-la).
Anote o valor do ID da chave.
Abra seu certificado .p8 em um aplicativo adequado de sua escolha, como o Visual Studio Code , e anote o valor da chave. Este é o valor entre -----BEGIN PRIVATE KEY----- e -----END PRIVATE KEY----- .
-----BEGIN PRIVATE KEY----- <key_value> -----END PRIVATE KEY-----
Nota
Este é o valor de token que será usado posteriormente para configurar o Hub de Notificação.
No final dessas etapas, você deve ter as seguintes informações para uso posterior em Configurar seu hub de notificação com informações de APNs:
- ID da Equipa (ver passo 1)
- ID do pacote (consulte a etapa 1)
- ID da chave (consulte o passo 7)
- Valor do token , ou seja, o valor da chave .p8 (consulte a etapa 8)
Criar um perfil de aprovisionamento para a aplicação
Retorne ao Portal de Provisionamento do iOS, selecione Certificados, Identificadores e Perfis, selecione Perfis no menu esquerdo e selecione + para criar um novo perfil. A tela Registrar um novo perfil de provisionamento é exibida.
Selecione Desenvolvimento de aplicativos iOS em Desenvolvimento como o tipo de perfil de provisionamento e, em seguida, selecione Continuar.
Em seguida, selecione o ID do aplicativo criado na lista suspensa ID do aplicativo e selecione Continuar.
Na janela Selecionar certificados, selecione o certificado de desenvolvimento que você usa para assinatura de código e selecione Continuar. Este certificado não é o certificado push que você criou. Se um não existe, você deve criá-lo. Se existir um certificado, avance para o passo seguinte. Para criar um certificado de desenvolvimento, se não existir:
- Se você vir Nenhum certificado disponível, selecione Criar certificado.
- Na seção Software, selecione Desenvolvimento Apple. Em seguida, selecione Continuar.
- Na tela Criar um novo certificado, selecione Escolher arquivo.
- Navegue até o certificado de Solicitação de Assinatura de Certificado criado anteriormente, selecione-o e selecione Abrir.
- Selecione Continuar.
- Faça o download do certificado de desenvolvimento e lembre-se do local no qual ele foi salvo.
Volte à página Certificados, Identificadores e Perfis, selecione Perfis no menu esquerdo e, em seguida, selecione + para criar um novo perfil. A tela Registrar um novo perfil de provisionamento é exibida.
Na janela Selecionar certificados, selecione o certificado de desenvolvimento que você acabou de criar. Em seguida, selecione Continuar.
Em seguida, selecione os dispositivos a serem usados para teste e selecione Continuar.
Por fim, escolha um nome para o perfil em Nome do perfil de provisionamento e selecione Gerar.
Quando o novo perfil de provisionamento for criado, selecione Download. Lembre-se do local no qual ele foi salvo.
Navegue até o local do perfil de provisionamento e clique duas vezes nele para instalá-lo em sua máquina de desenvolvimento Xcode.
Criar um hub de notificação
Nesta seção, você cria um hub de notificação e configura a autenticação com APNs usando o certificado por push .p12 ou a autenticação baseada em token. Se quiser usar um hub de notificação que já criou, pule para a etapa 5.
Inicie sessão no portal do Azure.
Selecione Todos os serviços no menu à esquerda.
Digite Hubs de Notificação na caixa de texto Serviços de filtro . Selecione o ícone de estrela ao lado do nome do serviço para adicionar o serviço à seção FAVORITOS no menu à esquerda. Selecione Hubs de Notificação.
Na página Hubs de Notificação, selecione Criar na barra de ferramentas.
Na guia Noções básicas na página Hub de Notificação, execute as seguintes etapas:
Em Subscrição, selecione o nome da subscrição do Azure que pretende utilizar e, em seguida, selecione um grupo de recursos existente ou crie um novo.
Insira um nome exclusivo para o novo namespace em Detalhes do namespace.
Um namespace contém um ou mais hubs de notificação, portanto, digite um nome para o hub em Detalhes do Hub de Notificação.
Selecione um valor na caixa de listagem suspensa Local . Esse valor especifica o local no qual você deseja criar o hub.
Reveja a opção Zonas de disponibilidade . Se você escolher uma região que tenha zonas de disponibilidade, a caixa de seleção será marcada por padrão. As Zonas de Disponibilidade são uma funcionalidade paga, pelo que é adicionada uma taxa adicional ao seu nível.
Escolha uma opção de recuperação de desastres: nenhuma, região de recuperação emparelhada ou região de recuperação flexível. Se você escolher Região de recuperação emparelhada, a região de failover será exibida. Se você selecionar Região de recuperação flexível, use a lista suspensa para escolher em uma lista de regiões de recuperação.
Selecione Criar.
Quando a implantação estiver concluída, selecione Ir para recurso.
Configure seu hub de notificação com informações de APNs
Em Serviços de Notificação, selecione Apple (APNS) e siga as etapas apropriadas com base na abordagem escolhida anteriormente na seção Criando um certificado para Hubs de Notificação.
Nota
Se você criar seu aplicativo com a App Store ou o perfil de distribuição Ad-Hoc, use o Modo de Produção para Aplicativo. Isso permitirá que seu dispositivo envie notificações por push para usuários que compraram seu aplicativo na loja.
OPÇÃO 1: Usando um certificado push .p12
Selecione Certificado.
Selecione o ícone de ficheiro.
Selecione o ficheiro .p12 que exportou anteriormente e, em seguida, selecione Abrir.
Se necessário, especifique a senha correta.
Selecione o modo Sandbox.
Selecione Guardar.
OPÇÃO 2: Usando autenticação baseada em token
Selecione Token.
Insira os seguintes valores adquiridos anteriormente:
- ID da chave
- ID do pacote
- ID da Equipa
- Token
Escolha Sandbox
Selecione Guardar.
Agora você configurou seu hub de notificação com APNs. Você também tem as cadeias de conexão para registrar seu aplicativo e enviar notificações por push.
Ligar a aplicação ao Notification Hub
Criar um novo projeto
No Visual Studio, crie um novo projeto do iOS e selecione o modelo Aplicação de Vista Única e clique em Seguinte
Introduza o Nome da Aplicação e o identificador da Organização, clique em Seguinte e, em seguida, em Criar
Na vista Solução, faça duplo clique em Info.plist e, em Identidade, certifique-se de que o Identificador do Pacote corresponde ao utilizado aquando da criação do seu perfil de aprovisionamento. Em Assinatura certifique-se de que a sua conta de Programador está selecionada em Equipa, que "Gerir assinatura automaticamente" está selecionado e que o certificado de assinatura e perfil de aprovisionamento são automaticamente selecionados.
Na visualização Solução, clique duas vezes no
Entitlements.plist
botão e verifique se a opção Ativar notificações por push está marcada.Adicione o pacote de Mensagens do Azure. Na vista Solução, clique com o botão direito no projeto e selecione Adicionar>Adicionar pacotes de NuGet. Procure Xamarin.Azure.NotificationHubs.iOS e adicione o pacote ao projeto.
Adicione um novo arquivo à sua classe, nomeie-o e adicione as seguintes variáveis e substitua os espaços reservados literais da cadeia de caracteres pelo
hubname
e oConstants.cs
anotadoDefaultListenSharedAccessSignature
anteriormente.// Azure app-specific connection string and hub path public const string ListenConnectionString = "<Azure DefaultListenSharedAccess Connection String>"; public const string NotificationHubName = "<Azure Notification Hub Name>";
Em
AppDelegate.cs
, adicione a seguinte instrução using:using WindowsAzure.Messaging.NotificationHubs; using UserNotifications
Crie uma implementação do
MSNotificationHubDelegate
noAppDelegate.cs
:public class AzureNotificationHubListener : MSNotificationHubDelegate { public override void DidReceivePushNotification(MSNotificationHub notificationHub, MSNotificationHubMessage message) { } }
No
AppDelegate.cs
, atualizeFinishedLaunching()
para corresponder ao seguinte código:public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions) { // Set the Message listener MSNotificationHub.SetDelegate(new AzureNotificationHubListener()); // Start the SDK MSNotificationHub.Start(ListenConnectionString, NotificationHubName); return true; }
No
AppDelegate.cs
, implemente oDidReceivePushNotification
método para aAzureNotificationHubListener
classe:public override void DidReceivePushNotification(MSNotificationHub notificationHub, MSNotificationHubMessage message) { // This sample assumes { aps: { alert: { title: "Hello", body: "World" } } } var alertTitle = message.Title ?? "Notification"; var alertBody = message.Body; var myAlert = UIAlertController.Create(alertTitle, alertBody, UIAlertControllerStyle.Alert); myAlert.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, null)); UIApplication.SharedApplication.KeyWindow.RootViewController.PresentViewController(myAlert, true, null); }
Execute o aplicativo no seu dispositivo.
Enviar notificações push de teste
Pode testar a receção das notificações na aplicação com a opção Envio de Teste no portal do Azure. Esta ação envia uma notificação push de teste para o dispositivo.
Normalmente, as notificações push são enviadas num serviço de back-end como Mobile Apps ou ASP.NET com uma biblioteca compatível. Caso não esteja disponível uma biblioteca para o back-end, também pode utilizar a API REST diretamente para enviar mensagens de notificação.
Próximos passos
Neste tutorial, enviou notificações de difusão para todos os dispositivos iOS registados no back-end. Para saber como enviar notificações push para dispositivos iOS específicos, avance para o seguinte tutorial: