باستخدام واجهة برمجة التطبيقات Play Age Signals API (الإصدار التجريبي)، أنت توافق على بنود الخدمة وتلتزم بجميع سياسات المطوّرين على Google Play. لطلب حالة المستخدم والفئة العمرية، يمكنك استدعاء واجهة برمجة التطبيقات من تطبيقك في وقت التشغيل. لا تعرض واجهة Play Age Signals API سوى بيانات المستخدمين المقيمين في المناطق التي يفرض فيها القانون على Google Play تقديم بيانات الفئة العمرية.
يعرض Play فئة عمرية استنادًا إلى النطاقات العمرية المحدّدة من قِبل نطاق السلطة والمناطق المعنيّة. إنّ الأعمار التلقائية التي تعرضها واجهة برمجة التطبيقات في نطاقات السلطة والمناطق المعنيّة هي من 0 إلى 12 عامًا، ومن 13 إلى 15 عامًا، ومن 16 إلى 17 عامًا، و18 عامًا فأكثر، ولكن قد يتم تلقّي فئات عمرية مخصّصة. يُحدِّث Google Play تلقائيًا مؤشرات الفئات العمرية المخزّنة مؤقتًا لأحد المستخدمين خلال فترة تتراوح بين أسبوعَين و8 أسابيع بعد عيد ميلاده.
دمج واجهة Play Age Signals API في تطبيقك
تتوفّر واجهة Play Age Signals API على الهواتف والأجهزة القابلة للطي والأجهزة اللوحية التي تعمل بنظام التشغيل Android 6.0 (المستوى 23 من واجهة برمجة التطبيقات) والإصدارات الأحدث. لدمج واجهة Play Age Signals API في تطبيقك، أضِف التبعية التالية إلى ملف build.gradle في تطبيقك:
implementation 'com.google.android.play:age-signals:0.0.3'
طلب مؤشرات الفئات العمرية
في ما يلي مثال على طلب مؤشرات الفئات العمرية:
Kotlin
// Create an instance of a manager val ageSignalsManager = AgeSignalsManagerFactory.create(ApplicationProvider.getApplicationContext()) // Request an age signals check ageSignalsManager .checkAgeSignals(AgeSignalsRequest.builder().build()) .addOnSuccessListener { ageSignalsResult -> // Store the install ID for later... val installId = ageSignalsResult.installId() if (ageSignalsResult.userStatus() == AgeSignalsVerificationStatus.SUPERVISED_APPROVAL_DENIED) { // Disallow access... } else { // Do something else if the user is VERIFIED, DECLARED, SUPERVISED, etc. } }
Java
// Create an instance of a manager AgeSignalsManager ageSignalsManager = AgeSignalsManagerFactory.create(ApplicationProvider.getApplicationContext()); // Request an age signals check ageSignalsManager .checkAgeSignals(AgeSignalsRequest.builder().build()) .addOnSuccessListener( ageSignalsResult -> { // Store the install ID for later... String installId = ageSignalsResult.installId(); if (ageSignalsResult .userStatus() .equals(AgeSignalsVerificationStatus.SUPERVISED_APPROVAL_DENIED)) { // Disallow access ... } else { // Do something else if the user is SUPERVISED, VERIFIED, etc. } });
(اختياري) تلقّي فئات عمرية مخصّصة
إنّ الفئات العمرية التلقائية التي تعرضها واجهة برمجة التطبيقات في نطاقات السلطة والمناطق المعنيّة هي من 0 إلى 12 عامًا، ومن 13 إلى 15 عامًا، ومن 16 إلى 17 عامًا، و18 عامًا فأكثر.
بدلاً من ذلك، لتخصيص الفئات العمرية التلقائية وفقًا للحدّ الأدنى للعمر المسموح به في تطبيقك ، يمكنك تقديم هذه الحدود الدنيا للعمر في تطبيقك على صفحة "مؤشرات الفئات العمرية" في Google Play Console.
- انتقِل إلى صفحة "مؤشرات الفئات العمرية" في Play Console.
- في علامة التبويب فئات عمرية مخصّصة ، أدخِل ما يصل إلى ثلاثة حدود دنيا للعمر في تطبيقك. يجب ألا يقل الفارق العمري عن سنتَين، ويمكن تغييره مرة واحدة سنويًا.
- انقر على حفظ.
ستحل الفئات العمرية المعروضة محل الردّ التلقائي من واجهة برمجة التطبيقات. على سبيل المثال:
إذا ضبطت حدًا أدنى واحدًا للعمر (15) في Google Play Console:
- بالنسبة إلى المستخدمين الذين تتراوح أعمارهم بين 0 و14 عامًا، سيتم عرض
ageLower = 0وageUpper = 14. - بالنسبة إلى المستخدمين الذين تزيد أعمارهم عن 15 عامًا، سيتم عرض
ageLower = 15.
- بالنسبة إلى المستخدمين الذين تتراوح أعمارهم بين 0 و14 عامًا، سيتم عرض
إذا ضبطت حدّين أدنيَين للعمر (13 و17):
- بالنسبة إلى المستخدمين الذين تتراوح أعمارهم بين 0 و12 عامًا، سيتم عرض
ageLower = 0وageUpper = 12. - بالنسبة إلى المستخدمين الذين تتراوح أعمارهم بين 13 و16 عامًا، سيتم عرض
ageLower = 13وageUpper = 16. - بالنسبة إلى المستخدمين الذين تزيد أعمارهم عن 17 عامًا، سيتم عرض
ageLower = 17.
- بالنسبة إلى المستخدمين الذين تتراوح أعمارهم بين 0 و12 عامًا، سيتم عرض
إذا ضبطت ثلاثة حدود دنيا للعمر (11 و13 و15):
- بالنسبة إلى المستخدمين الذين تتراوح أعمارهم بين 0 و10 أعوام، سيتم عرض
ageLower = 0وageUpper = 10. - بالنسبة إلى المستخدمين الذين تتراوح أعمارهم بين 11 و12 عامًا، سيتم عرض
ageLower = 11وageUpper = 12. - بالنسبة إلى المستخدمين الذين تتراوح أعمارهم بين 13 و14 عامًا، سيتم عرض
ageLower = 13وageUpper = 14. - بالنسبة إلى المستخدمين الذين تزيد أعمارهم عن 15 عامًا، سيتم عرض
ageLower = 15.
- بالنسبة إلى المستخدمين الذين تتراوح أعمارهم بين 0 و10 أعوام، سيتم عرض
الردود من مؤشرات الفئات العمرية
يتضمّن الردّ من واجهة Play Age Signals API (الإصدار التجريبي) الحقول والقيم التالية. وقد تتغيّر القيم. إذا كنت تريد الحصول على أحدث القيم، اطلب ردًا من واجهة برمجة التطبيقات عند فتح تطبيقك. أنت مسؤول عن تقديم تجارب مناسبة للفئة العمرية باستخدام هذه المؤشرات.
أمثلة على الردود للمستخدمين في البرازيل
في البرازيل، لا يمكن أن تكون قيمة userStatus إلا DECLARED أو UNKNOWN أو null.
بالنسبة إلى المستخدم الذي أعلن عن عمره وشاركه مع التطبيقات، ستتلقّى ما يلي:
- ستكون قيمة
userStatusهيAgeSignalsVerificationStatus.DECLARED. - سيكون
ageLowerرقمًا (على سبيل المثال، 13). - سيكون
ageUpperرقمًا أوnull(على سبيل المثال، 15). - ستكون حقول الردّ الأخرى
null.
بالنسبة إلى المستخدم الذي يكون عمره غير معروف، ستتلقّى ما يلي:
- ستكون قيمة
userStatusهيAgeSignalsVerificationStatus.UNKNOWN. - ستكون حقول الردّ الأخرى
null.
بالنسبة إلى المستخدم الذي لا يشارك عمره مع التطبيقات، ستتلقّى ما يلي:
- ستكون قيمة
userStatusهيnull. - ستكون حقول الردّ الأخرى
null.
يمكن أن تتغيّر حالة المستخدم إلى DECLARED عندما يصبح عمر المستخدم متاحًا للمشاركة.
أمثلة على الردود للمستخدمين في الولايات الأمريكية
في الولايات الأمريكية المعنيّة، يمكن أن تكون قيمة userStatus هي VERIFIED،
SUPERVISED، SUPERVISED_APPROVAL_PENDING،
SUPERVISED_APPROVAL_DENIED، UNKNOWN، أو
null.
بالنسبة إلى المستخدم الذي تم التحقق من صحة عمره، ستتلقّى ما يلي:
- ستكون قيمة
userStatusهيAgeSignalsVerificationStatus.VERIFIED. - سيكون
ageLowerرقمًا (على سبيل المثال، 18). - سيكون
ageUpperرقمًا أوnull(على سبيل المثال،null). - ستكون حقول الردّ الأخرى
null.
بالنسبة إلى المستخدم الخاضع للإشراف، ستتلقّى ما يلي:
- ستكون قيمة
userStatusهيAgeSignalsVerificationStatus.SUPERVISED. - سيكون
ageLowerرقمًا (على سبيل المثال، 13). - سيكون
ageUpperرقمًا أوnull(على سبيل المثال، 15). - سيكون
mostRecentApprovalDateكائن تاريخ Java (على سبيل المثال،2026-01-01) أوnull(إذا لم تتم الموافقة على أي تغيير مهم). - سيكون
installIDرقم تعريف أبجدي رقمي تم إنشاؤه بواسطة Play (على سبيل المثال،550e8400-e29b-41d4-a716-446655441111).
بالنسبة إلى المستخدم الخاضع للإشراف الذي ينتظر الموافقة على تغيير مهم، ستتلقّى ما يلي:
- ستكون قيمة
userStatusهيAgeSignalsVerificationStatus.SUPERVISED_APPROVAL_PENDING. - سيكون
ageLowerرقمًا (على سبيل المثال، 13). - سيكون
ageUpperرقمًا أوnull(على سبيل المثال، 15). - سيكون
mostRecentApprovalDateكائن تاريخ Java (على سبيل المثال،2026-01-01) أوnull(إذا لم تتم الموافقة على أي تغيير مهم). - سيكون
installIDرقم تعريف أبجدي رقمي تم إنشاؤه بواسطة Play (على سبيل المثال،550e8400-e29b-41d4-a716-446655441111).
التعامل مع رموز أخطاء واجهة برمجة التطبيقات
إذا أرسل تطبيقك طلب بيانات من واجهة برمجة التطبيقات إلى Play Age Signals API وتعذّر استدعاء واجهة برمجة التطبيقات، سيتلقّى تطبيقك رمز خطأ. يمكن أن تحدث هذه الأخطاء لأسباب مختلفة، مثل أنّ تطبيق "متجر Google Play" قديم.
استراتيجية إعادة المحاولة
في الحالات التي يكون فيها المستخدم في جلسة، ننصحك بتنفيذ استراتيجية إعادة محاولة مع حدّ أقصى لعدد المحاولات كشرط للخروج من الاستراتيجية، وذلك لتقليل تأثير الخطأ على تجربة المستخدم قدر الإمكان.
| القيمة الرقمية لرمز الخطأ | رمز الخطأ | الوصف | يمكن إعادة المحاولة |
|---|---|---|---|
| -1 | API_NOT_AVAILABLE | واجهة Play Age Signals API غير متاحة. قد يكون إصدار تطبيق "متجر Google Play" المُثبّت على الجهاز قديمًا. الحلّ المحتمَل
|
نعم |
| -2 | PLAY_STORE_NOT_FOUND | لم يتم العثور على تطبيق "متجر Google Play" على الجهاز. اطلب من المستخدم تثبيت "متجر Google Play" أو تفعيله. | نعم |
| -3 | NETWORK_ERROR | لم يتم العثور على أي شبكة متاحة. اطلب من المستخدم التحقّق من وجود اتصال. | نعم |
| -4 | PLAY_SERVICES_NOT_FOUND | خدمات Play غير متاحة أو أنّ إصدارها قديم جدًا. اطلب من المستخدم تثبيت "خدمات Play" أو تحديثها أو تفعيلها. | نعم |
| -5 | CANNOT_BIND_TO_SERVICE | تعذّر الربط بالخدمة في "متجر Google Play". يمكن أن يرجع ذلك إلى تثبيت إصدار قديم من "متجر Google Play" على الجهاز أو إلى زيادة تحميل ذاكرة الجهاز. اطلب من المستخدم تحديث تطبيق "متجر Google Play". أعد المحاولة باستخدام خوارزمية الرقود الأسي الثنائي. | نعم |
| -6 | PLAY_STORE_VERSION_OUTDATED | يجب تحديث تطبيق "متجر Google Play". اطلب من المستخدم تحديث تطبيق "متجر Google Play". | نعم |
| -7 | PLAY_SERVICES_VERSION_OUTDATED | يجب تحديث "خدمات Play". اطلب من المستخدم تحديث "خدمات Play". | نعم |
| -8 | CLIENT_TRANSIENT_ERROR | حدث خطأ مؤقت في جهاز العميل. نفِّذ استراتيجية إعادة محاولة مع حدّ أقصى لعدد المحاولات كشرط للخروج من الاستراتيجية. إذا استمرت المشكلة، اطلب من المستخدم المحاولة مرة أخرى لاحقًا. | نعم |
| -9 | APP_NOT_OWNED | لم يتم تثبيت التطبيق من خلال Google Play. اطلب من المستخدم الحصول على تطبيقك من Google Play. | لا |
| -10 | SDK_VERSION_OUTDATED | لم يعُد إصدار حزمة Play Age Signals SDK متاحًا. اطلب من المستخدم تحديث تطبيقك إلى إصدار أحدث يستخدم إصدارًا حديثًا من حزمة Play Age Signals SDK. | لا |
| -100 | INTERNAL_ERROR | حدث خطأ داخلي غير معروف. نفِّذ استراتيجية إعادة محاولة مع حدّ أقصى لعدد المحاولات كشرط للخروج من الاستراتيجية. إذا استمرت المشكلة، اطلب من المستخدم المحاولة مرة أخرى لاحقًا. إذا استمرت المشكلة، تواصَل مع فريق دعم المطوّرين على Google Play، وضِّمن Play Age Signals API في الموضوع، وأدرِج أكبر قدر ممكن من التفاصيل الفنية (مثل تقرير عن الخطأ). | لا |