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

Используя API Play Age Signals (бета-версия), вы соглашаетесь с условиями обслуживания и обязуетесь соблюдать все правила для разработчиков Google Play . Чтобы запросить статус пользователя и его возрастной диапазон, вы вызываете API из своего приложения во время выполнения. API Play Age Signals возвращает данные только для пользователей из регионов, где Play обязан по закону предоставлять данные о возрастных категориях.

Play возвращает возрастной диапазон, основанный на возрастных группах, определенных соответствующей юрисдикцией и регионом. По умолчанию API возвращает следующие возрастные диапазоны в соответствующих юрисдикциях и регионах: 0-12, 13-15, 16-17 и 18+, но могут быть получены и пользовательские возрастные диапазоны . Google Play автоматически обновляет кэшированные данные о возрасте пользователя в течение 2-8 недель после дня рождения пользователя.

Интегрируйте 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.3'

Запросить возрастные сигналы

Вот пример запроса на предоставление возрастных сигналов:

Котлин

// 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 VERIFIED, DECLARED, SUPERVISED, 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.
          }
        });

(Необязательно) Возможность выбора возрастных диапазонов

В соответствующих юрисдикциях и регионах 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 ПРОВЕРЕНО Google подтвердил возраст пользователя с помощью коммерчески обоснованного метода, такого как удостоверение личности государственного образца, кредитная карта или оценка возраста по лицу. Если userStatus имеет VERIFIED , остальные поля можно игнорировать.

Используйте ageLower и ageUpper для определения возрастного диапазона пользователя.
ЗАЯВЛЕНО Возраст пользователя был указан самим пользователем, его родителем или законным опекуном.

Используйте ageLower и ageUpper для определения возрастного диапазона пользователя.
ПОД НАДЗОРОМ У пользователя есть контролируемый аккаунт Google, которым управляет родитель, устанавливающий его возраст.

Используйте ageLower и ageUpper для определения возрастного диапазона пользователя.

Используйте mostRecentApprovalDate , чтобы определить последнее существенное изменение, которое было утверждено.
Ожидается одобрение под наблюдением У пользователя есть контролируемый аккаунт Google, и родитель, осуществляющий надзор, еще не одобрил одно или несколько существенных изменений, ожидающих утверждения.

Используйте ageLower и ageUpper для определения возрастного диапазона пользователя.

Используйте mostRecentApprovalDate , чтобы определить последнее существенное изменение, которое было утверждено.
ОТКАЗ В ОДОБРЕНИИ ПОД КОНТРОЛЕМ У пользователя есть контролируемый аккаунт Google, и родитель, осуществляющий надзор, отказал в одобрении одного или нескольких существенных изменений.

Используйте ageLower и ageUpper для определения возрастного диапазона пользователя.

Используйте mostRecentApprovalDate , чтобы определить последнее существенное изменение, которое было утверждено.
НЕИЗВЕСТНЫЙ
Возраст пользователя неизвестен, и пользователь находится в соответствующей юрисдикции или регионе.

Применимо только к штатам США: чтобы получить информацию о возрасте пользователя из Google Play, попросите пользователя посетить Play Store, чтобы уточнить свой возраст.
null Для всех остальных пользователей возвращается это значение. Если userStatus равен null , остальные поля можно игнорировать.
ageLower от 0 до 18 Нижняя граница (включительно) возрастного диапазона пользователя, за которым ведется наблюдение.

Используйте значения ageLower и ageUpper для определения возрастного диапазона пользователя.
null
userStatus неизвестно или null .
ageUpper от 2 до 18 Верхняя граница (включительно) возрастного диапазона пользователя, за которым ведется наблюдение.

Используйте значения ageLower и ageUpper для определения возрастного диапазона пользователя.
null Либо userStatus находится под наблюдением, либо возраст родителя пользователя, подтвержденный документально, превышает 18 лет.

Или же userStatus неизвестен или null .
mostRecentApprovalDate Штамп даты Дата effective from последнего утвержденного существенного изменения. При установке приложения используется дата последнего внесенного существенного изменения, предшествующего установке.
null Либо userStatus находится под контролем и существенных изменений не было внесено.

Или userStatus имеет значение verified, unknown или null .
installID Сгенерированный игрой буквенно-цифровой идентификатор. Идентификатор, присваиваемый Google Play контролируемым установкам приложений, используется для уведомления вас об отзыве разрешения на установку приложения. Ознакомьтесь с документацией по отзыву разрешений на установку приложений .
null userStatus может быть проверенным, неизвестным или null .

Примеры ответов для пользователей из Бразилии

В Бразилии userStatus может быть только DECLARED и UNKNOWN .

Пользователю, указавшем свой возраст, будет предоставлена ​​следующая информация:

  • userStatus будет иметь значение AgeSignalsVerificationStatus.DECLARED .
  • ageLower будет числом (например, 13).
  • ageUpper будет числом или null (например, 15).
  • Остальные поля ответа будут null .

Для пользователя, возраст которого неизвестен, вы получите следующее:

  • userStatus будет иметь значение AgeSignalsVerificationStatus.UNKNOWN .
  • Остальные поля ответа будут null .

Статус пользователя может измениться с UNKNOWN на DECLARED , как только возраст пользователя станет доступен для публикации.

Примеры ответов для пользователей из штатов США

В соответствующих штатах США userStatus может быть VERIFIED , SUPERVISED , SUPERVISED_APPROVAL_PENDING , SUPERVISED_APPROVAL_DENIED , UNKNOWN или null .

Подтвержденный пользователь получит следующее:

  • userStatus будет иметь значение AgeSignalsVerificationStatus.VERIFIED .
  • В качестве ageLower можно использовать число (например, 18).
  • ageUpper будет либо числом, либо null (например, null ).
  • Остальные поля ответа будут null .

Для пользователя, находящегося под наблюдением, вы получите следующее:

  • userStatus будет иметь значение AgeSignalsVerificationStatus.SUPERVISED .
  • ageLower будет числом (например, 13).
  • ageUpper будет числом или null (например, 15).
  • Объект mostRecentApprovalDate будет представлять собой объект Java Date (например, 2026-01-01 ) или null (если существенных изменений не было утверждено).
  • installID это сгенерированный Play идентификатор, состоящий из букв и цифр (например, 550e8400-e29b-41d4-a716-446655441111 ).

Для пользователя, находящегося под наблюдением и ожидающего утверждения существенного изменения, вы получите следующее:

  • userStatus будет иметь значение AgeSignalsVerificationStatus.SUPERVISED_APPROVAL_PENDING .
  • ageLower будет числом (например, 13).
  • ageUpper будет числом или null (например, 15).
  • Объект mostRecentApprovalDate будет представлять собой объект Java Date (например, 2026-01-01 ) или null (если существенных изменений не было утверждено).
  • 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. Нет
-10 SDK_VERSION_OUTDATED Поддержка версии SDK Play Age Signals прекращена. Попросите пользователя обновить ваше приложение до более поздней версии, использующей последнюю версию SDK Play Age Signals. Нет
-100 ВНУТРЕННЯЯ ОШИБКА Неизвестная внутренняя ошибка. Реализуйте стратегию повторных попыток с максимальным количеством попыток в качестве условия завершения. Если проблема по-прежнему не решается, попросите пользователя попробовать позже. Если сбой повторяется постоянно, обратитесь в службу поддержки разработчиков Google Play , указав в теме письма API Play Age Signals и предоставив как можно больше технических подробностей (например, отчет об ошибке). Нет