Используя API Play Age Signals (бета-версия), вы соглашаетесь с условиями обслуживания и обязуетесь соблюдать все правила для разработчиков Google Play . Чтобы запросить статус пользователя и его возрастной диапазон, вы вызываете API из своего приложения во время выполнения. API Play Age Signals возвращает данные только для пользователей из регионов, где Play обязан по закону предоставлять данные о возрастных категориях.
API возвращает возрастной диапазон, основанный на возрастных группах, определенных соответствующей юрисдикцией и регионом. Возрастные диапазоны по умолчанию, возвращаемые API в соответствующих юрисдикциях и регионах, составляют 0-12, 13-15, 16-17 и 18+, но они могут изменяться в зависимости от региональных требований.
Интегрируйте API Play Age Signals в ваше приложение.
API Play Age Signals поддерживается на Android 6.0 (уровень API 23) и выше. Для интеграции API Play Age Signals в ваше приложение добавьте следующую зависимость в файл build.gradle вашего приложения:
implementation 'com.google.android.play:age-signals:0.0.2'
Запросить возрастные сигналы
Вот пример запроса на предоставление возрастных сигналов:
Котлин
// Create an instance of a manager val ageSignalsManager = AgeSignalsManagerFactory.create(ApplicationProvider.getApplicationContext()) // Request an age signals check ageSignalsManager .checkAgeSignals(AgeSignalsRequest.builder().build()) .addOnSuccessListener { ageSignalsResult -> // Store the install ID for later... val installId = ageSignalsResult.installId() if (ageSignalsResult.userStatus() == AgeSignalsVerificationStatus.SUPERVISED_APPROVAL_DENIED) { // Disallow access... } else { // Do something else if the user is SUPERVISED, VERIFIED, etc. } }
Java
// Create an instance of a manager AgeSignalsManager ageSignalsManager = AgeSignalsManagerFactory.create(ApplicationProvider.getApplicationContext()); // Request an age signals check ageSignalsManager .checkAgeSignals(AgeSignalsRequest.builder().build()) .addOnSuccessListener( ageSignalsResult -> { // Store the install ID for later... String installId = ageSignalsResult.installId(); if (ageSignalsResult .userStatus() .equals(AgeSignalsVerificationStatus.SUPERVISED_APPROVAL_DENIED)) { // Disallow access ... } else { // Do something else if the user is SUPERVISED, VERIFIED, etc. } });
Данные о возрасте сохраняются Google Play на устройстве каждого пользователя. Когда пользователь с контролируемой учетной записью Google переходит в новый возрастной диапазон, Google Play автоматически обновляет кэшированные данные о возрасте для этого пользователя в течение 2–8 недель после дня рождения пользователя.
(Необязательно) Возможность выбора возрастных диапазонов
В соответствующих юрисдикциях и регионах API возвращает следующие возрастные диапазоны: 0-12, 13-15, 16-17 и 18+. В будущем они могут измениться в зависимости от местных требований.
В качестве альтернативы, чтобы настроить возрастные диапазоны в соответствии с минимальным возрастом, установленным для вашего приложения, вы можете указать эти минимальные возрастные значения на странице «Возрастные сигналы» в консоли Google Play. API «Возрастные сигналы» возвращает настроенные возрастные диапазоны. Например, если вы укажете минимальный возраст 9, 15 и 17 лет, 14-летний пользователь попадет в возрастную группу 10-15 лет.
Чтобы настроить возрастные диапазоны, возвращаемые API Age Signals, вы можете указать минимальный возраст для вашего приложения:
- Перейдите на страницу «Возрастные сигналы» в вашей игровой консоли.
- На вкладке «Настраиваемые возрастные диапазоны» введите до трех минимальных возрастных категорий для вашего приложения. Разница между минимальными возрастными категориями должна составлять не менее 2 лет, и их можно изменять один раз в год.
- Нажмите « Сохранить ».
Возраст сигнализирует о реакции
Ответ API Play Age Signals (бета-версия) включает следующие поля и значения. Значения могут изменяться. Чтобы получить самые актуальные значения, запросите ответ API при открытии вашего приложения. Вы несете ответственность за предоставление контента, соответствующего возрасту пользователя, с использованием этих сигналов.
| Поле ответа | Ценности | Описание |
|---|---|---|
userStatus | ПРОВЕРЕНО | Пользователю больше 18 лет. Google подтвердил возраст пользователя с помощью коммерчески обоснованного метода, такого как удостоверение личности государственного образца, кредитная карта или оценка возраста по лицу. Если userStatus имеет VERIFIED , остальные поля можно игнорировать. |
| ПОД НАДЗОРОМ | У пользователя есть контролируемый аккаунт Google, которым управляет родитель, устанавливающий его возраст. Используйте ageLower и ageUpper чтобы определить возрастной диапазон пользователя. Используйте mostRecentApprovalDate , чтобы определить последнее существенное изменение, которое было одобрено. | |
| Ожидается одобрение под наблюдением | У пользователя есть контролируемый аккаунт Google, и его родитель, осуществляющий надзор, еще не одобрил одно или несколько ожидающих утверждения существенных изменений. Используйте ageLower и ageUpper чтобы определить возрастной диапазон пользователя. Используйте mostRecentApprovalDate , чтобы определить последнее одобренное существенное изменение. | |
| ОТКАЗ В ОДОБРЕНИИ ПОД КОНТРОЛЕМ | У пользователя есть контролируемый аккаунт Google, и родитель, осуществляющий надзор, отклонил одно или несколько существенных изменений. Используйте ageLower и ageUpper чтобы определить возрастной диапазон пользователя. Используйте mostRecentApprovalDate , чтобы определить последнее одобренное существенное изменение. | |
| НЕИЗВЕСТНЫЙ | Пользователь находится в соответствующей юрисдикции или регионе, но не прошел проверку или не находится под наблюдением. Возраст пользователя может быть как старше, так и младше 18 лет. Чтобы получить информацию о возрасте от Google Play, попросите пользователя посетить Play Store для уточнения своего статуса. | |
null | Для всех остальных пользователей возвращается это значение. Если userStatus равен null , остальные поля можно игнорировать. | |
ageLower | от 0 до 18 | Нижняя граница (включая) диапазона возраста пользователя, за которым ведется наблюдение. Используйте значения ageLower и ageUpper для определения диапазона возраста пользователя. |
null | userStatus неизвестно или пусто. | |
ageUpper | от 2 до 18 | Верхняя граница (включительно) возрастного диапазона пользователя, за которым ведется наблюдение. Используйте значения ageLower и ageUpper для определения возрастного диапазона пользователя. |
null | Либо userStatus контролируемый", и возраст, подтвержденный родителями пользователя, превышает 18 лет, либо userStatus проверенный", "неизвестный" или "пустой". | |
mostRecentApprovalDate | Штамп даты | Дата effective from последнего утвержденного существенного изменения. При установке приложения используется дата последнего внесенного существенного изменения, предшествующего установке. |
null | Либо userStatus находится под контролем и существенных изменений не было внесено, либо userStatus подтвержден, неизвестен или пуст. | |
installID | Сгенерированный игрой буквенно-цифровой идентификатор. | Идентификатор, присваиваемый Google Play контролируемым установкам приложений, используется для уведомления вас об отзыве разрешения на установку приложения. Ознакомьтесь с документацией по отзыву разрешений на установку приложений . |
null | userStatus может быть подтвержден, неизвестен или пуст. |
Примеры ответов
Подтвержденный пользователь получит следующее:
-
userStatusбудет иметь значениеAgeSignalsVerificationStatus.VERIFIED. - Остальные поля ответа будут пустыми.
Для пользователя, находящегося под наблюдением, вы получите следующее:
-
userStatusбудет иметь значениеAgeSignalsVerificationStatus.SUPERVISED. -
ageLowerбудет числом (например, 13). -
ageUpperбудет числом (например, 15). - Объект
mostRecentApprovalDateможет представлять собой объект Java Date (например,2026-01-01) или быть пустым (если существенных изменений не было одобрено). -
installIDбудет представлять собой сгенерированный Play буквенно-цифровой идентификатор (например,550e8400-e29b-41d4-a716-446655441111).
Для пользователя, находящегося под наблюдением и ожидающего утверждения существенного изменения, вы получите следующее:
-
userStatusбудет иметь значениеAgeSignalsVerificationStatus.SUPERVISED_APPROVAL_PENDING. -
ageLowerбудет числом (например, 13). -
ageUpperбудет числом (например, 15). - Объект
mostRecentApprovalDateможет представлять собой объект Java Date (например,2026-01-01) или быть пустым (если существенных изменений не было одобрено). -
installIDбудет представлять собой сгенерированный Play буквенно-цифровой идентификатор (например,550e8400-e29b-41d4-a716-446655441111).
Обработка кодов ошибок API
Если ваше приложение отправляет запрос к API Play Age Signals, и вызов завершается неудачей, приложение получает код ошибки. Эти ошибки могут возникать по разным причинам, например, из-за устаревшей версии приложения из Play Store.
Стратегия повторной попытки
В ситуациях, когда пользователь находится в сессии, мы рекомендуем реализовать стратегию повторных попыток с ограничением максимального количества попыток в качестве условия завершения, чтобы ошибка как можно меньше нарушала пользовательский опыт.
| Числовое значение кода ошибки | Код ошибки | Описание | Повторная попытка |
|---|---|---|---|
| -1 | API_НЕ_ДОСТУПЕН | API Play Age Signals недоступен. Возможно, установлена устаревшая версия приложения Play Store на устройстве. Возможное решение
| Да |
| -2 | PLAY_STORE_NOT_FOUND | Приложение Play Store на устройстве не обнаружено. Предложите пользователю установить или включить Play Store. | Да |
| -3 | СЕТЬ_ОШИБКА | Сеть не найдена. Предложите пользователю проверить наличие подключения. | Да |
| -4 | PLAY_SERVICES_NOT_FOUND | Сервисы Play недоступны или их версия слишком устарела. Предложите пользователю установить, обновить или включить сервисы Play. | Да |
| -5 | CANNOT_BIND_TO_SERVICE | Не удалось подключиться к сервису в Play Store. Это может быть связано с тем, что на устройстве установлена старая версия Play Store или перегружена память устройства. Предложите пользователю обновить приложение Play Store. Повторите попытку с экспоненциальной задержкой. | Да |
| -6 | PLAY_STORE_VERSION_OUTDATED | Приложение Play Store необходимо обновить. Предложите пользователю обновить приложение Play Store. | Да |
| -7 | PLAY_SERVICES_VERVION_OUTDATED | Необходимо обновить Play Services. Попросите пользователя обновить Play Services. | Да |
| -8 | CLIENT_TRANSIENT_ERROR | Произошла временная ошибка на клиентском устройстве. Реализуйте стратегию повторных попыток с ограничением максимального количества попыток в качестве условия завершения. Если проблема не решена, попросите пользователя попробовать позже. | Да |
| -9 | APP_NOT_OWNED | Приложение не было установлено через Google Play. Предложите пользователю загрузить ваше приложение из Google Play. | Нет |
| -100 | ВНУТРЕННЯЯ ОШИБКА | Неизвестная внутренняя ошибка. Реализуйте стратегию повторных попыток с максимальным количеством попыток в качестве условия завершения. Если проблема по-прежнему не решается, попросите пользователя попробовать позже. Если сбой повторяется постоянно, обратитесь в службу поддержки разработчиков Google Play , указав в теме письма API Play Age Signals и предоставив как можно больше технических подробностей (например, отчет об ошибке). | Нет |
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-12-23 UTC.