Questo documento descrive come richiedere indicatori dell'età utilizzando l'API Play Age Signals.
L'SDK Play Age Signals 0.0.4 introduce un'architettura a due funzioni progettata per semplificare le richieste di indicatori dell'età e supportare il nostro modello basato sulla scelta dell'utente. Per richiedere indicatori dell'età, utilizza questo flusso di lavoro di alto livello:
Chiama il metodo requestAgeSignalsAccess(Activity), che restituisce ageSignalsStatus. Il valore di ageSignalsStatus può essere SHARED,
NOT_SHARED o VERIFICATION_REQUIRED.
- Se
ageSignalsStatus == NOT_SHARED: la tua app non riceverà indicatori dell'età nella risposta dell'API. - Se
ageSignalsStatus == SHARED: chiama il metodocheckAgeSignals(). Se l'utente o il genitore ha deciso di condividere gli indicatori dell'età, li riceverai come parte della risposta dell'API e potrai decidere come gestirla. - Se
ageSignalsStatus == VERIFICATION_REQUIRED: l'età dell'utente è sconosciuta e l'utente si trova in una giurisdizione o regione applicabile in cui la verifica dell'età e la condivisione degli indicatori dell'età sono obbligatorie. Per ottenere un indicatore dell'età da Google Play in queste regioni, chiedi all'utente di visitare il Play Store per risolvere il suo stato.
Il metodo requestAgeSignalsAccess(Activity) restituisce valori diversi a seconda che la condivisione obbligatoria dell'età sia applicabile in una regione:
- Per gli utenti idonei negli stati degli Stati Uniti con leggi che richiedono agli store di fornire agli sviluppatori informazioni sull'età verificate, il prompt in-app non viene attivato.
Agli utenti verrà invece chiesto di verificare o configurare la supervisione quando visitano l'app Play Store. Utilizza il valore di
ageSignalsStatusper determinare lo stato di verifica:- Se l'utente ha completato la verifica dell'età o la supervisione dei genitori è attiva, il valore di
ageSignalsStatusèSHARED. - Se l'utente non ha ancora verificato la sua età o configurato la supervisione, il valore di
ageSignalsStatusèVERIFICATION_REQUIRED. Per maggiori informazioni, consulta Modifiche a Google Play per gli utenti in vista dell'imminente entrata in vigore delle leggi sugli store in alcuni stati degli Stati Uniti.
- Se l'utente ha completato la verifica dell'età o la supervisione dei genitori è attiva, il valore di
- Per gli utenti in altre regioni in cui la condivisione dell'età si basa sulla scelta dell'utente o del genitore:
- Se l'impostazione dell'utente è Chiedi prima di condividere, il prompt in-app viene
visualizzato. Se l'utente accetta di condividere la sua età, il valore di
ageSignalsStatusèSHARED; in caso contrario,NOT_SHARED. - Se l'impostazione dell'utente è Condividi sempre, il prompt in-app non viene
visualizzato e il valore di
ageSignalsStatusèSHARED. - Se l'impostazione dell'utente è Non condividere mai, il prompt in-app non viene
visualizzato e il valore di
ageSignalsStatusèNOT_SHARED. - Per gli utenti supervisionati, i genitori possono scegliere di condividere l'età del figlio nelle impostazioni dell'app Family Link. Se i genitori scelgono di condividere l'
età, il valore di
ageSignalsStatussaràSHARED, altrimenti saràNOT_SHARED.
- Se l'impostazione dell'utente è Chiedi prima di condividere, il prompt in-app viene
visualizzato. Se l'utente accetta di condividere la sua età, il valore di
Per capire come funziona la condivisione dell'età su Google Play, inclusi il prompt in-app e le impostazioni di condivisione della fascia d'età, consulta Condivisione della fascia d'età su Google Play.
L'esempio seguente mostra come richiedere gli indicatori dell'età:
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);
});
}
Punti chiave sul codice
- Il metodo
requestAgeSignalsAccess(Activity)esegue un controllo di blocco degli indicatori dell'età e dello stato di condivisione degli indicatori dell'età dell'utente. - Dopo aver chiamato
requestAgeSignalsAccess(Activity), Play visualizza un prompt in-app integrato solo per gli utenti non supervisionati. I genitori degli utenti supervisionati possono scegliere di condividere l'età del figlio gestendo le impostazioni di condivisione dell'età nell'app Family Link. - Se l'utente ignora o rifiuta la condivisione dell'età, il prompt in-app verrà visualizzato alcune volte prima di essere soppresso.
- Il metodo
checkAgeSignals()recupera il valore degli indicatori dell'età nella risposta dell'API. Questo metodo restituisceageRangeSource,ageUpper,ageLowere altri valori di modifica significativi.