Z tego dokumentu dowiesz się, jak prosić o sygnały dotyczące wieku za pomocą interfejsu Play Age Signals API.
Pakiet Play Age Signals 0.0.4 SDK wprowadza architekturę z 2 funkcjami, która upraszcza żądania sygnałów dotyczących wieku i obsługuje model oparty na wyborach użytkownika. Aby poprosić o sygnały dotyczące wieku, wykonaj te czynności:
Wywołaj metodę requestAgeSignalsAccess(Activity), która zwraca ageSignalsStatus. Wartość ageSignalsStatus może być równa SHARED,
NOT_SHARED lub VERIFICATION_REQUIRED.
- Jeśli
ageSignalsStatus == NOT_SHARED: Twoja aplikacja nie otrzyma sygnałów dotyczących wieku w odpowiedzi z interfejsu API. - Jeśli
ageSignalsStatus == SHARED: wywołaj metodęcheckAgeSignals(). Jeśli użytkownik lub rodzic zdecyduje się udostępnić sygnały dotyczące wieku, otrzymasz je w odpowiedzi z interfejsu API i możesz zdecydować, jak ją obsłużyć. - Jeśli
ageSignalsStatus == VERIFICATION_REQUIRED: wiek użytkownika jest nieznany, a użytkownik znajduje się w odpowiedniej jurysdykcji lub regionie, w którym weryfikacja wieku i udostępnianie sygnałów dotyczących wieku są obowiązkowe. Aby uzyskać sygnał dotyczący wieku z Google Play w tych regionach, poproś użytkownika o przejście do Sklepu Play w celu rozwiązania problemu.
Metoda requestAgeSignalsAccess(Activity) zwraca różne wartości w zależności od tego, czy w danym regionie obowiązuje obowiązkowe udostępnianie wieku:
- W przypadku kwalifikujących się użytkowników w stanach USA, w których obowiązują przepisy wymagające od sklepów z aplikacjami przekazywania deweloperom zweryfikowanych informacji o wieku, prośba w aplikacji nie jest wywoływana.
Zamiast tego użytkownicy zostaną poproszeni o zweryfikowanie wieku lub skonfigurowanie nadzoru, gdy otworzą aplikację Sklep Play. Aby określić stan weryfikacji, użyj wartości
ageSignalsStatus:- Jeśli użytkownik przeszedł weryfikację wieku lub aktywny jest nadzór rodzicielski, wartość
ageSignalsStatustoSHARED. - Jeśli użytkownik nie zweryfikował jeszcze swojego wieku ani nie skonfigurował nadzoru, wartość
ageSignalsStatustoVERIFICATION_REQUIRED. Więcej informacji znajdziesz w artykule Zmiany w Google Play dotyczące ustaw związanych ze sklepem z aplikacjami dla użytkowników w wybranych stanach USA.
- Jeśli użytkownik przeszedł weryfikację wieku lub aktywny jest nadzór rodzicielski, wartość
- W przypadku użytkowników w innych regionach, w których udostępnianie wieku zależy od wyboru użytkownika lub rodzica:
- Jeśli ustawienie użytkownika to Pytaj przed udostępnieniem, wyświetli się prośba w aplikacji. Jeśli użytkownik wyrazi zgodę na udostępnienie swojego wieku, wartość
ageSignalsStatustoSHARED; w przeciwnym razieNOT_SHARED. - Jeśli ustawienie użytkownika to Zawsze udostępniaj, prośba w aplikacji nie jest
wyświetlana, a wartość
ageSignalsStatustoSHARED. - Jeśli ustawienie użytkownika to Nigdy nie udostępniaj, prośba w aplikacji nie jest
wyświetlana, a wartość
ageSignalsStatustoNOT_SHARED. - W przypadku nadzorowanych użytkowników rodzice mogą wybrać udostępnianie wieku dziecka w ustawieniach aplikacji Family Link. Jeśli rodzice zdecydują się udostępnić
wiek, wartość
ageSignalsStatusbędzie równaSHARED, w przeciwnym razie będzie równaNOT_SHARED.
- Jeśli ustawienie użytkownika to Pytaj przed udostępnieniem, wyświetli się prośba w aplikacji. Jeśli użytkownik wyrazi zgodę na udostępnienie swojego wieku, wartość
Aby dowiedzieć się, jak działa udostępnianie wieku w Google Play, w tym prośba w aplikacji i ustawienia udostępniania przedziału wiekowego, przeczytaj artykuł Udostępnianie przedziału wiekowego w Google Play.
Ten przykład pokazuje, jak poprosić o sygnały dotyczące wieku:
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);
});
}
Najważniejsze informacje o kodzie
- Metoda
requestAgeSignalsAccess(Activity)wykonuje blokujące sprawdzenie bieżących sygnałów dotyczących wieku użytkownika i stanu udostępniania sygnałów dotyczących wieku. - Gdy wywołasz metodę
requestAgeSignalsAccess(Activity), Google Play wyświetli wbudowaną prośbę w aplikacji tylko w przypadku użytkowników bez nadzoru. Rodzice nadzorowanych użytkowników mogą udostępniać wiek dziecka, zarządzając ustawieniami udostępniania wieku w aplikacji Family Link. - Jeśli użytkownik odrzuci udostępnianie wieku, prośba w aplikacji będzie wyświetlana kilka razy, zanim zostanie pominięta.
- Metoda
checkAgeSignals()pobiera wartość sygnałów dotyczących wieku w odpowiedzi z interfejsu API. Ta metoda zwracaageRangeSource,ageUpper,ageLoweri inne istotne wartości zmian.