إذا أرسل تطبيقك طلبًا إلى واجهة برمجة التطبيقات Play Integrity API وتعذّر إرسال الطلب، يتلقّى تطبيقك رمز خطأ. يمكن أن تحدث هذه الأخطاء لأسباب مختلفة، مثل المشاكل البيئية، مثل ضعف الاتصال بالشبكة أو المشاكل المتعلّقة بدمج واجهة برمجة التطبيقات أو الأنشطة الضارة والهجمات النشطة. يعتمد نوع رمز الخطأ الذي يتم عرضه على نوع الطلب:
- الطلبات العادية: تعرض واجهة برمجة التطبيقات StandardIntegrityErrorCode.
- الطلبات الكلاسيكية: تعرض واجهة برمجة التطبيقات IntegrityErrorCode.
استراتيجيات إعادة المحاولة
استخدِم الفاصل الزمني المتزايد لعمليات Play Integrity التي تتم في الخلفية ولا تؤثّر في تجربة المستخدم أثناء تنقّله في الجلسة.
على سبيل المثال، من المناسب تنفيذ ذلك عند الموافقة على عمليات شراء جديدة لأنّ هذه العملية يمكن أن تحدث في الخلفية، ولا يلزم أن يتم الاعتراف بها في الوقت الفعلي في حال حدوث خطأ.
بعد المحاولة الأولى غير الناجحة، ابدأ بفاصل زمني أولي مدته 5 ثوانٍ قبل إعادة المحاولة.
نفِّذ استراتيجية إعادة المحاولة مع الحد الأقصى لعدد المحاولات كأحد شروط الخروج باستخدام تأخير متزايد أسيًا في كل مرة (10 ثوانٍ أو 20 ثانية).
أثناء تنفيذ محاولات إعادة المحاولة هذه، تحقَّق من الاتصال بالشبكة ولا تصعِّب على الجهاز.
إذا استمر ظهور أخطاء بعد ثلاث محاولات إعادة، تعامل مع النتيجة كما يلي: إذا تعذّر على العميل اجتياز جميع عمليات التحقّق من السلامة. يمكن أن يحدث الخطأ لعدة أسباب، بما في ذلك (على سبيل المثال لا الحصر): جهاز محمّل بتطبيقات كثيرة أو مشاكل في الاتصال بالشبكة أو محاولة من أحد المهاجمين.
قيم رموز الخطأ لمكتبة Java
قيم رموز الخطأ الإضافية للمكتبة الأصلية
رموز الخطأ التي يمكن إعادة المحاولة بشأنها
ويعود سبب حدوث هذه الأخطاء أحيانًا إلى ظروف عابرة، وبالتالي عليك إعادة محاولة إجراء المكالمة.
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 لمعالجة عمليات السلامة في Unity 1.3.0 أو الإصدارات الأحدث، وحزمة تطوير البرامج Play Core Native SDK 1.13.0 أو الإصدارات الأحدث.
الحلّ المحتمل
يعيد المحاولة باستخدام خوارزمية الرقود الأسي الثنائي.
انظر أيضًا
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
.
طول الرقم الخاص قصير جدًا. يجب أن يكون المفتاح العشوائي 16 بايت على الأقل قبل ترميز base64.
الحلّ المحتمل
يُرجى إعادة المحاولة باستخدام رقم مميّز عشوائي أطول.
NONCE_TOO_LONG
(رمز الخطأ -11)
ملاحظة: لا يتم تسجيل هذا الإجراء إلا للطلبات الكلاسيكية من خلال
IntegrityErrorCode
.
طول الرقم الخاص طويل جدًا. يجب أن يكون مفتاح ال nonce أقصر من 500 بايت قبل ترميزه باستخدام ترميز base64.
الحلّ المحتمل
يُرجى إعادة المحاولة باستخدام رقم تعريف عشوائي أقصر.
NONCE_IS_NOT_BASE64
(رمز الخطأ -13)
ملاحظة: لا يتم تسجيل هذا الإجراء إلا للطلبات الكلاسيكية من خلال
IntegrityErrorCode
.
لا يتم ترميز الرقم التعريفي المؤقت كسلسلة base64 آمنة على الويب بدون استخدام علامات اقتباس.
الحلّ المحتمل
يُرجى إعادة المحاولة باستخدام مفتاح عشوائي بالتنسيق الصحيح.
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)
رقم المشروع على السحابة الإلكترونية الذي تم تقديمه غير صالح.
الحلّ المحتمل
استخدِم رقم مشروع Cloud لمشروع 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 لبرنامج Unity 1.3.0 أو الإصدارات الأحدث، وحزمة تطوير البرامج Play Core Native SDK 1.13.0 أو الإصدارات الأحدث.
الحلّ المحتمل
اطلب موفّر رمز مميّز جديد للسلامة.
STANDARD_INTEGRITY_INITIALIZATION_NEEDED
(رمز الخطأ -101)
لم يتم إعداد StandardIntegrityManager
.
الحلّ المحتمل
يُرجى الاتصال بـ StandardIntegrityManager_init()
أولاً.
انظر أيضًا
يُرجى الاطّلاع على INTEGRITY_INITIALIZATION_NEEDED
للطلبات الكلاسيكية.
STANDARD_INTEGRITY_INVALID_ARGUMENT
(رمز الخطأ -103)
تم تمرير وسيطة غير صالحة إلى Standard Integrity API.
الحلّ المحتمل
يُرجى إعادة المحاولة باستخدام الوسيطة الصحيحة.
انظر أيضًا
يُرجى الاطّلاع على INTEGRITY_INVALID_ARGUMENT
للطلبات الكلاسيكية.