ทดสอบการผสานรวม Play Age Signals API (เบต้า)

หากต้องการยืนยันการจัดการสัญญาณอายุและการแชร์อายุ สถานะต่างๆ ของแอป ให้ใช้ FakeAgeSignalsManager ที่มีอยู่ในอาร์ติแฟกต์การทดสอบ SDK FakeAgeSignalsManager ช่วยให้คุณจำลองการตอบกลับ API สำหรับการทดสอบหน่วยและการผสานรวม โดยการแทนที่อินสแตนซ์ AgeSignalsManager ที่ใช้งานจริง

หากต้องการจำลองประเภทการตอบกลับต่างๆ โดยใช้ SDK ของ Play Age Signals API เวอร์ชัน 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 */ }

Java

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 */ }

Java

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 */ }

Java

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 */ }

Java

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 */ }

Java

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 */ }

Java

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 */ }

Java

FakeAgeSignalsManager manager = new FakeAgeSignalsManager();
manager.setNextAgeSignalsException(new AgeSignalsException(AgeSignalsErrorCode.NETWORK_ERROR));
manager.checkAgeSignals(AgeSignalsRequest.builder().build())
    .addOnFailureListener(/* handle error */);

การทดสอบกับผู้ทดสอบที่ได้รับอนุญาต

โดยปกติแล้ว ระบบจะบล็อก Play Age Signals API และแสดงข้อผิดพลาด APP_NOT_OWNED สำหรับแอปที่ไม่ได้อัปเดตผ่าน Google Play ผู้ทดสอบใบอนุญาตสามารถข้ามการตรวจสอบนี้ได้ ซึ่งหมายความว่าคุณสามารถโหลดแอปจากแหล่งที่ไม่รู้จักเพื่อทดสอบการผสานรวม Age Signals API ที่ใช้งานจริงได้ ซึ่งจะช่วยให้คุณใช้บิลด์การแก้ไขข้อบกพร่องที่มีลายเซ็นการแก้ไขข้อบกพร่องได้โดยไม่ต้องอัปโหลดแอปเวอร์ชันใหม่ โปรดทราบว่าชื่อแพ็กเกจของแอปพลิเคชันต้องตรงกับแอปที่กำหนดค่าไว้สำหรับ Google Play และบัญชี Google ที่ใช้งานอยู่ในอุปกรณ์ทดสอบต้องลงทะเบียนเป็นผู้ทดสอบใบอนุญาตสำหรับบัญชี Google Play Console