Este documento descreve como solicitar indicadores de idade usando a API Play Age Signals.
O SDK Play Age Signals 0.0.4 apresenta uma arquitetura de duas funções projetada para simplificar as solicitações de indicadores de idade e oferecer suporte ao nosso modelo baseado na escolha do usuário. Para solicitar indicadores de idade, use este fluxo de trabalho de alto nível:
Chame o método requestAgeSignalsAccess(Activity), que retorna
ageSignalsStatus. O valor de ageSignalsStatus pode ser SHARED,
NOT_SHARED ou VERIFICATION_REQUIRED.
- Se
ageSignalsStatus == NOT_SHARED: seu app não vai receber indicadores de idade na resposta da API. - Se
ageSignalsStatus == SHARED: chame o métodocheckAgeSignals(). Se o usuário ou o familiar responsável decidir compartilhar os indicadores de idade, você vai receber esses indicadores como parte da resposta da API e poderá decidir como processar a resposta. - Se
ageSignalsStatus == VERIFICATION_REQUIRED: a idade do usuário é desconhecida e ele está em uma jurisdição ou região aplicável em que a confirmação de idade e o compartilhamento de indicadores de idade são obrigatórios. Para receber um indicador de idade do Google Play nessas regiões, peça ao usuário para acessar a Google Play Store e resolver o status.
O método requestAgeSignalsAccess(Activity) retorna valores diferentes
dependendo se o compartilhamento obrigatório de idade é aplicável em uma região:
- Para usuários qualificados nos estados dos EUA com leis que exigem que as app stores forneçam informações de idade verificadas aos desenvolvedores, o aviso no app não é acionado.
Em vez disso, os usuários vão precisar verificar ou configurar a supervisão quando acessarem o app Google Play Store. Use o valor de
ageSignalsStatuspara determinar o status da verificação:- Se o usuário tiver concluído a confirmação de idade ou a supervisão da família estiver ativa, o valor de
ageSignalsStatusseráSHARED. - Se o usuário ainda não tiver confirmado a idade ou configurado a supervisão, o
valor de
ageSignalsStatusseráVERIFICATION_REQUIRED. Para mais informações, consulte Novas legislações para app stores: mudanças no Google Play para usuários nos estados relevantes dos EUA.
- Se o usuário tiver concluído a confirmação de idade ou a supervisão da família estiver ativa, o valor de
- Para usuários em outras regiões em que o compartilhamento de idade é baseado na escolha do usuário ou
do responsável:
- Se a configuração do usuário for Perguntar antes de compartilhar, o aviso no app será
mostrado. Se o usuário concordar em compartilhar a idade, o valor de
ageSignalsStatusseráSHARED. Caso contrário, seráNOT_SHARED. - Se a configuração do usuário for Sempre compartilhar, a solicitação no app não será
mostrada, e o valor de
ageSignalsStatusseráSHARED. - Se a configuração do usuário for Nunca compartilhar, a solicitação no app não será
mostrada, e o valor de
ageSignalsStatusseráNOT_SHARED. - Para usuários supervisionados, os familiares responsáveis podem compartilhar a idade da criança nas configurações do app Family Link. Se os responsáveis decidirem compartilhar a idade, o valor de
ageSignalsStatusseráSHARED. Caso contrário, seráNOT_SHARED.
- Se a configuração do usuário for Perguntar antes de compartilhar, o aviso no app será
mostrado. Se o usuário concordar em compartilhar a idade, o valor de
A imagem a seguir mostra a configuração de faixa etária Perguntar antes de compartilhar nas configurações do Google Play.
A imagem a seguir mostra a solicitação de compartilhamento de faixa etária no app exibida aos usuários quando a idade é solicitada pela API e a configuração é Perguntar antes de compartilhar.
A imagem a seguir mostra como o usuário pode ativar ou desativar o compartilhamento de idade em um app específico.
O exemplo a seguir mostra como solicitar indicadores de idade:
Kotlin
// 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);
});
}
Pontos principais sobre o código
- O método
requestAgeSignalsAccess(Activity)realiza uma verificação de bloqueio dos indicadores de idade atuais do usuário e do status de compartilhamento desses indicadores. - Depois que você chamar
requestAgeSignalsAccess(Activity), o Google Play vai mostrar um comando no app integrado apenas para usuários sem supervisão. Os familiares responsáveis por usuários supervisionados podem compartilhar a idade da criança gerenciando as configurações de compartilhamento de idade no app Family Link. - Se o usuário dispensar ou recusar o compartilhamento de idade, a solicitação no app será mostrada algumas vezes antes de ser suprimida.
- O método
checkAgeSignals()recebe o valor dos indicadores de idade na resposta da API. Esse método retornaageRangeSource,ageUpper,ageLowere outros valores de mudança significativa.