Amazon Simple Notification Service - AWS Mobile SDK para Unity

AWS Mobile SDK para Unity ahora está incluido en AWS SDK for .NET. Esta guía hace referencia a la versión archivada de Mobile SDK para Unity. Para obtener más información, consulte ¿Qué es AWS Mobile SDK para Unity?

Amazon Simple Notification Service

Puede escribir aplicaciones de iOS y Android capaces de recibir notificaciones de inserción a móviles utilizando Amazon Simple Notification Service (SNS) y el SDK de Unity. Para obtener más información, consulte Amazon Simple Notification Service.

En este tema se explica cómo configurar la aplicación de ejemplo del SDK de Unity de AWS, SNSExample.unity, para recibir notificaciones de inserción a móviles a través de Amazon SNS.

Puede crear aplicaciones tanto para iOS como para Android mediante la muestra de SNSExample.unity. Los pasos de configuración son diferentes para iOS y Android; lea la sección correspondiente a la plataforma a la que va destinada la aplicación.

Requisitos previos

A continuación indicamos los requisitos previos para usar esta solución.

Establecer permisos de SNS

Al crear un grupo de identidades de Cognito se generan dos roles de IAM:

  • Cognito/_<Identity-Pool-Name>Auth_DefaultRole: los roles de IAM predeterminados para los usuarios autenticados

  • Cognito/_<Identity-Pool-Name>Unauth_DefaultRole: los roles de IAM predeterminados para los usuarios sin autenticar

Debe añadir a esas funciones permisos para acceder al servicio Amazon SNS. Para ello:

  1. Busque la consola de IAM y seleccione el rol de IAM que va a configurar.

  2. Haga clic en Attach Policy (Adjuntar política), seleccione la política AmazonSNSFullAccess y haga clic en Attach Policy (Adjuntar política).

nota

No se recomienda utilizar AmazonSNSFullAccess en un entorno de producción; en este caso lo estamos utilizando para permitirle comenzar rápidamente. Para obtener más información acerca de la especificación de los permisos de un rol de IAM, consulte la información general sobre los permisos de los roles de IAM.

Requisitos previos de iOS

  • Pertenecer al Apple iOS Developer Program

  • Generar una identidad de firma

  • Crear un perfil de aprovisionamiento configurado para notificaciones de inserción

Tendrá que ejecutar su aplicación en un dispositivo físico para recibir notificaciones de inserción. Para ejecutar la aplicación en un dispositivo debe estar suscrito a Apple iOS Developer Program. Una vez que se haya suscrito, podrá utilizar Xcode para generar una identidad de firma. Para obtener más información, consulte la documentación App Distribution Quick Start de Apple. Necesitará un perfil de aprovisionamiento configurado para notificaciones de inserción. Para obtener más información consulte la documentación de Apple Configuring Push Notifications.

Requisitos previos de Android

  • Instalación de Android SDK

  • Instalación del JDK

  • android-support-v4.jar

  • google-play-services.jar

Configurar la aplicación de ejemplo para iOS

Abra el editor Unity y cree un nuevo proyecto. Importe el SDK de AWS para el paquete Unity seleccionando Assets (Activos)/Import Package (Importar paquete)/Custom Package (Paquete personalizado) y elija aws-unity-sdk-sns-2.0.0.1.unitypackage. Asegúrese de que todos los elementos del cuadro de diálogo Importing Package (Importar paquete) están seleccionados y haga clic en Import (Importar).

Configuración de Unity

Realice los siguientes pasos para configurar el proyecto Unity:

  1. En el panel Project (Proyecto), vaya a Assets (Activos)/AWSSDK/examples (ejemplos) y abra la escena SNSExample.

  2. En el panel Hierarchy (Jerarquía), seleccione SNSExample.

  3. En el panel Inspector(Inspector), especifique su identidad del grupo de identidades de Cognito.

  4. Observe que existe un cuadro de texto para iOS Platform Application ARN (ARN de aplicación de plataforma iOS); generará esa información más adelante.

  5. Seleccione File (Archivo)/Build Settings (Configuración de la compilación). En el cuadro de diálogo Build Settings (Configuración de la compilación), haga clic en el botón Add Current (Agregar actual) situado en la lista desplegable Scenes in Build (Escenas en compilación) para añadir la escena actual.

  6. En Platform (Plataforma) seleccione iOS y haga clic en el botón Player Settings (Configuración de reproductor), en Inspector Pane (Panel de inspector) del editor Unity, haga clic en el icono de iPhone y desplácese hasta la sección Identification (Identificación) y especifique un Bundle Identifier (Identificador de paquete).

Configuración para iOS

Realice los siguientes pasos para configurar la muestra a fin de establecer ajustes específicos de iOS:

  1. En un navegador web, vaya al centro para desarrolladores de Apple y haga clic en Certificates, Identifiers & Profiles (Certificados, identificadores y perfiles).

  2. Haga clic en Identifiers (Identificadores) en iOS Apps (Aplicaciones iOS), haga clic en el botón más situado en la esquina superior derecha de la página web para añadir un nuevo ID de aplicación de iOS y escriba una descripción de ID de aplicación.

  3. Desplácese hasta la sección Add ID Suffix (Agregar sufijo de ID), seleccione Explicit App ID (ID de aplicación explícito) y escriba el identificador de su paquete.

  4. Desplácese hacia abajo hasta la sección App Services (Servicios de aplicación) y seleccione Push Notifications (Notificaciones de inserción).

  5. Haga clic en el botón Continue (Continuar).

  6. Haga clic en el botón Submit (Enviar).

  7. Haga clic en el botón Done (Listo).

  8. Seleccione el ID de aplicación que acaba de crear y, a continuación, haga clic en el botón Edit (Editar).

  9. Desplácese hasta la sección Push Notifications (Notificaciones de inserción).

  10. Haga clic en el botón Create Certificate (Crear certificado) bajo Development SSL Certificate (Certificado SSL de desarrollo).

  11. Siga las instrucciones para crear una solicitud de firma del certificado (CSR), cargar la solicitud y descargar un certificado SSL que se utilizará para la comunicación con Apple Push Notification Service (APNS).

  12. En la página Certificates, Identifiers & Profiles (Certificados, identificadores y perfiles), haga clic en All (Todo) en Provisioning Profiles (Perfiles de aprovisionamiento).

  13. Haga clic en el botón más situado en la esquina superior derecha para añadir un nuevo perfil de aprovisionamiento.

  14. Seleccione iOS App Development (Desarrollo de aplicación iOS) y haga clic en el botónContinue (Continuar).

  15. Seleccione su ID de aplicación y haga clic en el botón Continue (Continuar).

  16. Seleccione su certificado de desarrollador y haga clic en el botón Continue (Continuar).

  17. Seleccione su dispositivo y haga clic en el botón Continue (Continuar).

  18. Introduzca un nombre de perfil y haga clic en el botón Generate (Generar).

  19. Para instalar el perfil de aprovisionamiento, descargue el archivo de aprovisionamiento y haga doble clic en él.

Es posible que necesite actualizar los perfiles de aprovisionamiento en Xcode después de añadir uno nuevo. En Xcode:

  1. Seleccione el elemento de menú Xcode (Xcode)/Preferences (Preferencias).

  2. Seleccione la pestaña Accounts (Cuentas), seleccione su ID de Apple y haga clic en View Details (Ver detalles).

  3. Haga clic en el botón de actualización que aparece en la esquina inferior izquierda del cuadro de diálogo para actualizar los perfiles de aprovisionamiento y asegurarse de que se muestra el nuevo perfil.

Configuración de SNS

  1. Inicie la aplicación de KeyChain Access y seleccione My Certificates (Mis certificados) en la parte inferior izquierda de la pantalla, haga clic con el botón derecho en el certificado SSL que ha generado para conectarse a APNS y seleccione Export (Exportar); se le pedirá que especifique un nombre para el archivo y una contraseña para proteger el certificado. El certificado se guardará en un archivo P12.

  2. En un navegador web, vaya a SNS Console (Consola de SNS) y haga clic en Applications (Aplicaciones) en la parte izquierda de la pantalla.

  3. Haga clic en Create platform application (Crear aplicación de plataforma) para crear una nueva aplicación de plataforma de SNS.

  4. Introduzca un nombre de aplicación en Application Name (Nombre de aplicación).

  5. Seleccione Apple Push Notification Service Sandbox (APNS_SANDBOX)(Entorno de pruebas del servicio de notificaciones de inserción de Apple, APNS_SANDBOX) en Push notification platform (Plataforma de notificaciones de inserción).

  6. Haga clic en Choose File (Elegir archivo) y seleccione el archivo P12 que creó al exportar el certificado SSL.

  7. Escriba la contraseña que especificó cuando exportó el certificado SSL y haga clic en Load Credentials From File (Cargar credenciales desde archivo).

  8. Haga clic en Create platform application (Crear aplicación de plataforma).

  9. Seleccione la aplicación de plataforma que acaba de crear y copie el ARN de la aplicación.

  10. Vuelva a su proyecto en el editor de Unity, seleccione SNSExample (Ejemplo de SNS) en el panel Hierarchy (Jerarquía), en el panel Inspector (Inspector) y pegue el ARN de aplicación de plataforma en el cuadro de texto iOS Platform Application ARN (ARN de aplicación de plataforma iOS).

  11. Seleccione File (Archivo)/Build Settings (Configuración de la compilación) y haga clic en el botón Build (Compilar) para crear un proyecto Xcode.

Uso de Xcode

  1. Abra el proyecto Xcode y selecciónelo en el explorador de proyectos.

  2. Verifique que el identificador del paquete está establecido correctamente

  3. Verifique que se ha especificado su cuenta de Apple Developer en Team (Equipo): esto es necesario para que se aplique su perfil de aprovisionamiento.

  4. Cree el proyecto y ejecútelo en su dispositivo.

  5. Pulse Register for Notification (Registrar para notificaciones) y pulse OK (Aceptar) para permitir las notificaciones. La aplicación mostrará el token de dispositivo.

En la consola de SNS, haga clic en Applications (Aplicaciones), seleccione la aplicación de plataforma y haga clic en Create Platform Endpoint (Crear punto de enlace de plataforma). A continuación, introduzca el token de dispositivo que muestra la aplicación.

En este momento, su aplicación, APNS y NSN están totalmente configurados. Puede seleccionar la aplicación de plataforma, seleccionar el punto de enlace y hacer clic en Publish to endpoint (Publicar en punto de enlace) para enviar una notificación de inserción a su dispositivo.

Ejemplo de Unity (iOS)

En este ejemplo se crea una instancia CognitoAWSCredentials para generar credenciales temporales limitadas que permiten a la aplicación contactar con los servicios de AWS. También se crea una instancia de AmazonSimpleNotificationServiceClient para comunicarse con SNS. La aplicación muestra dos botones, denominados Register for Notification (Registrar para notificación= y Unregister (Cancelar registro).

Cuando se pulsa el botón Register for Notifications (Registrar para notificaciones), se llama al método RegisterDevice(). A su vez, el método RegisterDevice() llama a UnityEngine.iOS.NotificationServices.RegisterForNotifications, que especifica qué tipos de notificaciones (alertas, sonido o insignia) se van a utilizar. También hace una llamada a asíncrona a APNS para obtener un token de dispositivo. Dado que no hay ninguna devolución de llamada definida, se contacta con CheckForDeviceToken repetidamente (hasta 10 veces) para comprobar el token de dispositivo.

Cuando se recupera un token, se llama a AmazonSimpleNotificationServiceClient.CreatePlatformEndpointAsync() para crear un punto de enlace para la aplicación de plataforma de SNS.

El ejemplo ya está configurado para recibir notificaciones de inserción. Puede ir a la consola de SNS, hacer clic en Applications (Aplicaciones), seleccionar la aplicación de plataforma en la parte izquierda de la página, seleccionar un punto de enlace y hacer clic en Publish to Endpoint (Publicar en punto de enlace). Seleccione el punto de enlace que desea utilizar y haga clic en Publish to Endpoint (Publicar en punto de enlace). Escriba un mensaje en el cuadro de texto y haga clic en Publish message (Publicar mensaje) para publicarlo.

Configurar la aplicación de ejemplo Unity para Android

Abra el editor Unity y cree un nuevo proyecto. Importe el SDK de AWS para el paquete Unity seleccionando Assets (Activos)/Import Package (Importar paquete)/Custom Package (Paquete personalizado) y elija aws-unity-sdk-sns-2.0.0.1.unitypackage. Asegúrese de que todos los elementos del cuadro de diálogo Importing Package (Importar paquete) están seleccionados y haga clic en Import (Importar).

Configuración de Unity

Realice los siguientes pasos para configurar el proyecto Unity:

  1. En el panel Project (Proyecto), vaya a Assets (Activos)/AWSSDK/examples (ejemplos) y abra la escena SNSExample.

  2. En el panel Hierarchy (Jerarquía), seleccione SNSExample.

  3. En el panel Inspector(Inspector), especifique su identidad del grupo de identidades de Cognito.

  4. Observe que existe un cuadro de texto para Android Platform Application ARN (ARN de aplicación de plataforma Android) y Google Console Project ID (ID de proyecto de consola de Google); generará dicha información más adelante.

  5. Seleccione File (Archivo)/Build Settings (Configuración de la compilación). En el cuadro de diálogo Build Settings (Configuración de la compilación), haga clic en el botón Add Current (Agregar actual) situado en la lista desplegable Scenes in Build (Escenas en compilación) para añadir la escena actual.

  6. En Platform (Plataforma) seleccione Android y haga clic en el botón Player Settings (Configuración de reproductor) en el Inspector Pane (Panel de inspector) del editor de Unity, haga clic en el icono de Android, desplácese hasta la sección Identification (Identificación) y especifique un Bundle Identifier (Identificador de paquete).

  7. Copie android-support-v4.jar y google-play-services.jar en el directorioAssets (Activos)/Plugins (Complementos)/Android del panel Project (Proyecto).

Para obtener más información acerca de dónde encontrar android-support-v4.jar, consulte Android Support Library Setup. Para obtener más información sobre cómo encontrar google-play-services.jar, consulte Google APIs for Android Setup.

Configuración para Android

En primer lugar, añada un nuevo proyecto de API de Google:

  1. En un navegador web, vaya a la consola para desarrolladores de Google y haga clic en Create Project (Crear proyecto).

  2. En el cuadro New Project (Nuevo proyecto), escriba el nombre de proyecto, tome nota del número de proyecto (lo necesitará más adelante) y haga clic en Create (Crear).

A continuación, habilite el servicio Google Cloud Messaging (GCM) para el proyecto:

  1. El nuevo proyecto debe aparecer seleccionado en Google Developers Console. De lo contrario, selecciónelo en el menú desplegable en la parte superior de la página.

  2. Seleccione APIs & auth (API y autenticación) en la barra lateral situada en la parte izquierda de la página.

  3. En el cuadro de búsqueda, escriba "Google Cloud Messaging for Android" y haga clic en el enlace Google Cloud Messaging for Android.

  4. Haga clic en Enable API (Habilitar API).

Por último, obtenga una clave de API:

  1. En la consola de Google para desarrolladores, seleccione APIs & auth (API y autenticación) > Credentials (Credenciales).

  2. En Public API access (Acceso a API pública), haga clic en Create new key (Crear nueva clave).

  3. En el cuadro de diálogo Create a new key (Crear nueva clave), haga clic en Server key (Clave de servidor).

  4. En el cuadro de diálogo resultante, haga clic en Create (Crear) y copie la clave de API que se muestra.

Utilizará la clave de API para realizar la autenticación más adelante.

Configuración de SNS

  1. En un navegador web, vaya a SNS Console (Consola de SNS) y haga clic en Applications (Aplicaciones) en la parte izquierda de la pantalla.

  2. Haga clic en Create platform application (Crear aplicación de plataforma) para crear una nueva aplicación de plataforma de SNS.

  3. Introduzca un nombre de aplicación en Application Name (Nombre de aplicación).

  4. Seleccione Google Cloud Messaging (GCM) en Push notification platform (Plataforma de notificaciones de inserción)

  5. Pegue la clave de API en el cuadro de texto API key (Clave de API).

  6. Haga clic en Create platform application (Crear aplicación de plataforma).

  7. Seleccione la aplicación de plataforma que acaba de crear y copie el ARN de la aplicación.

  8. Vuelva a su proyecto en el editor de Unity, seleccione SNSExample (Ejemplo de SNS) en el panel Hierarchy (Jerarquía), en el panel Inspector (Inspector) y pegue el ARN de aplicación de plataforma en el cuadro de texto Android Platform Application ARN (ARN de aplicación de plataforma Android) y el número de proyecto en el cuadro de texto Google Console Project ID (ID de proyecto de consola de Google).

  9. Conecte el dispositivo Android a su equipo, seleccione File (Archivo)/Build Settings (Configuración de la compilación) y haga clic en Build and Run (Compilar y ejecutar).

Ejemplo de Unity (Android)

En este ejemplo se crea una instancia CognitoAWSCredentials para generar credenciales temporales limitadas que permiten a la aplicación contactar con los servicios de AWS. También se crea una instancia de AmazonSimpleNotificationServiceClient para comunicarse con SNS.

La aplicación muestra dos botones, denominados Register for Notification (Registrar para notificación= y Unregister (Cancelar registro). Al pulsar el botón Register for Notifications (Registrarse para notificaciones), se llama al método RegisterDevice(). A su vez, el método RegisterDevice() llama a GCM.Register, que registra la aplicación en GCM. GCM es una clase definida en el código de ejemplo. Hace una la llamada asíncrona para registrar la aplicación en GCM.

Cuando se llama a la devolución de llamada, se llama a AmazonSimpleNotificationServiceClient.CreatePlatformEndpointAsync para crear un extremo de plataforma que reciba los mensajes de SNS.

El ejemplo ya está configurado para recibir notificaciones de inserción. Puede ir a la consola de SNS, hacer clic en Applications (Aplicaciones), seleccionar la aplicación de plataforma en la parte izquierda de la página, seleccionar un punto de enlace y hacer clic en Publish to Endpoint (Publicar en punto de enlace). Seleccione el punto de enlace que desea utilizar y haga clic en Publish to Endpoint (Publicar en punto de enlace). Escriba un mensaje en el cuadro de texto y haga clic en Publish message (Publicar mensaje) para publicarlo.