اختبار عملية دمج واجهة Play Age Signals API (إصدار تجريبي)

للتحقّق من طريقة تعامل تطبيقك مع إشارات العمر المختلفة وحالة مشاركة العمر، استخدِم FakeAgeSignalsManager المتوفّر في عنصر اختبار حزمة تطوير البرامج (SDK). تتيح لك السمة FakeAgeSignalsManager محاكاة استجابات واجهة برمجة التطبيقات لاختبار الوحدات والتكامل من خلال استبدال مثيل AgeSignalsManager الخاص ببيئة الإنتاج.

لمحاكاة أنواع مختلفة من الردود باستخدام الإصدار 0.0.4 من حزمة تطوير البرامج (SDK) الخاصة بواجهة Play Age Signals API، اطّلِع على الأمثلة التالية:

المثال 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: محاكاة استثناءات واجهة برمجة التطبيقات

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.