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