다양한 연령 신호와 연령 공유 상태에 대한 앱의 처리를 확인하려면 SDK 테스트 아티팩트에 제공된 FakeAgeSignalsManager를 사용하세요.
FakeAgeSignalsManager를 사용하면 프로덕션 AgeSignalsManager 인스턴스를 대체하여 단위 및 통합 테스트를 위한 API 응답을 시뮬레이션할 수 있습니다.
Play Age Signals API SDK 버전 0.0.4를 사용하여 다양한 응답 유형을 시뮬레이션하려면 다음 예시를 참고하세요.
예 1: 액세스 요청 (사용자가 공유한 연령)
Kotlin
val fakeAccessResult = AgeSignalsAccessResult.builder()
.setAgeSignalsStatus(AgeSignalsStatus.SHARED) // or NOT_SHARED
.build()
val manager = FakeAgeSignalsManager()
manager.setNextAgeSignalsAccessResult(fakeAccessResult)
manager.requestAgeSignalsAccess(
AgeSignalsAccessRequest.builder()
.setActivity(fakeActivity)
.build()
)
.addOnSuccessListener { /* handle success */ }
자바
AgeSignalsAccessResult fakeAccessResult = AgeSignalsAccessResult.builder()
.setAgeSignalsStatus(AgeSignalsStatus.SHARED) // or NOT_SHARED
.build();
FakeAgeSignalsManager manager = new FakeAgeSignalsManager();
manager.setNextAgeSignalsAccessResult(fakeAccessResult);
manager.requestAgeSignalsAccess(
AgeSignalsAccessRequest.builder()
.setActivity(fakeActivity)
.build())
.addOnSuccessListener(/* handle success */);
예 2: 액세스 요청 (사용자가 연령을 공유하지 않음)
Kotlin
val fakeAccessResult = AgeSignalsAccessResult.builder()
.setAgeSignalsStatus(AgeSignalsStatus.NOT_SHARED)
.build()
val manager = FakeAgeSignalsManager()
manager.setNextAgeSignalsAccessResult(fakeAccessResult)
manager.requestAgeSignalsAccess(
AgeSignalsAccessRequest.builder()
.setActivity(fakeActivity)
.build()
)
.addOnSuccessListener { /* handle success */ }
자바
AgeSignalsAccessResult fakeAccessResult = AgeSignalsAccessResult.builder()
.setAgeSignalsStatus(AgeSignalsStatus.NOT_SHARED)
.build();
FakeAgeSignalsManager manager = new FakeAgeSignalsManager();
manager.setNextAgeSignalsAccessResult(fakeAccessResult);
manager.requestAgeSignalsAccess(
AgeSignalsAccessRequest.builder()
.setActivity(fakeActivity)
.build())
.addOnSuccessListener(/* handle success */);
예 3: 성인 인증 (만 18세 이상)
Kotlin
val fakeVerifiedUser = AgeSignalsResult.builder()
.setAgeRangeSource(AgeRangeSource.TIER_D)
.setAgeLower(18)
.build()
val manager = FakeAgeSignalsManager()
manager.setNextAgeSignalsResult(fakeVerifiedUser)
manager.checkAgeSignals(AgeSignalsRequest.builder().build())
.addOnSuccessListener { /* handle success */ }
자바
AgeSignalsResult fakeVerifiedUser = AgeSignalsResult.builder()
.setAgeRangeSource(AgeRangeSource.TIER_D)
.setAgeLower(18)
.build();
FakeAgeSignalsManager manager = new FakeAgeSignalsManager();
manager.setNextAgeSignalsResult(fakeVerifiedUser);
manager.checkAgeSignals(AgeSignalsRequest.builder().build())
.addOnSuccessListener(/* handle success */);
예 4: 감독 대상 미성년자 (만 13~15세)
Kotlin
val fakeSupervisedUser = AgeSignalsResult.builder()
.setAgeRangeSource(AgeRangeSource.TIER_B)
.setAgeLower(13)
.setAgeUpper(15)
.setInstallId("fake_install_id_123")
.build()
val manager = FakeAgeSignalsManager()
manager.setNextAgeSignalsResult(fakeSupervisedUser)
manager.checkAgeSignals(AgeSignalsRequest.builder().build())
.addOnSuccessListener { /* handle success */ }
자바
AgeSignalsResult fakeSupervisedUser = AgeSignalsResult.builder()
.setAgeRangeSource(AgeRangeSource.TIER_B)
.setAgeLower(13)
.setAgeUpper(15)
.setInstallId("fake_install_id_123")
.build();
FakeAgeSignalsManager manager = new FakeAgeSignalsManager();
manager.setNextAgeSignalsResult(fakeSupervisedUser);
manager.checkAgeSignals(AgeSignalsRequest.builder().build())
.addOnSuccessListener(/* handle success */);
예 5: 중요한 변경사항이 대기 중인 감독 대상 미성년자
Kotlin
val fakePendingChangeUser = AgeSignalsResult.builder()
.setAgeRangeSource(AgeRangeSource.TIER_B)
.setAgeLower(13)
.setAgeUpper(15)
.setSignificantChangeStatus(SignificantChangeStatus.PENDING)
.setInstallId("fake_install_id_123")
.build()
val manager = FakeAgeSignalsManager()
manager.setNextAgeSignalsResult(fakePendingChangeUser)
manager.checkAgeSignals(AgeSignalsRequest.builder().build())
.addOnSuccessListener { /* handle success */ }
자바
AgeSignalsResult fakePendingChangeUser = AgeSignalsResult.builder()
.setAgeRangeSource(AgeRangeSource.TIER_B)
.setAgeLower(13)
.setAgeUpper(15)
.setSignificantChangeStatus(SignificantChangeStatus.PENDING)
.setInstallId("fake_install_id_123")
.build();
FakeAgeSignalsManager manager = new FakeAgeSignalsManager();
manager.setNextAgeSignalsResult(fakePendingChangeUser);
manager.checkAgeSignals(AgeSignalsRequest.builder().build())
.addOnSuccessListener(/* handle success */);
예 6: 승인된 중요한 변경사항이 있는 감독 대상 미성년자
Kotlin
val fakeApprovedChangeUser = AgeSignalsResult.builder()
.setAgeRangeSource(AgeRangeSource.TIER_B)
.setAgeLower(13)
.setAgeUpper(15)
.setSignificantChangeStatus(SignificantChangeStatus.APPROVED)
.setSignificantChangeApprovalDate(Date(1777939200000L)) // e.g., 2026-05-01
.setInstallId("fake_install_id_123")
.build()
val manager = FakeAgeSignalsManager()
manager.setNextAgeSignalsResult(fakeApprovedChangeUser)
manager.checkAgeSignals(AgeSignalsRequest.builder().build())
.addOnSuccessListener { /* handle success */ }
자바
AgeSignalsResult fakeApprovedChangeUser = AgeSignalsResult.builder()
.setAgeRangeSource(AgeRangeSource.TIER_B)
.setAgeLower(13)
.setAgeUpper(15)
.setSignificantChangeStatus(SignificantChangeStatus.APPROVED)
.setSignificantChangeApprovalDate(new Date(1777939200000L)) // e.g., 2026-05-01
.setInstallId("fake_install_id_123")
.build();
FakeAgeSignalsManager manager = new FakeAgeSignalsManager();
manager.setNextAgeSignalsResult(fakeApprovedChangeUser);
manager.checkAgeSignals(AgeSignalsRequest.builder().build())
.addOnSuccessListener(/* handle success */);
예 7: API 예외 시뮬레이션
Kotlin
val manager = FakeAgeSignalsManager()
manager.setNextAgeSignalsException(AgeSignalsException(AgeSignalsErrorCode.NETWORK_ERROR))
manager.checkAgeSignals(AgeSignalsRequest.builder().build())
.addOnFailureListener { /* handle error */ }
자바
FakeAgeSignalsManager manager = new FakeAgeSignalsManager();
manager.setNextAgeSignalsException(new AgeSignalsException(AgeSignalsErrorCode.NETWORK_ERROR));
manager.checkAgeSignals(AgeSignalsRequest.builder().build())
.addOnFailureListener(/* handle error */);
라이선스 테스터를 통한 테스트
일반적으로 Play Age Signals API는 Google Play를 통해 업데이트되지 않은 앱에 대해 차단되고 APP_NOT_OWNED 오류를 반환합니다. 라이선스 테스터는 이 확인을 우회할 수 있으므로 앱을 사이드로드하여 실시간 Age Signals API 통합을 테스트할 수 있습니다. 이렇게 하면 앱의 새 버전을 업로드하지 않고도 디버그 서명으로 디버그 빌드를 사용할 수 있습니다. 애플리케이션의 패키지 이름이 Google Play에 구성된 앱과 정확히 일치해야 하며 테스트 기기의 활성 Google 계정이 Google Play Console 계정의 라이선스 테스터로 등록되어 있어야 합니다.