เอกสารนี้อธิบายวิธีขอสัญญาณอายุโดยใช้ Play Age Signals API
Play Age Signals 0.0.4 SDK ขอแนะนำสถาปัตยกรรม 2 ฟังก์ชันที่ออกแบบมาเพื่อลดความซับซ้อนของคำขอสัญญาณอายุและรองรับโมเดลตามตัวเลือกของผู้ใช้ หากต้องการขอสัญญาณอายุ ให้ใช้เวิร์กโฟลว์ระดับสูงต่อไปนี้
เรียกใช้เมธอด 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) จะแสดงผลค่าที่แตกต่างกันไปตามความเหมาะสมของการแชร์อายุแบบบังคับในภูมิภาคนั้นๆ ดังนี้
- สำหรับผู้ใช้ที่มีสิทธิ์ในรัฐของสหรัฐอเมริกาที่มีกฎหมายกำหนดให้ App Store ต้องให้ข้อมูลอายุที่ยืนยันแล้วแก่นักพัฒนาแอป ระบบจะไม่ทริกเกอร์ข้อความแจ้งในแอป
แต่ระบบจะขอให้ผู้ใช้ยืนยันหรือตั้งค่าการควบคุมดูแลเมื่อผู้ใช้ไปที่แอป Play Store ให้ใช้ค่า
ageSignalsStatusเพื่อกำหนดสถานะการยืนยัน ดังนี้- หากผู้ใช้ยืนยันอายุเสร็จสมบูรณ์แล้วหรือการควบคุมดูแลโดยผู้ปกครองมีผลอยู่ ค่าของ
ageSignalsStatusจะเป็นSHARED - หากผู้ใช้ยังไม่ได้ยืนยันอายุหรือตั้งค่าการควบคุมดูแล ค่าของ
ageSignalsStatusจะเป็นVERIFICATION_REQUIREDดูข้อมูลเพิ่มเติมได้ที่ การเปลี่ยนแปลงใน Google Play สำหรับร่างกฎหมายว่าด้วยเรื่อง App Store ที่กำลังจะมีผลบังคับใช้ กับผู้ใช้ในรัฐที่เกี่ยวข้องของสหรัฐอเมริกา
- หากผู้ใช้ยืนยันอายุเสร็จสมบูรณ์แล้วหรือการควบคุมดูแลโดยผู้ปกครองมีผลอยู่ ค่าของ
- สำหรับผู้ใช้ในภูมิภาคอื่นๆ ที่การแชร์อายุขึ้นอยู่กับตัวเลือกของผู้ใช้หรือผู้ปกครอง ให้ทำดังนี้
- หากการตั้งค่าของผู้ใช้เป็นถามก่อนแชร์ ระบบจะแสดงข้อความแจ้งในแอป
หากผู้ใช้ยินยอมแชร์อายุ ค่าของ
ageSignalsStatusจะเป็นSHAREDแต่หากไม่ยินยอมจะเป็นNOT_SHARED - หากการตั้งค่าของผู้ใช้เป็นแชร์เสมอ ระบบจะไม่แสดงข้อความแจ้งในแอป
และค่าของ
ageSignalsStatusจะเป็นSHARED - หากการตั้งค่าของผู้ใช้เป็น ไม่แชร์ ระบบจะไม่แสดงข้อความแจ้งในแอป
และค่าของ
ageSignalsStatusจะเป็นNOT_SHARED - สำหรับผู้ใช้ภายใต้การควบคุมดูแล ผู้ปกครองสามารถเลือกแชร์อายุของบุตรหลานในการตั้งค่าแอป Family Link ได้ หากผู้ปกครองเลือกแชร์
อายุ ค่าของ
ageSignalsStatusจะเป็นSHAREDแต่หากไม่เลือก จะเป็นNOT_SHARED
- หากการตั้งค่าของผู้ใช้เป็นถามก่อนแชร์ ระบบจะแสดงข้อความแจ้งในแอป
หากผู้ใช้ยินยอมแชร์อายุ ค่าของ
หากต้องการทำความเข้าใจวิธีการทำงานของการแชร์อายุใน Google Play รวมถึงข้อความแจ้งในแอป และการตั้งค่าการแชร์ช่วงอายุ โปรดดูการแชร์ช่วงอายุใน Google Play
ตัวอย่างต่อไปนี้แสดงวิธีขอสัญญาณอายุ
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);
});
}
ประเด็นสำคัญเกี่ยวกับโค้ด
- เมธอด
requestAgeSignalsAccess(Activity)จะตรวจสอบสัญญาณอายุปัจจุบันและสถานะการแชร์สัญญาณอายุของผู้ใช้แบบบล็อก - หลังจากที่คุณเรียกใช้
requestAgeSignalsAccess(Activity)แล้ว Play จะแสดงข้อความแจ้งในแอปในตัวสำหรับผู้ใช้ที่ไม่มีการควบคุมดูแลเท่านั้น ผู้ปกครองของผู้ใช้ภายใต้การควบคุมดูแลสามารถเลือกแชร์อายุของบุตรหลานได้โดยจัดการการตั้งค่าการแชร์อายุในแอป Family Link - หากผู้ใช้ปิดหรือปฏิเสธการแชร์อายุ ระบบจะแสดงข้อความแจ้งในแอป 2-3 ครั้งก่อนที่จะระงับข้อความแจ้ง
- เมธอด
checkAgeSignals()จะรับค่าสัญญาณอายุในการตอบกลับของ API เมธอดนี้จะแสดงผลageRangeSource,ageUpper,ageLowerและค่าการเปลี่ยนแปลงที่สำคัญอื่นๆ