يعني استخدامك لواجهة برمجة التطبيقات 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. ستحل الفئات العمرية المعروضة محل الردّ التلقائي من واجهة برمجة التطبيقات. على سبيل المثال، إذا حدّدت الحد الأدنى للعمر بـ 9 و15 و17 عامًا، فإنه سيتم تصنيف المستخدم البالغ من العمر 14 عامًا ضمن الفئة العمرية من 10 إلى 15 عامًا.
لتخصيص الفئات العمرية التلقائية التي تعرضها واجهة Age Signals API، يمكنك تقديم الحدّ الأدنى للعمر المسموح به في تطبيقك باتّباع الخطوات التالية:
- انتقِل إلى صفحة إشارات العمر في Play Console.
- في علامة التبويب الفئات العمرية المخصّصة، أدخِل ما يصل إلى ثلاث فئات ضمن الحدّ الأدنى للعمر في تطبيقك. يجب ألا يقل الفارق العمري عن سنتَين، ويمكن تغييره مرة واحدة سنويًا.
- انقر على حفظ.
ردود مؤشرات الفئات العمرية
يتضمّن ردّ واجهة Play Age Signals API (الإصدار التجريبي) الحقول والقيم التالية. وقد تتغيّر القيم. إذا كنت تريد الحصول على أحدث القيم، اطلب الحصول على ردّ من واجهة برمجة التطبيقات عند فتح تطبيقك. أنت المسؤول عن توفير تجارب مناسبة للفئة العمرية باستخدام هذه الإشارات.
| حقل الردّ | القيم | الوصف |
|---|---|---|
userStatus |
تم التحقق | أثبتت Google عمر المستخدم باستخدام طريقة معقولة تجاريًا، مثل مستند تعريف هوية صادر عن جهة حكومية أو بطاقة ائتمان أو تقدير العمر من خلال الوجه. إذا كانت قيمة userStatus هي VERIFIED، يمكنك تجاهل الحقول الأخرى.
استخدِم ageLower وageUpper لتحديد الفئة العمرية للمستخدم.
|
| معلن | تم تحديد عمر المستخدم من قِبل المستخدم أو أحد والدَيه أو الوصي القانوني عليه.
استخدِم ageLower وageUpper لتحديد الفئة العمرية للمستخدم. |
|
| SUPERVISED | لدى المستخدم حساب Google خاضع للإشراف يديره أحد الوالدَين الذي يحدّد عمره.
استخدِم ageLower وageUpper لتحديد الفئة العمرية للمستخدم.
استخدِم mostRecentApprovalDate لتحديد آخر تغيير مهم تمت الموافقة عليه. |
|
| SUPERVISED_APPROVAL_PENDING | لدى المستخدم حساب Google خاضعًا للإشراف، ولم يوافق بعد الوالد المشرف على تغيير واحد أو أكثر من التغييرات المهمة المعلّقة.
استخدِم ageLower وageUpper لتحديد الفئة العمرية للمستخدم.
استخدِم mostRecentApprovalDate لتحديد آخر تغيير مهم تمت الموافقة عليه. |
|
| SUPERVISED_APPROVAL_DENIED | لدى المستخدم حساب Google خاضعًا للإشراف، ورفض الوالد المشرف الموافقة على تغيير واحد أو أكثر من التغييرات المهمة.
استخدِم ageLower وageUpper لتحديد الفئة العمرية للمستخدم.
استخدِم mostRecentApprovalDate لتحديد آخر تغيير مهم تمت الموافقة عليه. |
|
| UNKNOWN | عمر المستخدم غير معروف وهو يقيم في ولاية قضائية أو منطقة سارية فيها سياسات الخصوصية. ينطبق ذلك فقط على الولايات الأمريكية: للحصول على إشارة العمر من Google Play، اطلب من المستخدم الانتقال إلى "متجر Play" لتحديد حالته. |
|
null |
تعرض جميع الحسابات الأخرى هذه القيمة. إذا كانت قيمة userStatus هي null، يمكنك تجاهل الحقول الأخرى. |
|
ageLower |
من 0 إلى 18 | الحدّ الأدنى (شامل) للنطاق العمري للمستخدم الخاضع للإشراف.
استخدِم الرمزين ageLower وageUpper لتحديد الفئة العمرية للمستخدم. |
null |
userStatus غير معروف أو null. |
|
ageUpper |
من 2 إلى 18 | الحدّ الأعلى (شامل) للنطاق العمري للمستخدم الخاضع للإشراف
استخدِم الرمزين ageLower وageUpper لتحديد الفئة العمرية للمستخدم. |
null |
إما أن يكون userStatus خاضعًا للإشراف وأن يكون عمر المستخدم الذي أكّده أحد الوالدَين أكبر من 18 عامًا.
أو أنّ userStatus غير معروف أو null |
|
mostRecentApprovalDate |
الطابع الزمني | تمثّل هذه السمة تاريخ effective from لآخر تغيير مهم تمت الموافقة عليه. عند تثبيت تطبيق، يتم استخدام تاريخ آخر تغيير مهم قبل التثبيت. |
null |
إما أنّ حساب userStatus خاضع للإشراف ولم يتم إرسال أي تغيير مهم.
تم تأكيد صحة معلومات أو userStatus، أو أنّها غير معروفة، أو null. |
|
installID |
معرّف أبجدي رقمي من إنشاء Play | معرّف يخصّ عمليات تثبيت التطبيقات التي يجريها المستخدمون الخاضعون للإشراف، ويتم تعيينه من قِبل Google Play، ويُستخدَم لإعلامك بإلغاء الموافقة على التطبيق. راجِع المستندات المتعلّقة بإبطال الموافقات على التطبيقات. |
null |
userStatus تم التحقّق منها أو غير معروفة أو null. |
أمثلة على الردود للمستخدمين في البرازيل
في البرازيل، يمكن أن تكون قيمة userStatus إما DECLARED أو UNKNOWN.
بالنسبة إلى المستخدم الذي أفصح عن عمره، ستتلقّى ما يلي:
- سيصبح
userStatusهوAgeSignalsVerificationStatus.DECLARED. - سيكون
ageLowerرقمًا (على سبيل المثال، 13). - سيكون
ageUpperرقمًا أوnull(على سبيل المثال، 15). - ستكون حقول الرد الأخرى
null.
بالنسبة إلى مستخدم غير معروف العمر، ستتلقّى ما يلي:
- سيصبح
userStatusهوAgeSignalsVerificationStatus.UNKNOWN. - ستكون حقول الرد الأخرى
null.
قد تتغيّر حالة المستخدم من UNKNOWN إلى 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 وتعذّر إرسال الطلب، سيتلقّى تطبيقك رمز خطأ. ويمكن أن تحدث هذه الأخطاء لأسباب مختلفة، مثل أن يكون تطبيق "متجر Play" قديمًا.
استراتيجية إعادة المحاولة
في الحالات التي يكون فيها المستخدم في جلسة، ننصحك بتنفيذ استراتيجية إعادة المحاولة مع تحديد الحد الأقصى لعدد المحاولات كشرط للخروج من الجلسة، وذلك لكي لا يؤدي الخطأ إلى تعطيل تجربة المستخدم قدر الإمكان.
| القيمة العددية لرمز الخطأ | رمز الخطأ | الوصف | قابلة لإعادة المحاولة |
|---|---|---|---|
| -1 | API_NOT_AVAILABLE | واجهة Play Age Signals API غير متاحة. قد يكون إصدار تطبيق "متجر Play" المثبَّت على الجهاز قديمًا. الحل المحتمل
|
نعم |
| -2 | PLAY_STORE_NOT_FOUND | لم يتم العثور على تطبيق "متجر Play" على الجهاز. اطلب من المستخدم تثبيت "متجر Play" أو تفعيله. | نعم |
| -3 | NETWORK_ERROR | لم يتم العثور على أي شبكة متاحة. اطلب من المستخدم التحقّق من توفّر اتصال. | نعم |
| -4 | PLAY_SERVICES_NOT_FOUND | "خدمات Play" غير متاحة أو إصدارها قديم جدًا. اطلب من المستخدم تثبيت "خدمات Play" أو تحديثها أو تفعيلها. | نعم |
| -5 | CANNOT_BIND_TO_SERVICE | تعذّر الربط بالخدمة في "متجر Play". قد يرجع ذلك إلى تثبيت إصدار قديم من "متجر Play" على الجهاز أو إلى امتلاء ذاكرة الجهاز. اطلب من المستخدم تحديث تطبيق "متجر Play". أعِد المحاولة باستخدام خوارزمية الرقود الأسي الثنائي. | نعم |
| -6 | PLAY_STORE_VERSION_OUTDATED | يجب تحديث تطبيق "متجر Play". اطلب من المستخدم تحديث تطبيق "متجر Play". | نعم |
| -7 | PLAY_SERVICES_VERSION_OUTDATED | يجب تحديث "خدمات Play". اطلب من المستخدم تحديث "خدمات Play". | نعم |
| -8 | CLIENT_TRANSIENT_ERROR | حدث خطأ عابر في جهاز العميل. تنفيذ استراتيجية إعادة المحاولة مع تحديد الحد الأقصى لعدد المحاولات كشرط للخروج إذا استمرّت المشكلة، اطلب من المستخدم إعادة المحاولة لاحقًا. | نعم |
| -9 | APP_NOT_OWNED | لم يتم تثبيت التطبيق من خلال Google Play. اطلب من المستخدم الحصول على تطبيقك من Google Play. | لا |
| -10 | SDK_VERSION_OUTDATED | لم يعُد إصدار حزمة تطوير البرامج (SDK) الخاصة بميزة "إشارات الفئة العمرية على Play" متاحًا. اطلب من المستخدم تحديث تطبيقك إلى إصدار أحدث يستخدم إصدارًا حديثًا من حزمة تطوير البرامج (SDK) الخاصة بميزة "إشارات الفئة العمرية على Play". | لا |
| -100 | INTERNAL_ERROR | حدث خطأ داخلي غير معروف. تنفيذ استراتيجية إعادة المحاولة مع تحديد الحد الأقصى لعدد المحاولات كشرط للخروج إذا استمرّت المشكلة، اطلب من المستخدم إعادة المحاولة لاحقًا. إذا تعذّر ذلك باستمرار، يُرجى التواصل مع فريق دعم المطوّرين على Google Play وتضمين Play Age Signals API في الموضوع، بالإضافة إلى أكبر قدر ممكن من التفاصيل الفنية (مثل تقرير عن الخطأ). | لا |