이 문서에서는 Play 연령 신호 API를 사용하여 연령 신호를 요청하는 방법을 설명합니다.
Play 연령 신호 0.0.4 SDK는 연령 신호 요청을 간소화하고 사용자 선택 기반 모델을 지원하도록 설계된 2함수 아키텍처를 도입합니다. 연령 신호를 요청하려면 다음 개략적인 워크플로를 사용하세요.
ageSignalsStatus을 반환하는 requestAgeSignalsAccess(Activity) 메서드를 호출합니다. ageSignalsStatus의 값은 SHARED, NOT_SHARED 또는 VERIFICATION_REQUIRED일 수 있습니다.
ageSignalsStatus == NOT_SHARED인 경우: 앱이 API 응답에서 연령 신호를 가져오지 않습니다.ageSignalsStatus == SHARED인 경우:checkAgeSignals()메서드를 호출합니다. 사용자 또는 부모가 연령 신호를 공유하기로 결정한 경우 API 응답의 일부로 연령 신호를 수신하며 응답을 처리하는 방법을 결정할 수 있습니다.ageSignalsStatus == VERIFICATION_REQUIRED인 경우: 사용자의 연령을 알 수 없고 사용자가 연령 인증 및 연령 신호 공유가 필수인 관련 관할권 또는 지역에 있습니다. 이러한 지역에서 Google Play의 연령 신호를 받으려면 사용자에게 Play 스토어를 방문하여 상태를 해결하도록 요청하세요.
requestAgeSignalsAccess(Activity) 메서드는 지역에 필수 연령 공유가 적용되는지에 따라 다른 값을 반환합니다.
- 앱 스토어에서 인증된 연령 정보를 개발자에게 제공하도록 요구하는 법규가 있는 미국 주의 자격 요건을 충족하는 사용자의 경우 인앱 메시지가 트리거되지 않습니다.
대신 사용자가 Play 스토어 앱을 방문하면 인증하거나 감독 기능을 설정하라는 메시지가 표시됩니다.
ageSignalsStatus값을 사용하여 인증 상태를 확인하세요.- 사용자가 연령 인증을 완료했거나 부모 감독이 활성 상태인 경우
ageSignalsStatus값은SHARED입니다. - 사용자가 아직 연령을 인증하지 않았거나 감독을 설정하지 않은 경우
ageSignalsStatus값은VERIFICATION_REQUIRED입니다. 자세한 내용은 관련 미국 주에 거주하는 사용자를 위한 향후 앱 스토어 법안에 관한 Google Play 변경사항을 참고하세요.
- 사용자가 연령 인증을 완료했거나 부모 감독이 활성 상태인 경우
- 연령 공유가 사용자 또는 부모의 선택에 기반하는 다른 지역의 사용자의 경우:
- 사용자의 설정이 공유 전에 묻기인 경우 인앱 프롬프트가 표시됩니다. 사용자가 연령 공유에 동의하면
ageSignalsStatus값은SHARED이고, 그렇지 않으면NOT_SHARED입니다. - 사용자의 설정이 항상 공유인 경우 인앱 프롬프트가 표시되지 않으며
ageSignalsStatus값은SHARED입니다. - 사용자의 설정이 공유 안 함인 경우 인앱 메시지가 표시되지 않으며
ageSignalsStatus의 값은NOT_SHARED입니다. - 감독 대상 사용자의 경우 부모가 Family Link 앱 설정에서 자녀의 연령을 공유하도록 선택할 수 있습니다. 부모가 연령을 공유하도록 선택하면
ageSignalsStatus값이SHARED이 되고, 그렇지 않으면NOT_SHARED이 됩니다.
- 사용자의 설정이 공유 전에 묻기인 경우 인앱 프롬프트가 표시됩니다. 사용자가 연령 공유에 동의하면
다음 이미지는 Play 설정의 공유 전에 묻기 연령대 구성을 보여줍니다.
다음 이미지는 API를 통해 연령이 요청되고 설정이 공유 전에 묻기인 경우 사용자에게 표시되는 인앱 연령대 공유 요청을 보여줍니다.
다음 이미지는 사용자가 특정 앱의 연령 공유를 사용 설정하거나 사용 중지하는 방법을 보여줍니다.

다음 예에서는 연령 신호를 요청하는 방법을 보여줍니다.
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)
}
}
자바
// 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 앱에서 연령 공유 설정을 관리하여 자녀의 연령을 공유할 수 있습니다.- 사용자가 연령 공유를 닫거나 거부하면 메시지가 표시되지 않기 전에 인앱 메시지가 몇 번 표시됩니다.
checkAgeSignals()메서드는 API 응답에서 연령 신호 값을 가져옵니다. 이 메서드는ageRangeSource,ageUpper,ageLower및 기타 중요한 변경 값을 반환합니다.