إذا قدَّم أحد التطبيقات طلبًا باستخدام واجهة برمجة التطبيقات Play Integrity API وتعذّر الاتصال، يتم عرض رمز خطأ. يعتمد نوع رمز الخطأ المعروض على نوع الطلب:
- الطلبات العادية: تعرض واجهة برمجة التطبيقات الخطأ StandardIntegrityErrorCode.
- الطلبات الكلاسيكية: تعرض واجهة برمجة التطبيقات الخطأ IntegrityErrorCode.
إعادة محاولة الإستراتيجيات
ننصحك باستخدام ميزة "الرقود الأسي" في عمليات Play Integrity التي تحدث في الخلفية ولا تؤثّر في تجربة المستخدِم أثناء الجلسة.
على سبيل المثال، من المناسب تنفيذ هذا عند الإقرار بعمليات الشراء الجديدة لأن هذه العملية يمكن أن تحدث في الخلفية، ولا يلزم أن يحدث الإقرار في الوقت الفعلي في حالة حدوث خطأ.
بعد حدوث الفشل الأول، ابدأ بمهلة مبدئية تبلغ 5 ثوانٍ قبل إعادة المحاولة.
نفِّذ استراتيجية لإعادة المحاولة تتضمّن أقصى عدد من المحاولات كشرط خروج باستخدام معدّل التأخير المتزايد بشكل كبير في كل مرة (10 ثوانٍ أو 20 ثانية).
وأثناء إجراء هذه المحاولات، تأكَّد من الاتصال بالشبكة ولا تحمِّل الجهاز بشكل زائد.
إذا استمر ظهور الأخطاء بعد ثلاث محاولات لإعادة المحاولة، تعامل مع النتيجة كما لو كان العميل قد فشل جميع عمليات التحقق من السلامة. وقد يرجع الخطأ إلى عدة أسباب، بما في ذلك (على سبيل المثال لا الحصر): استخدام جهاز محمَّل بشكل زائد أو حدوث مشاكل في الاتصال بالشبكة أو حدوث محاولة من أحد المهاجمين.
قيم رموز الخطأ لمكتبة جافا
قيم إضافية لرموز الخطأ للمكتبة الأصلية
رموز الخطأ القابلة لإعادة المحاولة
يرجع سبب هذه الأخطاء أحيانًا إلى الحالات العابرة، وبالتالي يجب عليك إعادة محاولة الاتصال.
NETWORK_ERROR
(رمز الخطأ -3)
يشير هذا الخطأ إلى حدوث مشكلة في اتصال الشبكة بين الجهاز وأنظمة Play.
الحل المحتمل
لاسترداد الحساب، اطلب من المستخدم التحقق من الاتصال بالشبكة، واستخدام عمليات إعادة المحاولة البسيطة أو الرقود الأسي الثنائي، اعتمادًا على الإجراء الذي تسبب في حدوث الخطأ.
راجع أيضًا
NETWORK_ERROR
للطلبات الكلاسيكية.
TOO_MANY_REQUESTS
(رمز الخطأ -8)
يرسل تطبيق الاتصال عددًا كبيرًا جدًا من الطلبات إلى واجهة برمجة التطبيقات وتم تقييده.
الحل المحتمل
- طلب زيادة الحد الأقصى اليومي للطلبات
- أعِد المحاولة باستخدام رقود أسي.
راجع أيضًا
TOO_MANY_REQUESTS
للطلبات الكلاسيكية.
GOOGLE_SERVER_UNAVAILABLE
(رمز الخطأ -12)
حدث خطأ داخلي غير معروف في خادم Google.
الحل المحتمل
أعِد المحاولة باستخدام رقود أسي. جرِّب الإبلاغ عن خطأ إذا تعذّر ذلك بشكل منتظم.
راجع أيضًا
GOOGLE_SERVER_UNAVAILABLE
للطلبات الكلاسيكية.
CLIENT_TRANSIENT_ERROR
(رمز الخطأ -18)
حدث خطأ عابر على جهاز العميل.
بالنسبة إلى طلبات البيانات من واجهة برمجة التطبيقات العادية، تكون هذه الميزة متاحة اعتبارًا من الإصدار 1.3.0 من مكتبة واجهة برمجة التطبيقات Play Integrity API في لغتَي Kotlin وJava والمكوّن الإضافي Google Play Integrity API لـ Unity 1.3.0 أو الإصدارات الأحدث والإصدار 1.13.0 أو إصدار أحدث من Play Core Native SDK.
الحل المحتمل
أعِد المحاولة باستخدام رقود أسي.
راجع أيضًا
CLIENT_TRANSIENT_ERROR
للطلبات الكلاسيكية.
ملاحظة: عند إعداد التقارير أثناء استخدام طلب بيانات من واجهة برمجة التطبيقات الكلاسيكية، تكون القيمة المعروضة هي -17.
INTERNAL_ERROR
(رمز الخطأ -100)
حدث خطأ داخلي غير معروف.
الحل المحتمل
أعِد المحاولة باستخدام رقود أسي. فكِّر في الإبلاغ عن خطأ إذا تعذّر بشكل متكرر.
راجع أيضًا
INTERNAL_ERROR
للطلبات الكلاسيكية.
STANDARD_INTEGRITY_INTERNAL_ERROR
(رمز الخطأ -100)
حدث خطأ داخلي غير معروف.
الحل المحتمل
أعِد المحاولة باستخدام رقود أسي. فكِّر في الإبلاغ عن خطأ إذا تعذّر بشكل متكرر.
راجع أيضًا
يمكنك الاطّلاع على INTEGRITY_INTERNAL_ERROR
للاطّلاع على الطلبات الكلاسيكية.
STANDARD_INTEGRITY_INITIALIZATION_FAILED
(رمز الخطأ -102)
حدث خطأ أثناء إعداد Standard Integrity API.
الحل المحتمل
أعِد المحاولة باستخدام رقود أسي. فكِّر في الإبلاغ عن خطأ إذا تعذّر بشكل متكرر.
راجع أيضًا
يمكنك الاطّلاع على INTEGRITY_INITIALIZATION_FAILED
للاطّلاع على الطلبات الكلاسيكية.
رموز الخطأ غير القابلة لإعادة المحاولة
ومن غير المرجّح أن تساعد عمليات إعادة المحاولة التلقائية في هذه الحالات. ومع ذلك، قد تساعد إعادة المحاولة اليدوية إذا عالج المستخدم الشرط الذي تسبب في المشكلة. على سبيل المثال، إذا حدّث المستخدم إصدار "متجر Play" إلى إصدار متوافق، قد تتم إعادة المحاولة يدويًا للعملية الأولية.
API_NOT_AVAILABLE
(رمز الخطأ -1)
قد يكون إصدار "متجر Play" المثبَّت على الجهاز قديمًا ولا تتوفّر واجهة برمجة التطبيقات Integrity API. يُحتمَل أيضًا أنّ واجهة برمجة التطبيقات Integrity API غير مفعَّلة في Google Play Console.
الحل المحتمل
- تأكَّد من أنّ واجهة برمجة التطبيقات Integrity API مفعَّلة في Google Play Console.
- اطلب من المستخدم تحديث "متجر Play".
راجع أيضًا
يمكنك الاطّلاع على API_NOT_AVAILABLE
لمعرفة الطلب الكلاسيكي.
PLAY_STORE_NOT_FOUND
(رمز الخطأ -2)
لم يتم العثور على تطبيق رسمي لـ "متجر Play" على الجهاز.
الحل المحتمل
اطلب من المستخدم تثبيت "متجر Google Play" أو تفعيله.
راجع أيضًا
يمكنك الاطّلاع على PLAY_STORE_NOT_FOUND
لمعرفة الطلب الكلاسيكي.
PLAY_STORE_ACCOUNT_NOT_FOUND
(رمز الخطأ -4)
ملاحظة: لا يتم الإبلاغ عن هذا الإجراء إلا للطلبات الكلاسيكية من خلال
IntegrityErrorCode
.
لم يتم العثور على حساب على "متجر Play" على الجهاز. يُرجى العِلم أنّ واجهة برمجة التطبيقات Play Integrity API تدعم الآن الطلبات التي لم تتم مصادقتها. يُستخدم رمز الخطأ هذا فقط في إصدارات "متجر Play" القديمة التي تفتقر إلى الدعم.
الحل المحتمل
اطلب من المستخدم تحديث التطبيق وتسجيل الدخول إلى "متجر Google Play".
APP_NOT_INSTALLED
(رمز الخطأ -5)
تَطْبِيقْ الِاتِّصَالْ غَيْرْ مُثَبَّتْ. حدث خطأ ما (ربما هجوم).
الحل المحتمل
غير قابلة للتنفيذ: تعامل مع النتيجة كما لو أن العميل لم يجتَز جميع فحوصات النزاهة.
راجع أيضًا
يمكنك الاطّلاع على APP_NOT_INSTALLED
لمعرفة الطلب الكلاسيكي.
PLAY_SERVICES_NOT_FOUND
(رمز الخطأ -6)
خدمات Play غير متاحة أو يجب تحديثها.
الحل المحتمل
اطلب من المستخدم تثبيت "خدمات Play" أو تحديثها أو تفعيلها.
راجع أيضًا
يمكنك الاطّلاع على APP_NOT_INSTALLED
لمعرفة الطلب الكلاسيكي.
APP_UID_MISMATCH
(رمز الخطأ -7)
المعرّف الفريد لتطبيق الاتصال (معرّف المستخدم) لا يتطابق مع المعرّف الفريد لتطبيق "مدير الحزم".
الحل المحتمل
غير قابلة للتنفيذ: تعامل مع النتيجة كما لو أن العميل لم يجتَز جميع فحوصات النزاهة.
راجع أيضًا
يمكنك الاطّلاع على APP_UID_MISMATCH
لمعرفة الطلب الكلاسيكي.
CANNOT_BIND_TO_SERVICE
(رمز الخطأ -9)
تعذَّر ربط الخدمة في "متجر Play". قد يرجع ذلك إلى تثبيت إصدار قديم من متجر Play على الجهاز.
الحل المحتمل
اطلب من المستخدم تحديث "متجر Google Play".
راجع أيضًا
يمكنك الاطّلاع على CANNOT_BIND_TO_SERVICE
لمعرفة الطلب الكلاسيكي.
NONCE_TOO_SHORT
(رمز الخطأ -10)
ملاحظة: لا يتم الإبلاغ عن هذا الإجراء إلا للطلبات الكلاسيكية من خلال
IntegrityErrorCode
.
مدة التعليقات قصيرة جدًا. يجب ألا يقل حجم nonce عن 16 بايت قبل ترميز base64.
الحل المحتمل
يُرجى إعادة المحاولة باستخدام رقم GTIN أطول.
NONCE_TOO_LONG
(رمز الخطأ -11)
ملاحظة: لا يتم الإبلاغ عن هذا الإجراء إلا للطلبات الكلاسيكية من خلال
IntegrityErrorCode
.
مدة بدون اسم طويلة جدًا. يجب أن تكون قيمة nonce أقل من 500 بايت قبل ترميز base64.
الحل المحتمل
يُرجى إعادة المحاولة باستخدام رقم تعريفي أقصر.
NONCE_IS_NOT_BASE64
(رمز الخطأ -13)
ملاحظة: لا يتم الإبلاغ عن هذا الإجراء إلا للطلبات الكلاسيكية من خلال
IntegrityErrorCode
.
لم يتم ترميز Nonce كسلسلة بدون التفاف base64 على الويب.
الحل المحتمل
يُرجى إعادة المحاولة باستخدام رقم nonce بالتنسيق الصحيح.
PLAY_STORE_VERSION_OUTDATED
(رمز الخطأ -14)
يجب تحديث تطبيق "متجر Google Play".
الحل المحتمل
اطلب من المستخدم تحديث "متجر Google Play".
راجع أيضًا
يمكنك الاطّلاع على PLAY_STORE_VERSION_OUTDATED
لمعرفة الطلب الكلاسيكي.
PLAY_SERVICES_VERSION_OUTDATED
(رمز الخطأ -15)
يجب تحديث "خدمات Google Play".
الحل المحتمل
اطلب من المستخدم تحديث "خدمات Google Play".
راجع أيضًا
يمكنك الاطّلاع على PLAY_SERVICES_VERSION_OUTDATED
لمعرفة الطلب الكلاسيكي.
CLOUD_PROJECT_NUMBER_IS_INVALID
(رمز الخطأ -16)
رقم المشروع على السحابة الإلكترونية الذي تم تقديمه غير صالح.
الحل المحتمل
استخدِم رقم المشروع على Google Cloud للمشروع الذي فعّلت فيه واجهة برمجة التطبيقات Play Integrity API.
راجع أيضًا
يمكنك الاطّلاع على CLOUD_PROJECT_NUMBER_IS_INVALID
لمعرفة الطلب الكلاسيكي.
REQUEST_HASH_TOO_LONG
(رمز الخطأ -17)
ملاحظة: لا يتم الإبلاغ عن هذا الإجراء إلا عند استخدام الطلب العادي حتى StandardIntegrityErrorCode
.
مادة عرض requestHash
التي تم تقديمها طويلة جدًا. يجب أن يكون طول السمة requestHash
أقل من
500 حرف.
الحل المحتمل
يُرجى إعادة المحاولة باستخدام requestHash
أقصر.
INTEGRITY_TOKEN_PROVIDER_INVALID
(رمز الخطأ -19)
ملاحظة: يتمّ الإبلاغ عن هذا الإجراء فقط للطلب العادي حتى StandardIntegrityErrorCode
.
قيمة StandardIntegrityTokenProvider
غير صالحة. لا يتوفّر رمز الخطأ هذا إلا لطلبات البيانات من واجهة برمجة التطبيقات العادية، حيث يمكن استخدامه بدءًا من إصدار المكتبة 1.3.0 للّغات البرمجية Kotlin وJava ومكوّن Google Play Integrity
المكون الإضافي لنظام Unity 1.3.0 أو إصدار أحدث والإصدار 1.13.0 من حزمة Play Core Native SDK أو إصدار أحدث.
الحل المحتمل
طلب موفّر خدمة رمز مميّز جديد للسلامة
STANDARD_INTEGRITY_INITIALIZATION_NEEDED
(رمز الخطأ -101)
لم يتم إعداد StandardIntegrityManager
.
الحل المحتمل
يُرجى الاتصال بالرقم StandardIntegrityManager_init()
أولاً.
راجع أيضًا
يمكنك الاطّلاع على INTEGRITY_INITIALIZATION_NEEDED
للاطّلاع على الطلبات الكلاسيكية.
STANDARD_INTEGRITY_INVALID_ARGUMENT
(رمز الخطأ -103)
تم تمرير وسيطة غير صالحة إلى Standard Integrity API.
الحل المحتمل
يُرجى إعادة المحاولة باستخدام الوسيطة الصحيحة.
راجع أيضًا
يمكنك الاطّلاع على INTEGRITY_INVALID_ARGUMENT
للتعرّف على الطلبات الكلاسيكية.