Ya está disponible la segunda Vista previa para desarrolladores de Android 11; pruébala y comparte tus comentarios.

Agrega notificaciones para desarrolladores en tiempo real

Descripción general

Facturación Google Play ofrece notificaciones push del servidor que te permiten supervisar los cambios de estado de las suscripciones administradas por Play y de las compras únicas con transacciones pendientes. Si habilitas las notificaciones para desarrolladores en tiempo real, recibirás un token de compra directamente desde Cloud Pub/Sub siempre que haya una actualización para una transacción pendiente o 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 de compra para consultar la API de Google Play Developer y obtener toda la información, además de actualizar tu backend con el estado de derecho de acceso 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 de Google Play Developer para tomar las decisiones cruciales 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. Proporciona mensajes duraderos y de baja latencia que te ayudan a integrar de manera rápida los sistemas alojados en Google Cloud Platform y en servicios externos.

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 habilitada. 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. El 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 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.

Cómo crear una suscripción de Pub/Sub

Para recibir mensajes publicados de 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 consultar si debes configurar la suscripción como una suscripción push o pull. Una suscripción pull 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.

Cómo otorgar 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: Cómo acceder a la configuración de Permisos de temas
  4. Agrega la cuenta de servicio google-play-developer-notifications@system.gserviceaccount.com y asígnale la función de publicador de Pub/Sub.
    Figura 2: Cómo agregar 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

A fin de habilitar las notificaciones en tiempo real para desarrolladores sobre 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 en tiempo real para desarrolladores

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

  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 se realiza de manera exitosa, 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 el correcto y de que la cuenta de servicio google-play-developer-notifications@system.gserviceaccount.com pueda acceder al tema como publicador de Pub/Sub.

  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 mediante 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, probablemente no sea práctico que tengas un solo procesamiento binario para todas las notificaciones. Hay distintas opciones para considerar en el momento de decidir cómo escalar el procesamiento de notificaciones. Estas son algunas:

  • 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 varios procesos que extraigan mensajes de ella. Los mensajes de esa suscripción se dividen automáticamente entre los lectores. Luego, cada una de esas actividades puede procesar la notificación o dirigir el reclamo a un servicio más especializado.

Es posible que se agreguen nuevos tipos de notificaciones 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 confirmando recepción del mensaje recibido.

Nota: Si decides usar una suscripción push, registra los puntos de acceso antes de agregar el punto push. Para obtener más información, consulta Cómo registrar puntos de acceso.

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 establecer una alerta 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

Para conocer detalles sobre los precios y las cuotas, consulta precios y cuotas.

Estima el uso de datos

La parte de datos de la notificación de suscripción es de aproximadamente 1 KB de datos por solicitud. Cada notificación pull o de publicación requiere una solicitud individual, o aproximadamente 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. Deberías tener 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. No obstante, la mayoría de las notificaciones debe publicarse en los pocos segundos posteriores al evento. Debes controlar las métricas de uso en tu página de Stackdriver (por ejemplo, la cantidad de mensajes sin confirmación de recepción) para asegurarte de procesar todos los mensajes de manera oportuna.

Especificación JSON

Cada publicación realizada en un tema de Pub/Sub incluye un objeto de DeveloperNotification con codificación base64 simple que contiene los siguientes campos:

{
      "version": string,
      "packageName": string
      "eventTimeMillis": long
      "oneTimeProductNotification": OneTimeProductNotification
      "subscriptionNotification": SubscriptionNotification
      "testNotification": TestNotification
    }
    
Nombre de la propiedad Valor Descripción
version string Es la versión de esta notificación. Inicialmente, será "1.0". Es distinta de los campos de otras versiones.
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 de la época ("Epoch").
oneTimeProductNotification OneTimeProductNotification Si está este campo, esta notificación está relacionada con un producto único. Contiene información adicional relacionada con dicho producto. Este campo se excluye mutuamente con los campos testNotification y subscriptionNotification.
subscriptionNotification SubscriptionNotification Si está el campo, esa notificación está relacionada con una suscripción. Contiene información adicional relacionada con la suscripción. Este campo se excluye mutuamente con los campos testNotification y oneTimeProductNotification.
testNotification TestNotification Si está el campo, la notificación está relacionada con una publicación de prueba. Estas solo se envían mediante Google Play Developer Console. Este campo se excluye mutuamente con los campos subscriptionNotification y oneTimeProductNotification.

Un objeto OneTimeProductNotification incluye los campos siguientes:

{
      "version": string
      "notificationType": int
      "purchaseToken": string
      "sku": string
    }
    
Nombre de la propiedad Valor Descripción
version string Es la versión de esta notificación. Inicialmente, será "1.0". Es distinta de los campos de otras versiones.
notificationType int

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

  • (1) ONE_TIME_PRODUCT_PURCHASED: Un usuario compró con éxito un producto único.
  • (2) ONE_TIME_PRODUCT_CANCELED: Un usuario canceló la compra pendiente de un producto único.
purchaseToken string Es el token proporcionado al dispositivo del usuario en el momento de la compra.
sku string Es el ID del producto único comprado (por ejemplo, "espada_001").

Nota: Las notificaciones de productos únicos solo se envían para transacciones pendientes. Para obtener más información, consulta las Notas de la versión 2.0 de la biblioteca de Facturación Google Play.

Un objeto SubscriptionNotification incluye los campos siguientes:

{
      "version": string
      "notificationType": int
      "purchaseToken": string
      "subscriptionId": string
    }
    
Nombre de la propiedad Valor Descripción
version string Es la versión de esta notificación. Inicialmente, será "1.0". Es distinta de los campos de otras versiones.
notificationType int

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

  • (1) SUBSCRIPTION_RECOVERED: Se recuperó la 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á habilitado).
  • (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 adquirió 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 los derechos de acceso del usuario. Por ejemplo, la API de reembolsos no cambia los derechos de acceso del usuario, por lo que no activará una notificación.

Un objeto TestNotification incluye los campos siguientes:

{
      "version": string
    }
    
Nombre de la propiedad Valor Descripción
version string Es la versión de esta notificación. Inicialmente, será "1.0". Es distinta de los campos de otras versiones.

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"
      }
    }