Как использовать Play Age Signals API (бета)

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

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

Интегрируйте Play Age Signals API в приложение

Play Age Signals API поддерживается на телефонах, складных устройствах и планшетах с Android 6.0 (уровень API 23) и более поздними версиями. Чтобы интегрировать Play Age Signals API в приложение, добавьте в его файл build.gradle следующую зависимость:

implementation 'com.google.android.play:age-signals:0.0.3'

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

Пример запроса индикаторов возраста:

Kotlin

// 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 Console.

  1. Перейдите на страницу Сигналы о возрасте в Play Console.
  2. На вкладке Специальные возрастные диапазоны укажите до трех возрастных ограничений для приложения. Разница между значениями должна составлять не менее двух лет. Менять возрастные ограничения можно раз в год.
  3. Нажмите Сохранить.

Возрастные диапазоны, возвращаемые в ответе, переопределят ответ API по умолчанию. Пример:

  • Если вы установите одно минимальное возрастное ограничение (15 лет) в Google Play Console:

    • Для ребенка от 0 до 14 лет будут возвращены значения ageLower = 0 и ageUpper = 14.
    • Для пользователя старше 15 лет будет возвращено значение ageLower = 15.
  • Если вы установите два ограничения по возрасту (13 и 17 лет):

    • Для ребенка от 0 до 12 лет будут возвращены значения ageLower = 0 и ageUpper = 12.
    • Для пользователей от 13 до 16 лет будут возвращены значения ageLower = 13 и ageUpper = 16.
    • Для пользователей от 17 лет будет возвращено значение ageLower = 17.
  • Если вы установите три ограничения по возрасту (11, 13 и 15 лет):

    • Для ребенка от 0 до 10 лет будут возвращены значения ageLower = 0 и ageUpper = 10.
    • Для 11- и 12-летних детей возвращаются значения ageLower = 11 и ageUpper = 12.
    • Для 13- и 14-летних пользователей возвращаются значения ageLower = 13 и ageUpper = 14.
    • Для пользователя старше 15 лет будет возвращено значение ageLower = 15.

Ответы на индикаторы возраста

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

Поле ответа Значения Описание
userStatus ПОДТВЕРЖДЕНО Google подтвердил возраст пользователя экономически обоснованным способом, например с помощью официального удостоверения личности, кредитной карты или оценки возраста по лицу. Если для параметра userStatus задано значение VERIFIED, вы можете игнорировать другие поля.

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

Используйте ageLower и ageUpper, чтобы определить возрастной диапазон пользователя.
КОНТРОЛИРУЕМЫЙ У пользователя контролируемый аккаунт Google, которым управляет родитель, указавший возраст ребенка.

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

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

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

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

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

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

Только для штатов США. Чтобы получить сигнал о возрасте из Google Play, попросите пользователя перейти в Google Play и подтвердить возраст.
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 подтвержден, неизвестен или null.
installID Буквенно-цифровой идентификатор, сгенерированный Google Play. Идентификатор, который Google Play присваивает установкам контролируемых пользователей. Он нужен, чтобы уведомлять вас об отзыве одобрения приложения. Ознакомьтесь с документацией по отзыву одобрения приложений.
null userStatus – подтверждено, неизвестно или null.

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

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

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

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

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

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

Если пользователь не разрешил передавать приложениям информацию о своем возрасте, вы получите следующие данные:

  • userStatus будет стоить null.
  • Другие поля ответа будут иметь значение null.

Когда возраст пользователя станет доступен для передачи, статус может измениться на 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 (например, 2026-01-01) или null (если значительное изменение не было одобрено).
  • installID – это буквенно-цифровой идентификатор, сгенерированный Google Play (например, 550e8400-e29b-41d4-a716-446655441111).

Если для контролируемого профиля ожидается одобрение важного изменения, вы получите следующий ответ:

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

Обработка кодов ошибок API

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

Стратегия повторных попыток

Если пользователь находится в сеансе, мы рекомендуем реализовать стратегию повторных попыток с максимальным количеством попыток в качестве условия выхода, чтобы ошибка как можно меньше мешала пользователю.

Числовое значение кода ошибки. Код ошибки Описание Повторяемый
-1 API_NOT_AVAILABLE Play Age Signals API недоступен. На устройстве может быть установлена устаревшая версия приложения Google Play.

Возможное решение
  • Попросите пользователя обновить Google Play.
Да
-2 PLAY_STORE_NOT_FOUND На устройстве нет приложения Google Play. Попросите пользователя установить или включить Google Play. Да
-3 NETWORK_ERROR Доступные сети не найдены. Попросите пользователя проверить подключение. Да
-4 PLAY_SERVICES_NOT_FOUND Сервисы Google Play недоступны или их версия устарела. Попросите пользователя установить, обновить или включить сервисы Google Play. Да
-5 CANNOT_BIND_TO_SERVICE Не удалось связать с сервисом в Google Play. Это может быть связано с тем, что на устройстве установлена старая версия Google Play или память устройства перегружена. Попросите пользователя обновить приложение Google Play. Повторите попытку с экспоненциальной выдержкой. Да
-6 PLAY_STORE_VERSION_OUTDATED Приложение Google Play нужно обновить. Попросите пользователя обновить приложение Google Play. Да
-7 PLAY_SERVICES_VERSION_OUTDATED Обновите сервисы Google Play. Попросите пользователя обновить сервисы Google Play. Да
-8 CLIENT_TRANSIENT_ERROR На устройстве клиента произошла временная ошибка. Реализуйте стратегию повторных попыток с максимальным количеством попыток в качестве условия выхода. Если проблема не устранена, попросите пользователя повторить попытку позже. Да
-9 APP_NOT_OWNED Приложение было установлено не из Google Play. Предложить пользователю скачать ваше приложение из Google Play. Нет
-10 SDK_VERSION_OUTDATED Версия Play Age Signals SDK больше не поддерживается. Попросите пользователя обновить приложение до более поздней версии, в которой используется актуальная версия Play Age Signals SDK. Нет
-100 INTERNAL_ERROR Неизвестная внутренняя ошибка Реализуйте стратегию повторных попыток с максимальным количеством попыток в качестве условия выхода. Если проблема не устранена, попросите пользователя повторить попытку позже. Если ошибка возникает постоянно, обратитесь в службу поддержки разработчиков Google Play. В теме письма укажите "Play Age Signals API" и добавьте как можно больше технических деталей, например отчет об ошибке. Нет