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

  • Visual Studio para Mac

    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.

  1. No Mac, execute a ferramenta de Acesso Keychain. Pode ser aberto a partir da pasta Utilities ou da Outra pasta no Launchpad.

  2. Selecione Keychain Access, expanda o Certificate Assistant e, em seguida, selecione Solicite um Certificado a partir de uma Autoridade de Certificados.

    Utilizar o Acesso Keychain para pedir um novo certificado

    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).

  3. 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.

    Informações de certificado obrigatórias

  4. Introduza um nome para o ficheiro CSR no Save As, selecione a localização em Onde e, em seguida, selecione Guardar.

    Escolha um nome de ficheiro para o certificado

    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.

  1. 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.

    Página de IDs de Aplicação do Portal de Aprovisionamento do iOS

  2. No Registo de um novo ecrã identificador , selecione o botão de rádio App IDs . Em seguida, selecione Continuar.

    Portal de Provisionamento do iOS regista nova página de ID

  3. 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.

      IOS Provisioning Portal registar página de ID de aplicação

    • Notificações push: Verifique a opção 'Notificações push' na secção Capacidades .

      Formulário para registar um novo ID de Aplicação

      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.

      Confirme o novo ID da app

      Depois de selecionar Registo, vê o novo ID da aplicação como um item de linha na página Certificados, Perfis identificadores&.

  4. 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:

  1. Crie um .p12 que pode ser enviado diretamente para o Centro de Notificação.
  2. 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

  1. Desloque-se até à opção de Notificações Push verificadas e, em seguida, selecione Configure para criar o certificado.

    Editar a página de ID de Aplicação

  2. 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 .

    Criar certificado para o botão de ID de Aplicação

    É 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.

  3. 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.

  4. 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.

    Página de transferência do certificado gerado

    O certificado é descarregado e guardado para o seu computador na sua pasta Downloads .

    Localizar o ficheiro de certificado na pasta Transferências

    Nota

    Por predefinição, o certificado de desenvolvimento descarregado é nomeado aps_development.cer.

  5. 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:

    Lista de certificados de Acesso Keychain que mostra o novo certificado

    Nota

    Embora o nome no seu certificado possa ser diferente, o nome será pré-fixado com apple development iOS Push Services.

  6. 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.

    Exportar o certificado no formato p12

    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

  1. Tome nota dos seguintes detalhes:

    • Prefixo ID da aplicação (este é um ID de equipa)
    • ID do Pacote
  2. 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.

  3. Clique no + botão (ou no botão Criar um botão de tecla ) para criar uma nova tecla.

  4. 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.

  5. 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.

  6. Em Teclas, clique na tecla que acabou de criar (ou uma chave existente se tiver optado por usá-la).

  7. Tome nota do valor de identificação da chave .

  8. 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

  1. 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 .

  2. Selecione o desenvolvimento da aplicação iOS em desenvolvimento como o tipo de perfil de provisionamento e, em seguida, selecione Continue.

    Lista de perfis de aprovisionamento

  3. Em seguida, selecione o ID da aplicação que criou a partir da lista de drop-down do App ID e selecione Continue.

    Selecionar o ID de Aplicação

  4. 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:

    1. Se não vir nenhum Certificado disponível, selecione Criar Certificado.
    2. Na secção software , selecione Apple Development. Em seguida, selecione Continuar.
    3. No ecrã Criar um novo certificado , selecione Escolha Ficheiro.
    4. Navegue no certificado de Pedido de Assinatura de Certificado que criou anteriormente, selecione-o e, em seguida, selecione Open.
    5. Selecione Continuar.
    6. Descarregue o certificado de desenvolvimento e lembre-se do local para o qual está guardado.
  5. 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 .

  6. Na janela de certificados Select , selecione o certificado de desenvolvimento que acabou de criar. Em seguida, selecione Continuar.

  7. Em seguida, selecione os dispositivos a utilizar para testes e selecione Continue.

  8. Por fim, escolha um nome para o perfil em Nome do Perfil de Provisionamento e selecione Gerar.

    Escolher um nome de perfil de aprovisionamento

  9. Quando o novo perfil de provisionamento for criado forragem for criado, selecione Download. Lembre-se do local para o qual está guardado.

  10. 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.

  1. Inicie sessão no portal do Azure.

  2. 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.

    portal do Azure - selecione Centros de Notificação

  3. Na página 'Centros de Notificação ', selecione Criar na barra de ferramentas.

    Centros de Notificação - Adicionar botão de barra de ferramentas

  4. No separador Básicos na página Do Centro de Notificação , faça os seguintes passos:

    1. 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.

    2. Insira um nome único para o novo espaço de nome em Namespace Details.

    3. 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.

    4. Selecione um valor na caixa de lista de localização . Este valor especifica a localização em que pretende criar o hub.

    5. Selecione Criar.

      Portal do Azure – definir as propriedades do hub de notificação

  5. 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.

    portal do Azure - vá para o recurso

  6. 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.

    Portal do Azure – cadeias de ligação do hub de notificação

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

  1. Selecione Certificado.

  2. Selecione o ícone de ficheiro.

  3. Selecione o ficheiro .p12 que exportou anteriormente e, em seguida, selecione Abrir.

  4. Se necessário, especifique a senha correta.

  5. Selecione o modo Sandbox.

    Configure a certificação APNs em portal do Azure

  6. Selecione Guardar.

OPÇÃO 2: Utilização da autenticação baseada em fichas

  1. Selecione Token.

  2. Insira os seguintes valores que adquiriu anteriormente:

    • ID chave
    • ID do Pacote
    • ID da equipa
    • Token
  3. Escolha caixa de areia

  4. 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

  1. No Visual Studio, crie um novo projeto do iOS e selecione o modelo Aplicação de Vista Única e clique em Seguinte

    Visual Studio - Selecione o Tipo de Aplicação

  2. Insira o nome da app e o identificador de organização, em seguida, clique em Seguinte e, em seguida, Crie

  3. 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.

    Configuração de Aplicação do Visual Studio-iOS

  4. A partir da vista 'Solução', clique duas vezes no Entitlements.plist e certifique-se de que as notificações push são verificadas .

    Configuração de Elegibilidade do Visual Studio-iOS

  5. 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.

  6. 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 pelo hubname e DefaultListenSharedAccessSignature 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>";
    
  7. Em AppDelegate.cs, adicionar a seguinte declaração de utilização:

    using WindowsAzure.Messaging.NotificationHubs;
    using UserNotifications
    
  8. Criar uma implementação do MSNotificationHubDelegate in the AppDelegate.cs:

    public class AzureNotificationHubListener : MSNotificationHubDelegate
    {
        public override void DidReceivePushNotification(MSNotificationHub notificationHub, MSNotificationHubMessage message)
        {
    
        }
    }
    
  9. Em AppDelegate.cs, atualizar FinishedLaunching() 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;
    }
    
  10. Em AppDelegate.cs, implementar o DidReceivePushNotification método para a AzureNotificationHubListener 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);
    }
    
  11. 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.

Portal do Azure – Envio de Teste

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: