Включение уведомлений в режиме реального времени (RTDN) в Google Play Console
Google Play сообщает Adapty о продлениях, отменах, возвратах и проблемах с оплатой через уведомления в режиме реального времени. Эти события происходят, когда ваше приложение закрыто, поэтому SDK не может их зафиксировать самостоятельно.
Прежде чем начать
Настройте интеграцию с Google Play Store. Adapty генерирует название топика из вашего ключевого файла, поэтому ничего копировать не нужно — пока вы его не загрузите.
Включение уведомлений
-
Откройте App settings > Android SDK в дашборде Adapty и скопируйте название топика в разделе Google Play RTDN topic name. Оно начинается с
projects/.
-
Откройте Google Play Console, выберите своё приложение и перейдите в Monetize with Play > Monetization setup.
-
В разделе Google Play Billing установите флажок Enable real-time notifications.
-
Вставьте имя топика в поле Topic name.
-
Нажмите Save changes.
Проверьте соединение
-
На странице Monetization setup нажмите кнопку Send test notification под полем Topic name.
-
Вернитесь в App settings > Android SDK в Adapty. Как только Adapty получит уведомление, статус в разделе Google Play RTDN topic name изменится на Active.
NoteТестовое уведомление только проверяет соединение. Оно не создаёт события покупок, поэтому Event Feed остаётся пустым после теста — события появляются только при реальных транзакциях.
Пересылка необработанных событий 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 API | Cloud 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 вашей компании.
-
Откройте Google Cloud Console и выберите проект, из которого получен файл ключа.
-
Перейдите в IAM & Admin > Organization Policies.
-
Найдите политику Domain restricted contacts, откройте её меню Actions и нажмите Edit policy.
-
Выберите Override parent’s policy, установите Policy enforcement в значение Replace, затем нажмите Add a rule.
-
В разделе Policy values выберите Allow All, затем нажмите Set policy.
-
Повторите то же самое для политики Domain restricted sharing.
-
Пересоздайте топик в Adapty.
Сразу после создания топика верните обе политики в значение Inherit parent’s policy. Пока установлено Allow All, проект принимает предоставление доступа и совместное использование для любого аккаунта Google за пределами вашего домена, а не только для службы уведомлений Google.
Следующие шаги
Установите SDK для каждого фреймворка, который использует ваше приложение. Без этого приложение не сможет показывать пейволы и отправлять данные о покупках в Adapty.