Play Integrity API के गड़बड़ी कोड मैनेज करना

अगर आपका ऐप्लिकेशन, Play Integrity API से अनुरोध करता है और कॉल नहीं हो पाता है, तो आपके ऐप्लिकेशन को गड़बड़ी का कोड मिलता है. ये गड़बड़ियां कई वजहों से हो सकती हैं. जैसे, खराब नेटवर्क कनेक्शन जैसी पर्यावरण से जुड़ी समस्याएं, एपीआई इंटिग्रेशन से जुड़ी समस्याएं या नुकसान पहुंचाने वाली गतिविधि और सक्रिय हमले. अनुरोध के टाइप के हिसाब से, गड़बड़ी का कोड इस तरह से मिलता है:

  • स्टैंडर्ड अनुरोध: एपीआई, StandardIntegrityErrorCode दिखाता है.
  • क्लासिक अनुरोध: एपीआई, IntegrityErrorCode दिखाता है.

फिर से कोशिश करने की रणनीतियां

Play Integrity API के उन ऑपरेशन के लिए एक्सपोनेंशियल बैकऑफ़ का इस्तेमाल करें जो बैकग्राउंड में होते हैं. साथ ही, जब उपयोगकर्ता सेशन में हो, तब उसके अनुभव पर असर न डालें.

उदाहरण के लिए, नई खरीदारी की पुष्टि करते समय इस सुविधा को लागू करना सही होता है. ऐसा इसलिए, क्योंकि यह कार्रवाई बैकग्राउंड में हो सकती है. साथ ही, अगर कोई गड़बड़ी होती है, तो पुष्टि रीयल टाइम में नहीं की जानी चाहिए.

पहली बार अनुरोध पूरा न होने पर, फिर से कोशिश करने से पहले पांच सेकंड का इंतज़ार करें.

फिर से कोशिश करने की रणनीति लागू करें. इसमें, कोशिशों की ज़्यादा से ज़्यादा संख्या को एक्ज़िट की शर्त के तौर पर इस्तेमाल किया जाता है. साथ ही, हर बार देरी को तेज़ी से बढ़ाया जाता है (10 सेकंड, 20 सेकंड).

फिर से कोशिश करते समय, नेटवर्क कनेक्शन की जांच करें. साथ ही, डिवाइस पर ज़्यादा लोड न डालें.

अगर तीन बार कोशिश करने के बाद भी गड़बड़ियां दिखती हैं, तो इसका मतलब है कि क्लाइंट, इंटिग्रिटी की सभी जांचों में फ़ेल हो गया है. यह गड़बड़ी कई वजहों से हो सकती है. जैसे, डिवाइस पर ज़्यादा लोड होना, नेटवर्क कनेक्शन की समस्याएं या किसी हमलावर की कोशिश.

Java लाइब्रेरी के लिए गड़बड़ी कोड की वैल्यू

IntegrityErrorCode StandardIntegrityErrorCode
-1 API_NOT_AVAILABLE API_NOT_AVAILABLE
-2 PLAY_STORE_NOT_FOUND PLAY_STORE_NOT_FOUND
-3 NETWORK_ERROR NETWORK_ERROR
-4 PLAY_STORE_ACCOUNT_NOT_FOUND
-5 APP_NOT_INSTALLED APP_NOT_INSTALLED
-6 PLAY_SERVICES_NOT_FOUND PLAY_SERVICES_NOT_FOUND
-7 APP_UID_MISMATCH APP_UID_MISMATCH
-8 TOO_MANY_REQUESTS TOO_MANY_REQUESTS
-9 CANNOT_BIND_TO_SERVICE CANNOT_BIND_TO_SERVICE
-10 NONCE_TOO_SHORT
-11 NONCE_TOO_LONG
-12 GOOGLE_SERVER_UNAVAILABLE GOOGLE_SERVER_UNAVAILABLE
-13 NONCE_IS_NOT_BASE64
-14 PLAY_STORE_VERSION_OUTDATED PLAY_STORE_VERSION_OUTDATED
-15 PLAY_SERVICES_VERSION_OUTDATED PLAY_SERVICES_VERSION_OUTDATED
-16 CLOUD_PROJECT_NUMBER_IS_INVALID CLOUD_PROJECT_NUMBER_IS_INVALID
-17 CLIENT_TRANSIENT_ERROR REQUEST_HASH_TOO_LONG
-18 CLIENT_TRANSIENT_ERROR
-19 INTEGRITY_TOKEN_PROVIDER_INVALID
-100 INTERNAL_ERROR INTERNAL_ERROR

नेटिव लाइब्रेरी के लिए अतिरिक्त गड़बड़ी कोड वैल्यू

IntegrityErrorCode StandardIntegrityErrorCode
-100 INTEGRITY_INTERNAL_ERROR STANDARD_INTEGRITY_INTERNAL_ERROR
-101 INTEGRITY_INITIALIZATION_NEEDED STANDARD_INTEGRITY_INITIALIZATION_NEEDED
-102 INTEGRITY_INITIALIZATION_FAILED STANDARD_INTEGRITY_INITIALIZATION_FAILED
-103 INTEGRITY_INVALID_ARGUMENT STANDARD_INTEGRITY_INVALID_ARGUMENT

फिर से कोशिश करने पर ठीक होने वाली गड़बड़ियों के कोड

कभी-कभी ये गड़बड़ियां कुछ समय के लिए होती हैं. इसलिए, आपको कॉल फिर से करनी चाहिए.

NETWORK_ERROR (गड़बड़ी कोड -3)

इस गड़बड़ी का मतलब है कि डिवाइस और Play सिस्टम के बीच नेटवर्क कनेक्शन में कोई समस्या हुई.

समस्या हल करने का तरीका

इस समस्या को ठीक करने के लिए, उपयोगकर्ता से नेटवर्क कनेक्टिविटी की जांच करने के लिए कहें. साथ ही, जिस कार्रवाई की वजह से गड़बड़ी हुई है उसके आधार पर, सामान्य तौर पर फिर से कोशिश करने या एक्सपोनेन्शियल बैकऑफ़ का इस्तेमाल करने के लिए कहें.

यह भी देखें:

क्लासिक अनुरोधों के लिए NETWORK_ERROR.

TOO_MANY_REQUESTS (गड़बड़ी कोड -8)

कॉल करने वाला ऐप्लिकेशन, एपीआई को बहुत ज़्यादा अनुरोध कर रहा है और उसे थ्रॉटल कर दिया गया है. इसके अलावा, ऐसा भी हो सकता है कि आपके ऐप्लिकेशन ने हर दिन के लिए अनुरोधों का तय कोटा पार कर लिया हो.

समस्या हल करने का तरीका

  1. एक्स्पोनेंशियल बैकऑफ़ के साथ फिर से कोशिश करें.
  2. अनुरोधों की हर दिन की ज़्यादा से ज़्यादा संख्या बढ़ाने का अनुरोध करें

यह भी देखें:

क्लासिक अनुरोधों के लिए TOO_MANY_REQUESTS.

GOOGLE_SERVER_UNAVAILABLE (गड़बड़ी कोड -12)

Google के इंटरनल सर्वर में कोई ऐसी गड़बड़ी हुई है जिसके बारे में जानकारी नहीं है.

समस्या हल करने का तरीका

एक्स्पोनेंशियल बैकऑफ़ के साथ फिर से कोशिश करें. अगर यह लगातार काम नहीं करता है, तो समस्या की जानकारी दें.

यह भी देखें:

क्लासिक अनुरोधों के लिए GOOGLE_SERVER_UNAVAILABLE.

CLIENT_TRANSIENT_ERROR (गड़बड़ी कोड -18)

क्लाइंट डिवाइस में कुछ समय के लिए कोई गड़बड़ी हुई है.

स्टैंडर्ड एपीआई अनुरोधों के लिए, यह सुविधा Kotlin और Java के लिए Play Integrity API लाइब्रेरी के 1.3.0 वर्शन, Unity के लिए Google Play Integrity Plugin के 1.3.0 या इससे ज़्यादा वर्शन, और Play Core Native SDK के 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 Store के वर्शन को ऐसे वर्शन पर अपडेट करता है जो काम करता है, तो शुरुआती कार्रवाई को मैन्युअल तरीके से फिर से आज़माने पर काम हो सकता है.

API_NOT_AVAILABLE (गड़बड़ी कोड -1)

डिवाइस पर Play Store का पुराना वर्शन इंस्टॉल हो सकता है. साथ ही, Integrity API उपलब्ध नहीं हो सकता. ऐसा भी हो सकता है कि Google Play Console में Integrity API चालू न हो.

समस्या हल करने का तरीका

  • पक्का करें कि Google Play Console में Integrity API चालू हो.
  • उपयोगकर्ता से Play Store को अपडेट करने के लिए कहें.

यह भी देखें:

क्लासिक अनुरोध के लिए, API_NOT_AVAILABLE देखें.

PLAY_STORE_NOT_FOUND (गड़बड़ी कोड -2)

डिवाइस पर Play Store का कोई आधिकारिक ऐप्लिकेशन नहीं मिला.

समस्या हल करने का तरीका

उपयोगकर्ता से Google Play Store इंस्टॉल करने या चालू करने के लिए कहें.

यह भी देखें:

क्लासिक अनुरोध के लिए, PLAY_STORE_NOT_FOUND देखें.

PLAY_STORE_ACCOUNT_NOT_FOUND (गड़बड़ी कोड -4)

ध्यान दें: यह सिर्फ़ IntegrityErrorCode के ज़रिए किए गए क्लासिक अनुरोध के लिए रिपोर्ट किया जाता है.

डिवाइस पर कोई Play Store खाता नहीं मिला. ध्यान दें कि Play Integrity API अब बिना पुष्टि किए गए अनुरोधों के साथ काम करता है. इस गड़बड़ी कोड का इस्तेमाल सिर्फ़ Play Store के पुराने वर्शन के लिए किया जाता है.

समस्या हल करने का तरीका

उपयोगकर्ता से Google Play Store को अपडेट करने और उसमें साइन इन करने के लिए कहें.

APP_NOT_INSTALLED (गड़बड़ी कोड -5)

कॉल करने वाला ऐप्लिकेशन इंस्टॉल नहीं है. कोई गड़बड़ी हुई है. ऐसा हो सकता है कि हमला हुआ हो.

समस्या हल करने का तरीका

कार्रवाई नहीं की जा सकती. नतीजे को इस तरह से ट्रीट करें जैसे क्लाइंट ने सभी इंटिग्रिटी चेक पास नहीं किए हैं.

यह भी देखें:

क्लासिक अनुरोध के लिए, APP_NOT_INSTALLED देखें.

PLAY_SERVICES_NOT_FOUND (गड़बड़ी कोड -6)

Play सेवाएं उपलब्ध नहीं हैं या उन्हें अपडेट करने की ज़रूरत है.

समस्या हल करने का तरीका

उपयोगकर्ता से Play services को इंस्टॉल, अपडेट या चालू करने के लिए कहें.

यह भी देखें:

क्लासिक अनुरोध के लिए, APP_NOT_INSTALLED देखें.

APP_UID_MISMATCH (गड़बड़ी का कोड -7)

कॉल करने वाले ऐप्लिकेशन का यूआईडी (यूज़र आईडी), Package Manager के यूआईडी से मेल नहीं खाता.

समस्या हल करने का तरीका

कार्रवाई नहीं की जा सकती. नतीजे को इस तरह से ट्रीट करें जैसे क्लाइंट ने सभी इंटिग्रिटी चेक पास नहीं किए हैं.

यह भी देखें:

क्लासिक अनुरोध के लिए, APP_UID_MISMATCH देखें.

CANNOT_BIND_TO_SERVICE (गड़बड़ी कोड -9)

Play Store में सेवा से बाइंड नहीं किया जा सका. ऐसा डिवाइस पर Play Store का पुराना वर्शन इंस्टॉल होने की वजह से हो सकता है.

समस्या हल करने का तरीका

उपयोगकर्ता से Google Play Store को अपडेट करने के लिए कहें.

यह भी देखें:

क्लासिक अनुरोध के लिए, CANNOT_BIND_TO_SERVICE देखें.

NONCE_TOO_SHORT (गड़बड़ी कोड -10)

ध्यान दें: यह सिर्फ़ IntegrityErrorCode के ज़रिए किए गए क्लासिक अनुरोध के लिए रिपोर्ट किया जाता है.

नॉन्स की लंबाई बहुत कम है. base64 कोड में बदलने से पहले, नॉनस का साइज़ कम से कम 16 बाइट होना चाहिए.

समस्या हल करने का तरीका

लंबा नॉनस इस्तेमाल करके, फिर से कोशिश करें.

NONCE_TOO_LONG (गड़बड़ी कोड -11)

ध्यान दें: यह सिर्फ़ IntegrityErrorCode के ज़रिए किए गए क्लासिक अनुरोध के लिए रिपोर्ट किया जाता है.

नॉन्स की लंबाई बहुत ज़्यादा है. base64 एन्कोडिंग से पहले, नॉन्स का साइज़ 500 बाइट से कम होना चाहिए.

समस्या हल करने का तरीका

छोटे नॉनस का इस्तेमाल करके, फिर से कोशिश करें.

NONCE_IS_NOT_BASE64 (गड़बड़ी का कोड -13)

ध्यान दें: यह सिर्फ़ IntegrityErrorCode के ज़रिए किए गए क्लासिक अनुरोध के लिए रिपोर्ट किया जाता है.

नॉन्स को base64 वेब-सुरक्षित नो-रैप स्ट्रिंग के तौर पर एन्कोड नहीं किया गया है.

समस्या हल करने का तरीका

सही फ़ॉर्मैट में नॉनस डालकर फिर से कोशिश करें.

PLAY_STORE_VERSION_OUTDATED (गड़बड़ी का कोड -14)

Google Play Store ऐप्लिकेशन को अपडेट करना ज़रूरी है.

समस्या हल करने का तरीका

उपयोगकर्ता से Google Play Store को अपडेट करने के लिए कहें.

यह भी देखें:

क्लासिक अनुरोध के लिए, PLAY_STORE_VERSION_OUTDATED देखें.

PLAY_SERVICES_VERSION_OUTDATED (गड़बड़ी का कोड -15)

Google Play services को अपडेट करना ज़रूरी है.

समस्या हल करने का तरीका

उपयोगकर्ता से Google Play services को अपडेट करने के लिए कहें.

यह भी देखें:

क्लासिक अनुरोध के लिए, PLAY_SERVICES_VERSION_OUTDATED देखें.

CLOUD_PROJECT_NUMBER_IS_INVALID (गड़बड़ी का कोड -16)

दिया गया क्लाउड प्रोजेक्ट नंबर अमान्य है.

समस्या हल करने का तरीका

उस 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 Store ऐप्लिकेशन का डेटा मिटा दिया है. इससे टोकन देने वाली कंपनी हट जाती है.

यह गड़बड़ी कोड सिर्फ़ Standard API के अनुरोधों के लिए उपलब्ध है. Kotlin और Java प्रोग्रामिंग भाषाओं के लिए, यह लाइब्रेरी वर्शन 1.3.0 से काम करता है. साथ ही, Google Play Integrity Plugin for 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 देखें.