Bu belgede, Play Age Signals API'yi kullanarak yaş sinyallerinin nasıl isteneceği açıklanmaktadır.
Play Age Signals 0.0.4 SDK, yaş sinyali isteklerini basitleştirmek ve kullanıcı tercihlerine dayalı modelimizi desteklemek için tasarlanmış iki işlevli bir mimari sunar. Yaş sinyalleri istemek için şu üst düzey iş akışını kullanın:
requestAgeSignalsAccess(Activity) yöntemini çağırın. Bu yöntem ageSignalsStatus değerini döndürür. ageSignalsStatus değeri SHARED, NOT_SHARED veya VERIFICATION_REQUIRED olabilir.
ageSignalsStatus == NOT_SHAREDise: Uygulamanız, API yanıtında yaş sinyalleri almaz.ageSignalsStatus == SHAREDise:checkAgeSignals()yöntemini çağırın. Kullanıcı veya ebeveyn, yaş sinyallerini paylaşmaya karar verdiyse API yanıtının bir parçası olarak yaş sinyallerini alırsınız ve yanıtı nasıl işleyeceğinize karar verebilirsiniz.ageSignalsStatus == VERIFICATION_REQUIREDise: Kullanıcının yaşı bilinmiyor ve kullanıcı, yaş doğrulama ile yaş sinyali paylaşımının zorunlu olduğu geçerli bir yargı alanında veya bölgede bulunuyor. Bu bölgelerde Google Play'den yaş sinyali almak için kullanıcıdan durumunu düzeltmek üzere Play Store'u ziyaret etmesini isteyin.
requestAgeSignalsAccess(Activity) yöntemi, zorunlu yaş paylaşımının bir bölgede geçerli olup olmadığına bağlı olarak farklı değerler döndürür:
- Uygulama mağazalarının geliştiricilere doğrulanmış yaş bilgisi sağlamasını zorunlu kılan yasaların geçerli olduğu ABD eyaletlerindeki uygun kullanıcılar için uygulama içi istem tetiklenmez.
Bunun yerine, kullanıcılar Play Store uygulamasını ziyaret ettiklerinde doğrulama yapmaları veya gözetimi ayarlamaları istenir. Doğrulama durumunu belirlemek için
ageSignalsStatusdeğerini kullanın:- Kullanıcı yaş doğrulamasını tamamladıysa veya ebeveyn denetimi etkinse
ageSignalsStatusdeğeriSHAREDolur. - Kullanıcı henüz yaşını doğrulamadıysa veya gözetimi ayarlamadıysa
ageSignalsStatusdeğeriVERIFICATION_REQUIREDolur. Daha fazla bilgi için Geçerli ABD eyaletlerindeki kullanıcılar için yaklaşan uygulama mağazası yasa tasarıları doğrultusunda Google Play'de yapılacak değişiklikler başlıklı makaleyi inceleyin.
- Kullanıcı yaş doğrulamasını tamamladıysa veya ebeveyn denetimi etkinse
- Yaş paylaşımının kullanıcı veya ebeveyn tercihlerine göre yapıldığı diğer bölgelerdeki kullanıcılar için:
- Kullanıcının ayarı Paylaşmadan önce sor ise uygulama içi istem gösterilir. Kullanıcı yaşını paylaşmayı kabul ederse
ageSignalsStatusdeğeriSHARED, aksi takdirdeNOT_SHAREDolur. - Kullanıcının ayarı Her Zaman Paylaş ise uygulama içi istem gösterilmez ve
ageSignalsStatusdeğeriSHAREDolur. - Kullanıcının ayarı Asla Paylaşma ise uygulama içi istem gösterilmez ve
ageSignalsStatusdeğeriNOT_SHAREDolur. - Gözetimli kullanıcılar için ebeveynler, Family Link uygulaması ayarlarında çocuklarının yaşını paylaşmayı seçebilir. Ebeveynler yaşı paylaşmayı seçerse
ageSignalsStatusdeğeriSHAREDolur, aksi takdirdeNOT_SHAREDolur.
- Kullanıcının ayarı Paylaşmadan önce sor ise uygulama içi istem gösterilir. Kullanıcı yaşını paylaşmayı kabul ederse
Aşağıdaki resimde, Play ayarlarındaki Paylaşmadan önce sor yaş grubu yapılandırması gösterilmektedir.
Aşağıdaki resimde, API üzerinden yaş istendiğinde ve ayarları Paylaşmadan önce sor olarak belirlendiğinde kullanıcılara gösterilen uygulama içi yaş grubu paylaşma isteği gösterilmektedir.
Aşağıdaki resimde, kullanıcının belirli bir uygulama için yaş paylaşımını nasıl etkinleştirebileceği veya devre dışı bırakabileceği gösterilmektedir.
Aşağıdaki örnekte, yaş sinyallerinin nasıl isteneceği gösterilmektedir:
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);
});
}
Kodla ilgili önemli noktalar
requestAgeSignalsAccess(Activity)yöntemi, kullanıcının mevcut yaş sinyallerinin ve yaş sinyalleri paylaşım durumunun engelleme kontrolünü gerçekleştirir.requestAgeSignalsAccess(Activity)işlevini çağırdıktan sonra Play, yalnızca gözetimsiz kullanıcılar için yerleşik bir uygulama içi istem görüntüler. Gözetimli kullanıcıların ebeveynleri, Family Link uygulamasındaki yaş paylaşımı ayarlarını yöneterek çocuğunun yaşını paylaşabilir.- Kullanıcı, yaş paylaşımını kapatır veya reddederse uygulama içi istem, kapatılmadan önce birkaç kez gösterilir.
checkAgeSignals()yöntemi, API yanıtındaki yaş sinyali değerini alır. Bu yöntemageRangeSource,ageUpper,ageLowerve diğer önemli değişiklik değerlerini döndürür.