Amazon Simple Notification Service - AWS Mobile SDK para Unity

O AWS Mobile SDK para Unity agora está incluído na AWS SDK for .NET. Este guia faz referência à versão arquivada do Mobile SDK para Unity. Para obter mais informações, consulte O que é o AWS Mobile SDK para Unity?.

Amazon Simple Notification Service

Usando o Amazon Simple Notification Service (SNS) e o Unity SDK, é possível gravar aplicativos para iOS e Android que possam receber notificações por push em dispositivos móveis. Para obter mais informações sobre o SNS, consulte Amazon Simple Notification Service

Este tópico o orientará durante a configuração do AWS SDK para o aplicativo de amostra do Unity, SNSExample.unity, para receber notificações por push em dispositivos móveis, por meio do Amazon SNS.

É possível criar aplicativos para iOS e Android, usando a amostra SNSExample.unity. As etapas de configuração são diferentes nas plataformas iOS e Android. Leia a seção abaixo, de acordo com a plataforma de destino.

Pré-requisitos

Os seguintes pré-requisitos são necessários para usar essa solução.

Definir permissões para o SNS

Ao criar um grupo de identidades do Cognito, duas funções do IAM são geradas:

  • Cognito/_<Identity-Pool-Name>Auth_DefaultRole – a função do IAM referente aos usuários autenticados

  • Cognito/_<Identity-Pool-Name>Unauth_DefaultRole – a função do IAM referente aos usuários não autenticados

Você deve adicionar permissões para acessar o serviço do Amazon SNS referente a essas funções. Para fazer isso:

  1. Navegue até 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).

nota

Usar o AmazonSNSFullAccess não é recomendado em um ambiente de produção. O usamos aqui para permitir que você inicie e avance rapidamente. Para obter mais informações sobre como especificar permissões para uma função do IAM, consulte Visão geral das permissões de funções do IAM.

Pré-requisitos do iOS

  • Associação ao Apple iOS Developer Program (Programa de desenvolvedor do iOS da Apple)

  • Gerar uma identidade de assinatura

  • Criar um perfil de provisionamento configurado para notificações por push

Você precisará executar o aplicativo em um dispositivo físico para receber notificações por push. Para executar seu aplicativo em um dispositivo, é preciso ter uma associação ao Apple iOS Developer Program (Programa de desenvolvedor do iOS da Apple). 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. Depois, você precisará de um perfil de provisionamento configurado para receber notificações por push. Para obter mais informações, consulte a documentação Configuring Push Notifications da Apple.

Pré-requisitos do Android

  • Instale o Android SDK

  • Instale o JDK

  • android-support-v4.jar

  • google-play-services.jar

Configuração do Unity Sample App para iOS

Abra o editor do Unity e crie um novo projeto. Importe o AWS SDK para o pacote do Unity, selecionando Assets (Ativos)/Import Package (Importar pacote)/Custom Package (Pacote personalizado) e aws-unity-sdk-sns-2.0.0.1.unitypackage. Certifique-se de que todos os itens da caixa de diálogo Importing Package (Importar pacote) estejam marcados e clique em Import (Importar).

Configuração do Unity

Execute as seguintes etapas para configurar o projeto do Unity:

  1. No painel Project (Projeto), navegue até Assets (Ativos)/AWSSDK/examples (exemplos) e abra o cenário SNSExample.

  2. No painel Hierarchy (Hierarquia), selecione SNSExample.

  3. No painel Inspector (Inspetor) especifique seu ID do grupo de identidades do Cognito.

  4. Observe que não há uma caixa de texto referente ao iOS Platform Application ARN (ARN do aplicativo para a plataforma iOS). Você gerará essas informações mais tarde.

  5. Para adicionar o cenário atual ao desenvolvedor, selecione File (Arquivo)/Build Settings (Configurações do desenvolvedor), na caixa de diálogo Build Settings (Configurações do desenvolvedor), clique no botão Add Current (Adicionar atual) abaixo da caixa da lista Scenes in Build (Cenários do desenvolvedor).

  6. Em Platform (Plataforma) selecione iOS e clique no botão Player Settings... (Configurações do Player...), no painel Inspector (Inspetor) do editor do Unity, clique no ícone do iPhone e role para baixo até a seção Identification (Identificação). Especifique um Bundle Identifier (Identificador de pacote).

Configuração do iOS

Execute as seguintes etapas para configurar a amostra, a fim de configurar as configurações específicas do iOS:

  1. Em um navegador da web, acesse o Apple Developer Member Center (Centro de membros do desenvolvedor da Apple), 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 no botão Continue (Continuar).

  6. Clique no botão Submit (Enviar).

  7. Clique no botão Done (Concluído).

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

  9. Role para baixo até a seção Push Notifications (Notificações por push).

  10. Clique no botão Create Certificate (Criar certificado), em Development SSL Certificate (Desenvolvimento do certificado SSL).

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

  12. Voltando à página da web Certificates, Identifiers & Profiles (Certificados, identificadores e perfis), clique em All (Todos) em Provisioning Profiles (Perfis de Provisionamento).

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

  14. Selecione iOS App Development (Desenvolvimento de aplicativos iOS) e clique no botão Continue (Continuar).

  15. Selecione o ID do aplicativo e clique no botão Continue (Continuar).

  16. Selecione o certificado do desenvolvedor e clique no botão Continue (Continuar).

  17. Selecione o dispositivo e clique no botão Continue (Continuar).

  18. Insira um nome de perfil e clique no botão Generate (Gerar).

  19. Faça o download e clique duas vezes no arquivo, para instalar o perfil de provisionamento.

Pode ser necessário atualizar os Perfis de provisionamento em Xcode após adicionar um novo. Em Xcode:

  1. Selecione o item de menu Xcode/Preferences (Preferências).

  2. Selecione a guia Accounts (Contas), selecione seu ID da Apple e clique em View Details (Visualizar detalhes).

  3. Clique no botão Atualizar, no canto inferior esquerdo da caixa de diálogo, para atualizar seus perfis de provisionamento e certifique-se de que o novo perfil será exibido.

Configuração de 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 gerado para se conectar ao 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. Em um navegador da web, 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 o Apple Push Notification Service (Serviço de notificações por push da Apple - APNS_SANDBOX) na Push notification platform (Plataforma de notificações 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.

  10. Volte para o projeto no editor do Unity, selecione SNSExample no painel Hierarchy (Hierarquia), no painel Inspector (Inspetor) e cole o Platform Application ARN na caixa de texto intitulada iOS Platform Application ARN (ARN do aplicativo para a plataforma iOS).

  11. Selecione File (Arquivo)/Build Settings (Configurações do desenvolvedor) e clique no botão Build (Criar). Esta ação criará um projeto Xcode.

Uso do Xcode

  1. Abra o projeto Xcode e selecione o projeto no Navegador do projeto.

  2. Verifique se o identificador do pacote foi definido corretamente

  3. Verifique se a Apple Developer Account (Conta de desenvolvedor da Apple) foi especificada na Team (Equipe) – isso é obrigatório para que a alteração do perfil de provisionamento ocorra.

  4. Crie o projeto e execute-o em seu dispositivo.

  5. Toque em Register for Notification (Registrar para receber notificações), toque em OK para permitir notificações. O aplicativo exibirá o token do dispositivo

No Console do SNS, clique em Applications (Aplicativos), selecione o aplicativo de sua plataforma e clique em Create Platform Endpoint (Criar endpoint da plataforma), e insira o dispositivo de token exibido pelo aplicativo.

Neste momento, o aplicativo, o APNS e o NSN estarão integralmente configurados. É possível selecionar o aplicativo da plataforma, selecionar seu endpoint e clicar em Publish to endpoint (Publicar no endpoint) para enviar uma notificação por push para o dispositivo.

Amostra do Unity (iOS)

A amostra cria uma instância CognitoAWSCredentials, a fim de gerar credenciais temporárias e de escopo limitado, que permitem que o aplicativo convoque os serviços da AWS. Esta ação cria uma instância do AmazonSimpleNotificationServiceClient, que se comunica com o SNS. O aplicativo exibe dois botões, intitulados Register for Notification (Registrar para receber notificações) e Unregister (Cancelar registro).

ao tocar no botão Register for Notifications (Registrar para receber notificações), o método RegisterDevice() é chamado. O método RegisterDevice() chama UnityEngine.iOS.NotificationServices.RegisterForNotifications, que especifica quais tipos de notificação (alerta, som ou distintivo) serão usados. Ele faz também uma chamada assíncrona para APNS, visando obter um token do dispositivo. Como não existe um retorno de chamada definido, CheckForDeviceToken será chamado repetidamente (até 10 vezes) para verificar o token do dispositivo.

Quando um token for recuperado AmazonSimpleNotificationServiceClient.CreatePlatformEndpointAsync() será chamado, a fim de criar um endpoint para o aplicativo da plataforma do SNS.

A amostra agora será configurada para receber notificações por push. É possível navegar até o Console do SNS, clique em Applications (Aplicativos) do lado esquerdo da página, selecione o aplicativo da plataforma, selecione um endpoint e clique em Publish to endpoint (Publicar no endpoint). Selecione o endpoint que será usado e clique em Publish to endpoint (Publicar no Endpoint). Digite uma mensagem de texto na caixa de texto e clique em Publish message (Publicar mensagem) para publicar uma mensagem.

Configuração do Unity Sample App para Android

Abra o editor do Unity e crie um novo projeto. Importe o AWS SDK para o pacote do Unity, selecionando Assets (Ativos)/Import Package (Importar pacote)/Custom Package (Pacote personalizado) e aws-unity-sdk-sns-2.0.0.1.unitypackage. Certifique-se de que todos os itens da caixa de diálogo Importing Package (Importar pacote) estejam marcados e clique em Import (Importar).

Configuração do Unity

Execute as seguintes etapas para configurar o projeto do Unity:

  1. No painel Project (Projeto), navegue até Assets (Ativos)/AWSSDK/examples (exemplos) e abra o cenário SNSExample.

  2. No painel Hierarchy (Hierarquia), selecione SNSExample.

  3. No painel Inspector (Inspetor) especifique seu ID do grupo de identidades do Cognito.

  4. Observe que não há uma caixa de texto referente ao Android Platform Application ARN (ARN do aplicativo para a plataforma Android) e ao Google Console Project ID (ID do projeto do console do Google), essas informações serão geradas mais tarde.

  5. Para adicionar o cenário atual ao desenvolvedor, selecione File (Arquivo)/Build Settings (Configurações do desenvolvedor), na caixa de diálogo Build Settings (Configurações do desenvolvedor), clique no botão Add Current (Adicionar atual) abaixo da caixa da lista Scenes in Build (Cenários do desenvolvedor).

  6. Em Platform (Plataforma), selecione Android e clique no botão Player Settings... (Configurações do Player...), no painel Inspector (Inspetor) do editor do Unity, clique no ícone do Android e role para baixo até a seção Identification (Identificação). Especifique um Bundle Identifier (Identificador de pacote).

  7. Copie android-support-v4.jar e google-play-services.jar para o diretório Assets (Ativos)/Plugins/Android no painel Project (Projeto).

Para obter mais informações sobre onde encontrar android-support-v4.jar, consulte Configuração da biblioteca de suporte ao Android. Para obter mais informações sobre como encontrar google-play-services.jar, consulte APIs do Google para configuração do Android.

Configuração do Android

Primeiro, adicione um novo projeto API do Google:

  1. Em um navegador da web, acesse o Console de desenvolvedores do Google, clique em Create Project (Criar projeto).

  2. Na caixa New Project (Novo projeto), insira um nome de projeto, anote o número do projeto (você precisará dele mais tarde) e clique em Create (Criar).

Em seguida, habilite o serviço Google Cloud Messaging (GCM) do seu projeto:

  1. No Console de desenvolvedores do Google, seu novo projeto já deve estar selecionado. Se não estiver, selecione-o no menu suspenso, na parte superior da página.

  2. Selecione APIs & auth (APIs e autorizações) na barra lateral à esquerda da página.

  3. Na caixa de pesquisa, digite "Google Cloud Messaging for Android" e clique no link Google Cloud Messaging for Android (Google Cloud Messaging para Android) abaixo.

  4. Clique em Enable API (Permitir API).

Por fim, obtenha uma chave para a API:

  1. No Console de desenvolvedores do Google, selecione APIs & auth (APIs e autorizações) > Credentials (Credenciais).

  2. Em Public API access (Acesso à API pública), clique em Create new key (Criar nova chave).

  3. Na caixa de diálogo Create a new key (Criar uma nova chave), clique em Server key (Chave do servidor).

  4. Na caixa de diálogo resultante, clique em Create (Criar) e copie a chave da API exibida.

Você usará a chave da API para realizar a autenticação posteriormente.

Configuração de SNS

  1. Em um navegador da web, acesse o Console do SNS e clique em Applications (Aplicativos) no lado esquerdo da tela.

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

  3. Insira um Application Name (Nome de aplicativo)

  4. Selecione Google Cloud Messaging (GCM) na Push notification platform (Plataforma de notificações por push)

  5. Cole a chave da API na caixa de texto intitulada API key (Chave da API).

  6. Clique em Create platform application (Criar aplicativo para a plataforma)

  7. Selecione o aplicativo de plataforma que você acabou de criar e copie o Nome de região da Amazon (ARN) do aplicativo.

  8. Volte para o projeto no editor do Unity, selecione SNSExample no painel Hierarchy (Hierarquia), no painel Inspector (Inspetor) e cole o ARN do aplicativo para a plataforma na caixa de texto intitulada Android Platform Application ARN (ARN do aplicativo para a plataforma Android) e o número do projeto na caixa de texto intitulada Google Console Project ID (ID do projeto do console do Google).

  9. Conecte o dispositivo Android ao seu computador, selecione File (Arquivo)/Build Settings (Configurações do desenvolvedor) e clique em Build and Run (Criar e executar).

Unity Sample (Android)

A amostra cria uma instância CognitoAWSCredentials, a fim de gerar credenciais temporárias e de escopo limitado, que permitem que o aplicativo convoque os serviços da AWS. Esta ação cria uma instância do AmazonSimpleNotificationServiceClient, que se comunica com o SNS.

O aplicativo exibe dois botões, intitulados Register for Notification (Registrar para receber notificações) e Unregister (Cancelar registro). Ao tocar no botão Register for Notifications (Registrar para receber notificações), o método RegisterDevice() é chamado. O método RegisterDevice() chama GCM.Register, o que registra o aplicativo no GCM. GCM é uma classe definida no código de exemplo. Ele faz uma chamada assíncrona para registrar o aplicativo no GCM.

Quando houver o retorno de chamada, AmazonSimpleNotificationServiceClient.CreatePlatformEndpointAsync será chamado para criar um endpoint para a plataforma SNS, visando o recebimento de mensagens do SNS.

A amostra agora será configurada para receber notificações por push. É possível navegar até o Console do SNS, clique em Applications (Aplicativos) do lado esquerdo da página, selecione o aplicativo da plataforma, selecione um endpoint e clique em Publish to endpoint (Publicar no endpoint). Selecione o endpoint que será usado e clique em Publish to endpoint (Publicar no Endpoint). Digite uma mensagem de texto na caixa de texto e clique em Publish message (Publicar mensagem) para publicar uma mensagem.