Tutorial: Enviar notificações push para aplicações Xamarin.iOS usando Hubs de Notificação Azure
Descrição Geral
Este tutorial mostra como utilizar os Notification Hubs do Azure para enviar notificações push para uma aplicação iOS. Cria uma aplicação Xamarin.iOS em branco que recebe notificações push utilizando o serviço de notificação apple push (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
Assinatura Azure. Se não tiver uma subscrição do Azure, crie uma conta 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.
Gere o ficheiro de pedido de assinatura de certificado
O Serviço de Notificação de Push apple (APNs) utiliza certificados para autenticar as suas notificações 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 ficheiro Pedido de Assinatura de Certificado (CSR), que a Apple utiliza para gerar um certificado de pressão assinado.
No Mac, execute a ferramenta de Acesso Keychain. Pode ser aberto a partir da pasta Utilities ou da Outra pasta no Launchpad.
Selecione Keychain Access, expanda o Certificate Assistant e, em seguida, selecione Solicite um Certificado a partir de uma Autoridade de Certificados.
Nota
Por predefinição, o Keychain Access seleciona o primeiro item da lista. Isto pode ser um problema se estiver na categoria certificados e a Apple Worldwide Developer Relations Certification Authority não é o primeiro item da lista. Certifique-se de que tem um item não chave, ou a chave da Apple Worldwide Developer Relations Certification Authority é selecionada, antes de gerar o CSR (Pedido de Assinatura de Certificado).
Selecione o seu Endereço Email utilizador, insira o valor nome comum, certifique-se de que especifica guardado no disco e, em seguida, selecione Continue. Deixe o endereço Email CA em branco, uma vez que não é necessário.
Introduza um nome para o ficheiro CSR no Save As, selecione a localização em Onde e, em seguida, selecione Guardar.
Esta ação guarda o ficheiro CSR no local selecionado. A localização predefinida é desktop. Memorize a localização escolhida para o ficheiro.
Em seguida, registe a sua aplicação com a Apple, permita notificações push e carregar a RSE exportada 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 com a Apple e registe-se para notificações push.
Se ainda não registou a sua aplicação, consulte o portal de provisionamento do iOS no Apple Developer Center. Inscreva-se no portal com o seu Apple ID e selecione Identifiers. Em seguida, selecione + para registar uma nova aplicação.
No Registo de um novo ecrã identificador , selecione o botão de rádio App IDs . Em seguida, selecione Continuar.
Atualize os seguintes três valores para a sua nova aplicação e, em seguida, selecione Continue:
Descrição: Digite um nome descritivo para a sua aplicação.
Bundle ID: Introduza um ID do formulário Organization Identifier.Product Name , conforme mencionado no Guia de Distribuição de Aplicações. Os valores do Identificador da Organização e do Nome do Produto devem corresponder ao identificador da organização e ao nome do produto que utiliza quando criar o seu projeto Xcode. Na imagem seguinte, o valor NotificationHubs é usado como identificador de organização e o valor GetStarted é usado como o nome do produto. Certifique-se de que o valor do Identificador de Pacote corresponde ao valor do seu projeto Xcode, de modo a que o Xcode utilize o perfil de publicação correto.
Notificações push: Verifique a opção 'Notificações push' na secção Capacidades .
Esta ação gera o seu ID de aplicação e solicita que confirme a informação. Selecione Continue e, em seguida, selecione Registar-se para confirmar o novo ID da aplicação.
Depois de selecionar Registo, vê o novo ID da aplicação como um item de linha na página Certificados, Perfis identificadores&.
Na página 'Certificados', identifiers & Profiles , em Identificadores, localizar o item da linha de ID da aplicação que acabou de criar e selecionar a sua linha para exibir o ecrã de configuração do ID da aplicação editar .
Criação de um Certificado para Centros de Notificação
É necessário um certificado para permitir que o centro de notificação funcione com a APNS. Isto pode ser feito de uma de duas maneiras:
- Crie um .p12 que pode ser enviado diretamente para o Centro de Notificação.
- Crie um .p8 que pode ser usado para autenticação baseada em fichas (a abordagem mais recente).
A abordagem mais recente tem uma série de benefícios (em comparação com a utilização de certificados) como documentado na autenticação baseada em Token (HTTP/2) para a APNS. No entanto, foram previstas medidas para ambas as abordagens.
OPÇÃO 1: Criação de um certificado de pressão .p12 que pode ser carregado diretamente para o Centro de Notificação
Desloque-se até à opção de Notificações Push verificadas e, em seguida, selecione Configure para criar o certificado.
Aparece a janela SSL Certificates do serviço de notificação Apple Push . Selecione o botão 'Criar Certificado' na secção Certificado SSL de Desenvolvimento .
É apresentado o novo ecrã de Certificado Criar .
Nota
Este tutorial usa um certificado de desenvolvimento, que a sua aplicação utiliza para gerar um token de dispositivo único. É 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 Choose File, navegue no local onde guardou o ficheiro CSR a partir da primeira tarefa e, em seguida, clique duas vezes no nome do certificado para carregá-lo. Em seguida, selecione Continuar.
Depois de o portal criar o certificado, selecione o botão Descarregar . Guarde o certificado e lembre-se do local para o qual está guardado.
O certificado é descarregado e guardado para o seu computador na sua pasta Downloads .
Nota
Por predefinição, o certificado de desenvolvimento descarregado é nomeado 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á pré-fixado com 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 Export, nomeie o ficheiro, selecione o formato .p12 e, em seguida, selecione Guardar.
Pode optar por proteger o certificado com uma senha, mas esta é opcional. Clique em OK se quiser contornar a criação de passwords. Tome nota do nome do ficheiro e da localização do certificado .p12 exportado. São utilizados para permitir a autenticação com APNs.
Nota
O nome e localização do ficheiro .p12 podem ser diferentes do que está representado neste tutorial.
OPÇÃO 2: Criação de um certificado .p8 que pode ser utilizado para a autenticação baseada em fichas
Tome nota dos seguintes detalhes:
- Prefixo ID da aplicação (este é um ID de equipa)
- ID do Pacote
De volta aos certificados, perfis de identificadores&, clique em Chaves.
Nota
Se já tiver uma chave configurada para APNS, pode reutilizar o certificado .p8 que descarregou logo após a sua criação. Em caso afirmativo, pode ignorar os passos 3 a 5.
Clique no + botão (ou no botão Criar um botão de tecla ) para criar uma nova tecla.
Forneça um valor de nome chave adequado, depois verifique a opção do serviço apple push notificações (APNs) e, em seguida, clique em Continuar, seguido de Registar no ecrã seguinte.
Clique em Baixar e, em seguida, mova o ficheiro .p8 (pré-fixado com AuthKey_) para um diretório local seguro e, em seguida, clique em Fazer.
Nota
Certifique-se de que mantém o ficheiro .p8 num local seguro (e guarde uma cópia de segurança). Depois de descarregar a sua chave, esta não pode ser re-descarregada à medida que a cópia do servidor é removida.
Em Teclas, clique na tecla que acabou de criar (ou uma chave existente se tiver optado por usá-la).
Tome nota do valor de identificação da chave .
Abra o seu certificado .p8 numa aplicação adequada à sua escolha, como o Código do Estúdio Visual , e tome nota do 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 simbólico que será usado mais tarde para configurar o Centro de Notificação.
No final destes passos deverá ter as seguintes informações para utilização posterior no Configure o seu centro de notificação com informações sobre APNs:
- ID da equipa (ver passo 1)
- ID do pacote (ver passo 1)
- ID chave (ver passo 7)
- Valor simbólico , ou seja, o valor da chave .p8 (ver passo 8)
Criar um perfil de aprovisionamento para a aplicação
Volte ao Portal de Provisionamento do iOS, selecione Certificados, Perfis de Identificadores&, selecione Perfis do menu esquerdo e, em seguida, selecione + para criar um novo perfil. Aparece o novo ecrã de perfil de provisionamento .
Selecione o desenvolvimento da aplicação iOS em desenvolvimento como o tipo de perfil de provisionamento e, em seguida, selecione Continue.
Em seguida, selecione o ID da aplicação que criou a partir da lista de drop-down do App ID e selecione Continue.
Na janela de certificados Select , selecione o certificado de desenvolvimento que utiliza para a assinatura de código e selecione Continue. Este certificado não é o certificado de pressão que criou. Se alguém não existe, deve criá-lo. Se existir um certificado, salte para o passo seguinte. Para criar um certificado de desenvolvimento se não existir:
- Se não vir nenhum Certificado disponível, selecione Criar Certificado.
- Na secção software , selecione Apple Development. Em seguida, selecione Continuar.
- No ecrã Criar um novo certificado , selecione Escolha Ficheiro.
- Navegue no certificado de Pedido de Assinatura de Certificado que criou anteriormente, selecione-o e, em seguida, selecione Open.
- Selecione Continuar.
- Descarregue o certificado de desenvolvimento e lembre-se do local para o qual está guardado.
Volte à página de Certificados, Perfis de Identificadores&, selecione Perfis do menu esquerdo e, em seguida, selecione + para criar um novo perfil. Aparece o novo ecrã de perfil de provisionamento .
Na janela de certificados Select , selecione o certificado de desenvolvimento que acabou de criar. Em seguida, selecione Continuar.
Em seguida, selecione os dispositivos a utilizar para testes e selecione Continue.
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 forragem for criado, selecione Download. Lembre-se do local para o qual está guardado.
Navegue pela localização do perfil de provisionamento e, em seguida, clique duas vezes nele para instalá-lo na sua máquina de desenvolvimento Xcode.
Criar um hub de notificação
Nesta secção, cria-se um centro de notificação e configura a autenticação com APNs utilizando o certificado de pressão .p12 ou a autenticação baseada em fichas. Se quiser usar um centro de notificação que já criou, pode saltar para o passo 5.
Inicie sessão no portal do Azure.
Selecione todos os serviços no menu esquerdo e, em seguida, selecione 'Centros de Notificação' na secção Mobile . Selecione o ícone estrela ao lado do nome de serviço para adicionar o serviço à secção FAVORITOS no menu esquerdo. Depois de adicionar Os Centros de Notificação aos FAVORITOS, selecione-o no menu esquerdo.
Na página 'Centros de Notificação ', selecione Criar na barra de ferramentas.
No separador Básicos na página Do Centro de Notificação , faça os seguintes passos:
Na Subscrição, selecione o nome da subscrição Azure que pretende utilizar e, em seguida, selecione um grupo de recursos existente ou crie um novo.
Insira um nome único para o novo espaço de nome em Namespace Details.
Um espaço de nome contém um ou mais centros de notificação, por isso digite um nome para o hub em Detalhes do Hub de Notificação. Ou, selecione um espaço de nome existente a partir do drop-down.
Selecione um valor na caixa de lista de localização . Este valor especifica a localização em que pretende criar o hub.
Selecione Criar.
Selecione Notificações (o ícone da campainha) e, em seguida, selecione Ir para o recurso. Também pode atualizar a lista na página 'Centros de Notificação' e selecionar o seu hub.
Selecione Políticas de Acesso na lista. Note que as duas cordas de ligação estão disponíveis para si. Vai precisar deles mais tarde para lidar com notificações push.
Importante
Não utilize a política de assinatura DefaultFulFuldPartdAccesss na sua aplicação. Isto é para ser usado apenas na sua parte de trás.
Configure o seu centro de notificação com informações sobre APNs
Nos Serviços de Notificação, selecione Apple (APNS) então siga os passos adequados com base na abordagem que escolheu anteriormente na secção Criar um Certificado para Centros de Notificação .
Nota
Se construir a sua aplicação com App Store ou perfil de distribuição Ad-Hoc, utilize a Produção para Modo de Aplicação. Isto permitirá que o seu dispositivo envie notificações push para os utilizadores que adquiriram a sua aplicação na loja.
OPÇÃO 1: Utilização de um certificado de pressão .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: Utilização da autenticação baseada em fichas
Selecione Token.
Insira os seguintes valores que adquiriu anteriormente:
- ID chave
- ID do Pacote
- ID da equipa
- Token
Escolha caixa de areia
Selecione Guardar.
Agora configuraste o teu centro de notificação com as APNs. Também tem as cordas de ligação para registar a sua aplicação e enviar notificações 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
Insira o nome da app e o identificador de organização, em seguida, clique em Seguinte e, em seguida, Crie
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.
A partir da vista 'Solução', clique duas vezes no
Entitlements.plist
e certifique-se de que as notificações push são verificadas .Adicione o pacote de Mensagens do Azure. Na vista 'Solução', clique com o botão direito no projeto e selecione Add>NuGet Packages. Procure Xamarin.Azure.NotificationHubs.iOS e adicione o pacote ao projeto.
Adicione um novo ficheiro à sua classe, nomeie-o
Constants.cs
e adicione as seguintes variáveis e substitua os espaços reservados literais de cordas pelohubname
eDefaultListenSharedAccessSignature
notado 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
, adicionar a seguinte declaração de utilização:using WindowsAzure.Messaging.NotificationHubs; using UserNotifications
Criar uma implementação do
MSNotificationHubDelegate
in theAppDelegate.cs
:public class AzureNotificationHubListener : MSNotificationHubDelegate { public override void DidReceivePushNotification(MSNotificationHub notificationHub, MSNotificationHubMessage message) { } }
Em
AppDelegate.cs
, atualizarFinishedLaunching()
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; }
Em
AppDelegate.cs
, implementar 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.
Passos seguintes
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 tutorial seguinte: