В этом документе описывается, как запрашивать сигналы возраста с помощью API Play Age Signals.
В SDK Play Age Signals 0.0.4 представлена двухфункциональная архитектура, разработанная для упрощения запросов на получение возрастных сигналов и поддержки нашей модели, основанной на выборе пользователя. Для запроса возрастных сигналов используйте следующий общий алгоритм действий:
Вызовите метод requestAgeSignalsAccess(Activity) , который возвращает ageSignalsStatus . Значение ageSignalsStatus может быть SHARED , NOT_SHARED или VERIFICATION_REQUIRED .
- Если
ageSignalsStatus == NOT_SHARED: ваше приложение не получит сигналы о возрасте в ответе API. - Если
ageSignalsStatus == SHARED: вызовите методcheckAgeSignals(). Если пользователь или родитель решили поделиться сигналами возраста, вы получите сигналы возраста в составе ответа API и сможете решить, как обработать этот ответ. - Если
ageSignalsStatus == VERIFICATION_REQUIRED: возраст пользователя неизвестен, и пользователь находится в соответствующей юрисдикции или регионе, где проверка возраста и обмен возрастными данными являются обязательными. Чтобы получить возрастной сигнал от Google Play в этих регионах, попросите пользователя посетить Play Store для уточнения своего статуса.
Метод requestAgeSignalsAccess(Activity) возвращает разные значения в зависимости от того, применяется ли в регионе обязательное предоставление информации о возрасте:
- Для пользователей, соответствующих требованиям в штатах США, где действуют законы, обязывающие магазины приложений предоставлять разработчикам подтвержденную информацию о возрасте, запрос в приложении не запускается. Вместо этого пользователям будет предложено подтвердить свой возраст или настроить присмотр при посещении приложения Play Store. Используйте значение
ageSignalsStatusдля определения статуса подтверждения:- Если пользователь прошел проверку возраста или активирован родительский контроль, значение параметра
ageSignalsStatusравноSHARED. - Если пользователь еще не подтвердил свой возраст или не настроил контроль, значение параметра
ageSignalsStatusравноVERIFICATION_REQUIRED. Для получения дополнительной информации см. раздел «Изменения в Google Play» для предстоящих законопроектов о магазинах приложений для пользователей в соответствующих штатах США .
- Если пользователь прошел проверку возраста или активирован родительский контроль, значение параметра
- Для пользователей в других регионах, где определение возраста осуществляется по выбору пользователя или родителя:
- Если в настройках пользователя установлено значение «Спрашивать перед тем, как делиться» , отображается запрос в приложении. Если пользователь соглашается поделиться своим возрастом, значение параметра
ageSignalsStatusравноSHARED; в противном случае —NOT_SHARED. - Если пользователь установил параметр «Всегда делиться» , запрос в приложении не отображается, и значение параметра
ageSignalsStatusравноSHARED. - Если пользователь установил параметр «Никогда не делиться» , запрос в приложении не отображается, и значение параметра
ageSignalsStatusравноNOT_SHARED. - Для пользователей, находящихся под присмотром взрослых, родители могут указать возраст своего ребенка в настройках приложения Family Link. Если родители решат указать возраст, значение параметра
ageSignalsStatusбудетSHAREDв противном случае —NOT_SHARED.
- Если в настройках пользователя установлено значение «Спрашивать перед тем, как делиться» , отображается запрос в приложении. Если пользователь соглашается поделиться своим возрастом, значение параметра
На следующем изображении показана настройка параметра « Спрашивать перед предоставлением доступа к информации о возрастном диапазоне» в настройках Play.


На следующем изображении показан запрос на предоставление информации о возрастном диапазоне внутри приложения, отображаемый пользователям, когда возраст запрашивается через API, и у них установлена опция «Спрашивать перед предоставлением информации» .


На следующем изображении показано, как пользователь может включить или отключить функцию обмена данными о возрасте для конкретного приложения.


В следующем примере показано, как запросить информацию о возрасте:
Котлин
// 1. Initialize the AgeSignalsManager (usually in onCreate or class initialization)
val ageSignalsManager = AgeSignalsManagerFactory.create(applicationContext)
// 2. Request or check for age signals access.
// Passing the current Activity allows the Play Store to render the age sharing prompt UI if required.
val accessRequest = AgeSignalsAccessRequest.builder()
.setActivity(this)
.build()
ageSignalsManager.requestAgeSignalsAccess(accessRequest)
.addOnSuccessListener { accessResult ->
if (accessResult.ageSignalsStatus() == AgeSignalsStatus.SHARED) {
// The user (or parent) has agreed to share age range, or is in an eligible auto-share region.
// Retrieve the actual age signals.
retrieveAgeSignals(ageSignalsManager)
} else {
// Age signals are not shared (user didn't share age range, parent rejected the request, or not eligible).
}
}
.addOnFailureListener { exception ->
// Handle API/Play Store connection and system errors
handleAgeSignalsError(exception)
}
private fun retrieveAgeSignals(manager: AgeSignalsManager) {
// 3. Perform the actual age signals query once sharing is active.
manager.checkAgeSignals(AgeSignalsRequest.builder().build())
.addOnSuccessListener { ageSignalsResult ->
val installId = ageSignalsResult.installId()
val ageLower = ageSignalsResult.ageLower()
val ageUpper = ageSignalsResult.ageUpper()
val significantChangeDate = ageSignalsResult.significantChangeApprovalDate()
val ageRangeSource = ageSignalsResult.ageRangeSource()
if (ageLower != null) {
if (ageUpper != null) {
// The user is in a specific closed age range [ageLower, ageUpper] (e.g. [13, 15])
} else {
// The user is in the highest open-ended age band [ageLower, null] (e.g. [18, null])
}
} else {
// Both bounds are null: The user is not sharing their age (e.g. they are a verified adult)
}
}
.addOnFailureListener { exception ->
handleAgeSignalsError(exception)
}
}
Java
// 1. Initialize the AgeSignalsManager (usually in onCreate or class initialization)
AgeSignalsManager ageSignalsManager = AgeSignalsManagerFactory.create(getApplicationContext());
// 2. Request or check for age signals access.
// Passing the current Activity allows the Play Store to render the age sharing prompt UI if required.
AgeSignalsAccessRequest accessRequest = AgeSignalsAccessRequest.builder()
.setActivity(this)
.build();
ageSignalsManager.requestAgeSignalsAccess(accessRequest)
.addOnSuccessListener(accessResult -> {
Integer status = accessResult.ageSignalsStatus();
if (status == AgeSignalsStatus.SHARED) {
// The user (or parent) has agreed to share age range, or is in an eligible auto-share region.
// Retrieve the actual age signals.
retrieveAgeSignals(ageSignalsManager);
} else {
// Age signals are not shared (user didn't share age range, parent rejected the request, or not eligible).
}
})
.addOnFailureListener(exception -> {
// Handle API/Play Store connection and system errors
});
private void retrieveAgeSignals(AgeSignalsManager manager) {
// 3. Perform the actual age signals query once sharing is active.
manager.checkAgeSignals(AgeSignalsRequest.builder().build())
.addOnSuccessListener(ageSignalsResult -> {
String installId = ageSignalsResult.installId();
Integer ageLower = ageSignalsResult.ageLower();
Integer ageUpper = ageSignalsResult.ageUpper();
Date significantChangeDate = ageSignalsResult.significantChangeApprovalDate();
@AgeRangeSource Integer ageRangeSource = ageSignalsResult.ageRangeSource();
if (ageLower != null) {
if (ageUpper != null) {
// The user is in a specific closed age range [ageLower, ageUpper] (e.g. [13, 15])
} else {
// The user is in the highest open-ended age band [ageLower, null] (e.g. [18, null])
}
} else {
// Both bounds are null: The user is not sharing their age (e.g. they are a verified adult)
}
})
.addOnFailureListener(exception -> {
handleAgeSignalsError(exception);
});
}
Основные моменты, касающиеся кода.
- Метод
requestAgeSignalsAccess(Activity)выполняет блокирующую проверку текущих возрастных сигналов пользователя и статуса обмена возрастными сигналами. - После вызова
requestAgeSignalsAccess(Activity)приложение Play отображает встроенное внутриигровое уведомление только для пользователей без присмотра взрослых. Родители пользователей, находящихся под присмотром взрослых, могут разрешить доступ к возрасту своего ребенка, изменив настройки доступа к возрасту в приложении Family Link. - Если пользователь отклонит или откажется от предоставления информации о возрасте, внутри приложения появится запрос несколько раз, после чего он будет скрыт.
- Метод
checkAgeSignals()получает значение сигнала возраста из ответа API. Этот метод возвращает значенияageRangeSource,ageUpper,ageLowerи другие значения, отражающие значительные изменения.