Agrega notificaciones para desarrolladores en tiempo real

Descripción general

La Facturación Google Play proporciona notificaciones push del servidor que te permiten supervisar los cambios de estado de las suscripciones administradas en Play. Si habilitas las notificaciones para desarrolladores en tiempo real, recibirás un token de compra directamente de Cloud Pub/Sub cada vez que se actualice una suscripción existente.

Las notificaciones para desarrolladores en tiempo real no proporcionan toda la información sobre el estado de la suscripción, como si el usuario tiene acceso al contenido de la suscripción en la actualidad. Cuando recibes el token, siempre debes usar el token de compra para consultar la API de desarrolladores de Google Play y obtener toda la información, además de actualizar tu backend con el estado de autorización actual del usuario.

Es posible que los tipos de notificación cambien en el futuro. Deberías poder administrar los tipos de notificación no reconocidos y siempre confiar en la API para desarrolladores de Google Play para tomar las decisiones principales de lógica empresarial.

Para habilitar esta función, haz lo siguiente:

  1. Configura Cloud Pub/Sub con tu propio proyecto de Google Cloud Platform (GCP).
  2. Habilita las notificaciones para desarrolladores en tiempo real en tu app de Android.

Configura Cloud Pub/Sub

Cloud Pub/Sub es un servicio de mensajería en tiempo real completamente administrado que te permite enviar y recibir mensajes entre aplicaciones independientes. Además, proporciona mensajes durables y de baja latencia, que te ayudan a integrar de manera rápida los sistemas alojados en Google Cloud Platform y servicios de terceros.

La Facturación Google Play usa Cloud Pub/Sub para publicar notificaciones push sobre temas a los que te suscribes.

Establece requisitos previos

Para usar Cloud Pub/Sub, debes tener un proyecto en Google Cloud Platform (GCP) con la API de Cloud Pub/Sub activada. Si no estás familiarizado con GCP ni Cloud Pub/Sub, lee la Guía de inicio rápido.

Para recibir notificaciones push, debes crear un servidor de backend seguro que consuma los mensajes enviados sobre tu tema. Tu servidor puede usar las Bibliotecas cliente de Cloud Pub/Sub para consumir los mensajes.

Crea un tema

Para empezar a recibir notificaciones, es necesario que crees un tema en el que la Facturación Google Play publique las notificaciones. Para crear un tema, sigue estos pasos:

  1. Lee las instrucciones en Crea el tema.
  2. Usa Google Cloud Platform Console para crear el tema.

Crea una suscripción de Pub/Sub

Para recibir mensajes publicados en un tema, debes crear una suscripción de Pub/Sub a ese tema. Para crear una suscripción de Pub/Sub, haz lo siguiente:

  1. Lee la Guía para suscriptores de Cloud Pub/Sub a fin de determinar si debes configurar la suscripción como push o de extracción. Una suscripción de extracción requiere que el servidor de backend seguro inicie solicitudes en el servidor de Cloud Pub/Sub para obtener mensajes. Una suscripción push requiere que Cloud Pub/Sub inicie solicitudes en el servidor de backend seguro para entregar mensajes.
  2. Lee las instrucciones en Cómo agregar una suscripción.
  3. Usa Google Cloud Platform Console para crear la suscripción.

Otorga derechos de publicación en tu tema

Cloud Pub/Sub requiere que otorgues privilegios a Facturación Google Play para publicar notificaciones en tu tema. Para hacerlo, sigue estos pasos:

  1. Abre Google Cloud Console.
  2. Selecciona tu proyecto y haz clic en Pub/Sub en el panel de navegación izquierdo.
  3. Encuentra tu tema y abre los detalles de permisos.
    Figura 1: Acceso a la configuración de Permisos de temas
  4. Agrega la cuenta de servicio google-play-developer-notifications@system.gserviceaccount.com y otórgale la función de publicador de Pub/Sub.
    Figura 2: Agrega la cuenta de servicio de Google Play como publicador de Pub/Sub
  5. Guarda para completar la configuración del tema.
    Figura 3: Tema configurado

Habilita las notificaciones para desarrolladores en tiempo real en tu app

Para habilitar las notificaciones para desarrolladores en tiempo real en tu app, haz lo siguiente:

  1. Abre Google Play Console.
  2. Selecciona tu app para Android.
  3. Navega a la página Herramientas de desarrollo > Servicios y API.
  4. Desplázate hasta la sección Notificaciones para desarrolladores en tiempo real al final de la página.

    Figura 4: Sección de notificaciones para desarrolladores en tiempo real

  5. En el campo Nombre del tema, ingresa el nombre del tema de Cloud Pub/Sub completo que configuraste antes. El nombre del tema debe tener el formato projects/{project_id}/topics/{topic_name}, donde project_id es el identificador único de tu proyecto y topic_name es el nombre del tema que se creó antes.

  6. Haz clic en Enviar mensaje de prueba para enviar un mensaje de prueba. Realizar una publicación de prueba ayuda a garantizar que todo esté configurado de manera correcta. Si la publicación de prueba es correcta, aparece un mensaje que lo indica. Si se ejecuta un suscriptor en ese tema, debería recibir este mensaje de prueba.

    Si hay un error en la publicación, aparecerá un mensaje. Asegúrate de que el nombre del tema sea correcto y de que la cuenta de servicio google-play-developer-notifications@system.gserviceaccount.com tenga acceso de publicador de Pub/Sub para el tema.

  7. Haz clic en Actualizar tema.

Cambia el nombre del tema

Para cambiar el nombre del tema sin perder mensajes, realiza los siguientes pasos:

  1. Crea y configura la suscripción y el tema nuevos.
  2. Comienza a leer y procesar mensajes publicados en el tema nuevo.
  3. Actualiza el nombre del tema para la app en Play Console.
  4. Con Stackdriver o Cloud Developer Console, espera a que el tema antiguo deje de recibir mensajes y asegúrate de que el tema nuevo los reciba.
  5. Borra el tema antiguo después de que haya dejado de recibir mensajes.

Borra un tema

Para borrar un tema, haz lo siguiente:

  1. Para borrar el nombre de tema de la app, usa Google Play Console.
  2. Después de que dejen de llegar mensajes, borra el tema de Pub/Sub en Google o Google Cloud Platform Console.

Nota: Si borras el tema de Pub/Sub antes de quitar el nombre, es posible que se pierdan mensajes. Debes volver a configurar el tema con Pub/Sub para solucionar el problema.

Escala el procesamiento de notificaciones

Debido a la variedad de notificaciones que pueden enviarse al tema de Pub/Sub, es posible que no sea práctico que tengas un solo procesamiento binario para todas las notificaciones. Hay distintas opciones para considerar en el momento en que debes decidir cómo escalar el procesamiento de notificaciones. Estas son algunas opciones:

  • Usar notificaciones del estilo push y de extracción
  • Configurar múltiples suscripciones para un tema
  • Volver a publicar el mensaje de notificación en otros proyectos de Pub/Sub

Por ejemplo, una sola suscripción puede tener múltiples procesos que extraen mensajes de esa suscripción. Los mensajes de esa suscripción se dividen automáticamente entre los lectores. Luego, cada uno de esos procesos puede procesar la notificación o dirigir el reclamo a un servicio más especializado.

Es posible que se agreguen nuevos tipos de notificación en el futuro. Los suscriptores deben estar preparados para administrar correctamente las notificaciones nuevas si llegan a aparecer; por lo general, esto se lleva a cabo reconociendo el mensaje recibido.

Nota: Si decides usar una suscripción push, registra los extremos antes de agregar un extremo push. Para obtener más información, consulta Cómo registrar extremos.

Para obtener más información, consulta la Descripción general de suscriptores de Pub/Sub.

Supervisa el tráfico de notificaciones

Para supervisar el tráfico de notificaciones, usa el servicio Google Stackdriver. Con este servicio, puedes supervisar el tráfico de un tema y configurar alertas para determinadas condiciones. Por ejemplo, puedes avisar si el recuento de mensajes no reconocidos es muy alto (lo que podría indicar que hay un problema con los suscriptores) o si el recuento de publicaciones es muy bajo (lo que podría indicar que hay un problema con las publicaciones del tema).

Determina los precios y las cuotas

Obtén detalles relacionados a precios y cuotas.

Estima el uso de datos

La parte de datos de la notificación de suscripción es alrededor de 1 KB por solicitud. Cada publicación y extracción requieren una solicitud independiente o alrededor de 2 KB de datos por notificación. La cantidad de notificaciones por mes depende del ciclo de facturación y del comportamiento de los usuarios. Debes esperar al menos una notificación por cada usuario durante un ciclo de facturación.

ANS

El servicio de notificaciones para desarrolladores en tiempo real no brinda ANS de latencia oficial. Sin embargo, la mayoría de las notificaciones debe publicarse en el plazo de unos segundos luego de que ocurre el evento. Debes controlar las métricas de uso en tu página de Stackdriver (por ejemplo, la cantidad de mensajes sin reconocer) para asegurarte de procesar todos los mensajes de manera oportuna.

Especificación JSON

Cada publicación hecha en un tema de Pub/Sub incluye una sola DeveloperNotification codificada en base64 con los siguientes campos:

{
  "version": string,
  "packageName": string
  "eventTimeMillis": long
  "subscriptionNotification": SubscriptionNotification
  "testNotification": TestNotification
}
Nombre de la propiedad Valor Descripción
version string La versión de esta notificación. Al principio, será "1.0". Esta versión es distinta del resto de los campos de versión.
packageName string Es el nombre del paquete de la aplicación con la que está relacionada esta notificación (por ejemplo, com.algo.algo).
eventTimeMillis duración Es la marca de tiempo del evento en milisegundos a partir del Epoch.
subscriptionNotification SubscriptionNotification Si está el campo, esa notificación estará relacionada con una suscripción. Contiene información adicional relacionada con la suscripción. Este campo es mutuamente excluyente con testNotification.
testNotification TestNotification Si está el campo, esa notificación estará relacionada con una publicación de prueba. Estas solo se envían mediante Play Developer Console. Este campo es mutuamente excluyente con subscriptionNotification.

Una SubscriptionNotification incluye los siguientes campos:

{
  "version": string
  "notificationType": int
  "purchaseToken": string
  "subscriptionId": string
}
Nombre de la propiedad Valor Descripción
version string La versión de esta notificación. Al principio, será "1.0". Esta versión es distinta del resto de los campos de versión.
notificationType int

El tipo de notificación. Puede tener los siguientes valores:

  • (1) SUBSCRIPTION_RECOVERED: Se recuperó una suscripción de una suspensión de la cuenta.
  • (2) SUBSCRIPTION_RENEWED: Se renovó una suscripción activa.
  • (3) SUBSCRIPTION_CANCELED: Una suscripción se canceló de manera voluntaria o involuntaria. Las cancelaciones voluntarias se envían cuando la acción la realiza el usuario.
  • (4) SUBSCRIPTION_PURCHASED: Se adquirió una suscripción nueva.
  • (5) SUBSCRIPTION_ON_HOLD: Una suscripción entró en suspensión de la cuenta (si está habilitada).
  • (6) SUBSCRIPTION_IN_GRACE_PERIOD: Una suscripción entró en un período de gracia (si está habilitada).
  • (7) SUBSCRIPTION_RESTARTED: Un usuario reactivó su suscripción desde Play > Cuenta > Suscripciones (requiere que se acepte para restablecer la suscripción).
  • (8) SUBSCRIPTION_PRICE_CHANGE_CONFIRMED: El usuario confirmó correctamente un cambio en el precio de la suscripción.
  • (9) SUBSCRIPTION_DEFERRED: Se extendió el tiempo de recurrencia de una suscripción.
  • (10) SUBSCRIPTION_PAUSED: Se detuvo una suscripción.
  • (11) SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED: Se modificó el programa de detención de una suscripción.
  • (12) SUBSCRIPTION_REVOKED: Un usuario revocó una suscripción antes del vencimiento.
  • (13) SUBSCRIPTION_EXPIRED: Venció una suscripción.
purchaseToken string Es el token que se envió al dispositivo del usuario cuando se compró la suscripción.
subscriptionId string Es el ID de la suscripción comprada (por ejemplo, "mensual001").

Nota: Solo se envían notificaciones para los eventos que requieren cambios en la autorización del usuario. Por ejemplo, la API de reembolsos no cambia la autorización del usuario, por lo que no activará una notificación.

Una TestNotification incluye los siguientes campos:

{
  "version": string
}
Nombre de la propiedad Valor Descripción
version string La versión de esta notificación. Al principio, será "1.0". Esta versión es distinta del resto de los campos de versión.

Ejemplos

A continuación, se incluye un ejemplo de una notificación para una compra de suscripción:

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503349566168",
  "subscriptionNotification":
  {
    "version":"1.0",
    "notificationType":4,
    "purchaseToken":"PURCHASE_TOKEN",
    "subscriptionId":"my.sku"
  }
}

A continuación, se incluye un ejemplo de una notificación de prueba:

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503350156918",
  "testNotification":
  {
    "version":"1.0"
  }
}