Receber notificações por push usando o SNS (Xamarin iOS) - AWS Mobile SDK

O AWS Mobile SDK for Xamarin agora está incluído no AWS SDK for .NET. Este guia faz referência à versão arquivada do Mobile SDK para Xamarin.

Receber notificações por push usando o SNS (Xamarin iOS)

Este documento explica como enviar notificações por push a um aplicativo Xamarin iOS usando o Amazon Simple Notification Service (SNS) e o AWS Mobile SDK para .NET e Xamarin.

Configuração do projeto

Pré-requisitos

É necessário concluir todas as instruções na Configuração do AWS Mobile SDK para .NET e Xamarin antes de iniciar este tutorial.

Definir permissões para o SNS

Siga a etapa 2 em Configuração do AWS Mobile SDK para .NET e Xamarin para associar a política mencionada abaixo aos perfis do aplicativo. Isso concederá aplicativo as permissões adequadas para acessar o SNS:

  1. Acesse o console do IAM e selecione a função do IAM a ser configurada.

  2. Clique em Attach Policy (Anexar política), selecione a política AmazonSNSFullAccess policy e clique em Attach Policy (Anexar política).

Atenção

Não é recomendável o uso do AmazonSNSFullAccess em um ambiente de produção. Nós o utilizamos aqui para que você possa avançar rapidamente. Para obter mais informações sobre como especificar permissões para uma perfil do IAM, consulte Visão geral das permissões de funções do IAM.

Obtenção da associação ao Apple iOS Developer Program

Você precisará executar o aplicativo em um dispositivo físico para receber notificações por push. Para executar o aplicativo em um dispositivo, é preciso ter uma associação ao Apple iOS Developer Program. Quando você tiver uma associação, poderá usar o Xcode para gerar uma identidade de assinatura. Para obter mais informações, consulte a documentação App Distribution Quick Start da Apple.

Criação de um certificado iOS

Primeiro, você precisa criar um certificado iOS. Em seguida, você precisará criar um perfil de provisionamento configurado para notificações por push. Para fazer isso:

  1. Acesse o Apple Developer Member Center e clique em Certificates, Identifiers & Profiles (Certificados, identificadores e perfis).

  2. Clique em Identifiers (Identificadores), em iOS Apps (Aplicativos iOS), clique no sinal de adição no canto superior direito da página da web para adicionar um novo ID do aplicativo iOS e insira uma descrição para o ID do aplicativo.

  3. Role a tela para baixo até a seção Add ID Suffix (Adicionar sufixo ao ID) e selecione Explicit App ID (ID explícito do aplicativo) e insira o identificador do pacote.

  4. Role para baixo até a seção App Services (Serviços do aplicativo) e, em seguida, selecione Push Notifications (Notificações por push).

  5. Clique em Continue.

  6. Clique em Submit.

  7. Clique em Done (Concluído).

  8. Selecione o ID do aplicativo que você acabou de criar e clique em Edit (Editar).

  9. Role para baixo até a seção Push Notifications (Notificações por push). Clique em Create Certificate (Criar certificado), em Development SSL Certificate (Certificado SSL para desenvolvimento).

  10. Siga as instruções para criar a Certificate Signing Request (CSR - Solicitação de assinatura de certificado), fazer o upload da solicitação e fazer o download de um certificado SSL que será usado para se comunicar com o Apple Notification Service (APNS).

  11. Retorne à página Certificates, Identifiers & Profiles (Certificados, identificadores e perfis). Clique em All (Tudo), em Provisioning Profiles (Perfis de provisionamento).

  12. Clique no botão de adição no canto superior direito para adicionar um novo perfil de provisionamento.

  13. Selecione iOS App Development (Desenvolvimento de aplicativo iOS) e clique em Continue (Continuar).

  14. Selecione o ID do aplicativo e clique em Continue (Continuar).

  15. Selecione o certificado do desenvolvedor e clique em Continue (Continuar).

  16. Selecione o dispositivo e clique em Continue (Continuar).

  17. Insira um nome de perfil e clique em Generate (Gerar).

  18. Faça o download e clique duas vezes no arquivo de provisão para instalar o perfil de provisionamento.

Para obter mais informações sobre o provisionamento de um perfil configurado para receber notificações por push, consulte a documentação Configuração de notificações por push da Apple.

Uso do certificado para criar um Nome de região da Amazon (ARN) de plataforma no console do SNS

  1. Execute o aplicativo de acesso KeyChain, selecione My Certificates (Meus certificados) na parte inferior esquerda da tela, clique com o botão direito do mouse no certificado SSL que você gerou para se conectar a APNS e selecione Export (Exportar). Você será solicitado a especificar um nome para o arquivo e uma senha para proteger o certificado. O certificado será salvo em um arquivo P12.

  2. Acesse o console do SNS e clique em Applications (Aplicativos) no lado esquerdo da tela.

  3. Clique em Create platform application (Criar aplicativo de plataforma) para criar um novo aplicativo para a plataforma SNS.

  4. Insira um Application Name (Nome de aplicativo).

  5. Selecione Apple Development (Desenvolvimento da Apple) em Push notification platform (Plataforma de notificação por push).

  6. Clique em Choose File (Selecionar arquivo) e selecione o arquivo P12 criado ao exportar o certificado SSL.

  7. Insira a senha especificada durante a exportação do certificado SSL e clique em Load Credentials From File (Carregar credenciais a partir do arquivo).

  8. Clique em Create platform application (Criar aplicativo de plataforma).

  9. Selecione o aplicativo de plataforma que você acabou de criar e copie o Nome de região da Amazon (ARN) do aplicativo. Você precisará dele nas etapas subsequentes.

Adicionar pacotes NuGet para SNS ao seu projeto

Siga a etapa 4 das instruções em Configuração do AWS Mobile SDK para .NET e Xamarin para adicionar o pacote NuGet do Amazon Simple Notification Service ao seu projeto.

Criação de um cliente SNS

var snsClient = new AmazonSimpleNotificationServiceClient(credentials, region);

Registro do aplicativo para notificações remotas

Para registrar um aplicativo, chame RegisterForRemoteNotifications no objeto UIApplication, como mostrado abaixo. Coloque o código a seguir em AppDelegate.cs, inserindo o Nome de região da Amazon (ARN) do aplicativo de plataforma quando solicitado abaixo:

public override bool FinishedLaunching(UIApplication app, NSDictionary options) { // do something var pushSettings = UIUserNotificationSettings.GetSettingsForTypes ( UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound, null ); app.RegisterUserNotifications(pushSettings); app.RegisterForRemoteNotifications(); // do something return true; } public override void RegisteredForRemoteNotifications(UIApplication application, NSData token) { var deviceToken = token.Description.Replace("<", "").Replace(">", "").Replace(" ", ""); if (!string.IsNullOrEmpty(deviceToken)) { //register with SNS to create an endpoint ARN var response = await SnsClient.CreatePlatformEndpointAsync( new CreatePlatformEndpointRequest { Token = deviceToken, PlatformApplicationArn = "YourPlatformArn" /* insert your platform application ARN here */ }); } }

Envio de uma mensagem do console do SNS para o endpoint

  1. Acesse SNS Console (Console do SNS) > Applications (Aplicativos).

  2. Selecione o aplicativo de plataforma, selecione um endpoint e clique em Publish to endpoint (Publicar no endpoint).

  3. Digite uma mensagem de texto na caixa de texto e clique em Publish message (Publicar mensagem) para publicar uma mensagem.