Используйте API сигналов Play Age (бета)

Используя 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, вы можете указать минимальный возраст для вашего приложения:

  1. Перейдите на страницу «Возрастные сигналы» в вашей игровой консоли.
  2. На вкладке «Настраиваемые возрастные диапазоны» введите до трех минимальных возрастных категорий для вашего приложения. Разница между минимальными возрастными категориями должна составлять не менее 2 лет, и их можно изменять один раз в год.
  3. Нажмите « Сохранить ».

Возраст сигнализирует о реакции

Ответ 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 на устройстве.

Возможное решение
  • Предложите пользователю обновить 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 и предоставив как можно больше технических подробностей (например, отчет об ошибке). Нет