Включение уведомлений в режиме реального времени (RTDN) в Google Play Console

Google Play сообщает Adapty о продлениях, отменах, возвратах и проблемах с оплатой через уведомления в режиме реального времени. Эти события происходят, когда ваше приложение закрыто, поэтому SDK не может их зафиксировать самостоятельно.

Прежде чем начать

Настройте интеграцию с Google Play Store. Adapty генерирует название топика из вашего ключевого файла, поэтому ничего копировать не нужно — пока вы его не загрузите.

Включение уведомлений

  1. Откройте App settings > Android SDK в дашборде Adapty и скопируйте название топика в разделе Google Play RTDN topic name. Оно начинается с projects/.

    Google Play RTDN topic name section in Adapty App settings, with the generated topic name
  2. Откройте Google Play Console, выберите своё приложение и перейдите в Monetize with Play > Monetization setup.

  3. В разделе Google Play Billing установите флажок Enable real-time notifications.

  4. Вставьте имя топика в поле Topic name.

  5. Нажмите Save changes.

    Monetization setup page in Google Play Console, showing the Enable real-time notifications checkbox and Topic name field

Проверьте соединение

  1. На странице Monetization setup нажмите кнопку Send test notification под полем Topic name.

  2. Вернитесь в App settings > Android SDK в Adapty. Как только Adapty получит уведомление, статус в разделе Google Play RTDN topic name изменится на Active.

    Note

    Тестовое уведомление только проверяет соединение. Оно не создаёт события покупок, поэтому Event Feed остаётся пустым после теста — события появляются только при реальных транзакциях.

Раздел имени топика Google Play RTDN в Adapty с тегом статуса Active

Пересылка необработанных событий Google

Adapty декодирует каждое уведомление от Google и преобразует его в собственное событие, привязанное к профилю и продукту, с добавлением данных о доходе. Чтобы также получать оригинальные сообщения от Google, укажите ваш эндпоинт в поле URL for forwarding raw Google events to your webhook в App settings > Android SDK.

Adapty отправляет сообщение Pub/Sub именно в том виде, в котором его прислал Google, без какого-либо предварительного разбора: в кодировке base64, с именами полей и числовыми типами уведомлений от Google, с идентификацией покупки по токену, а не по профилю Adapty. Формат задокументирован в справочнике RTDN от Google.

Устранение неполадок RTDN

Название топика отсутствует

Настройка RTDN начинается с копирования названия топика из Adapty. Если его нет, продолжить не получится: Topic name в Play Console — это то, куда Google Play отправляет события, и название берётся исключительно из Adapty.

Adapty создаёт топик в вашем Cloud-проекте при сохранении файла ключа. Корректное имя начинается с projects/, например projects/your-project-id/topics/adapty-prod-3f7a1c2e-9b4d-4e8f-a1b2-c3d4e5f60718. Если Adapty не смог его создать, в разделе вместо имени отображаются краткое сообщение об ошибке и кнопка Recreate Pub/Sub topic, которая объясняет, что пошло не так:

Что вы видитеЧто это означаетЧто делать
To set the Google Play RTDN topic name first upload a valid service account key file above.У Adapty нет файла ключа для этого приложенияЗагрузите файл ключа
Enable Pub/Sub APICloud Pub/Sub API отключён в этом Cloud-проектеПерейдите по ссылке, которую показывает Adapty, затем нажмите Recreate Pub/Sub topic
Grant permissionsУ сервисного аккаунта нет роли Pub/Sub Admin в этом проектеВ IAM & Admin > IAM отредактируйте сервисный аккаунт и добавьте Pub/Sub > Pub/Sub Admin, затем нажмите Recreate Pub/Sub topic

Пока топик не существует, в Play Console нечего вставлять, а значит Google Play не отправляет события — и Adapty не получает данные о продлениях, отменах и возвратах.

Recreate Pub/Sub topic повторно запускает настройку с уже загруженным ключевым файлом, так что загружать его заново не нужно.

Воссоздание топика завершается ошибкой

Google Play нужно разрешение на публикацию в ваш топик, поэтому Adapty выдаёт его аккаунту google-play-developer-notifications@system.gserviceaccount.com. Этот аккаунт принадлежит Google, а не вашей компании.

Компании нередко настраивают Google Cloud так, чтобы доступ был разрешён только аккаунтам из собственного домена. Такие правила на уровне всей организации называются политиками организации, и две из них запрещают выдачу разрешений внешнему аккаунту — из-за этого топик и не создаётся.

Расслабьте обе политики для этого проекта, пересоздайте тему, затем восстановите их. Редактирование политик организации обычно требует прав администратора, поэтому может понадобиться помощь того, кто управляет Google Cloud вашей компании.

  1. Откройте Google Cloud Console и выберите проект, из которого получен файл ключа.

  2. Перейдите в IAM & Admin > Organization Policies.

    Раздел IAM and Admin в навигации Google Cloud Console
  3. Найдите политику Domain restricted contacts, откройте её меню Actions и нажмите Edit policy.

    Organization policies list with the Actions menu open
  4. Выберите Override parent’s policy, установите Policy enforcement в значение Replace, затем нажмите Add a rule.

    Policy editing page with the Override parent's policy option
  5. В разделе Policy values выберите Allow All, затем нажмите Set policy.

New rule section with Allow All selected as the policy value
  1. Повторите то же самое для политики Domain restricted sharing.

  2. Пересоздайте топик в Adapty.

Warning

Сразу после создания топика верните обе политики в значение Inherit parent’s policy. Пока установлено Allow All, проект принимает предоставление доступа и совместное использование для любого аккаунта Google за пределами вашего домена, а не только для службы уведомлений Google.

Следующие шаги

Установите SDK для каждого фреймворка, который использует ваше приложение. Без этого приложение не сможет показывать пейволы и отправлять данные о покупках в Adapty.