2013-06-26 5 views
16

हम एक जीसीएम कार्यान्वयन पर काम कर रहे हैं और ध्यान दिया है कि एक ऐप इंस्टॉलेशन को सौंपा गया डिवाइस पता, ऐप अनइंस्टॉल किए जाने पर भी लाइव हो सकता है।पुराने जीसीएम टोकन अनइंस्टॉल करने के बाद भी रहते हैं?

तो हम एक ऐप इंस्टॉल करते हैं, टोकन ए प्राप्त करते हैं, डिवाइस किसी विशेष अलर्ट प्रकार 1 की सदस्यता लेता है, बड़ी सफलता के साथ टोकन ए संदेश। फिर हम ऐप को अनइंस्टॉल करते हैं।

कोई भी हम पुनः स्थापित नहीं करते हैं, टोकन बी प्राप्त करते हैं, और डिवाइस किसी विशेष अलर्ट प्रकार 2 की सदस्यता लेता है, हम बड़ी सफलता के साथ टोकन बी संदेश भेजते हैं।

अब चूंकि हमने टोकन ए को एक संदेश नहीं भेजा था जब ऐप अनइंस्टॉल किया गया था और पुनर्स्थापित किया गया था, हम अभी भी टोकन दोनों को संदेश भेज सकते हैं, और ऐप उन्हें दोनों प्राप्त करता है।

क्या हमने ऐप को अनइंस्टॉल करते समय टोकन ए को संदेश देने का प्रयास किया था, तो हम इसे Google की प्रतिक्रिया से साफ़ कर सकते थे।

क्या यह जानने का कोई तरीका है कि टोकन ए तकनीकी रूप से मान्य नहीं है?

उत्तर

5

मुझे लगता है कि 'टोकन' द्वारा आप वास्तव में पंजीकरण आईडी का जिक्र कर रहे हैं। पुरानी पंजीकरण आईडी थोड़ी देर के लिए सक्रिय रह सकती है। हालांकि Google आपको बताता है कि आपको अपने भेजे गए संदेश के जवाब में canonical ID के माध्यम से किसी विशेष डिवाइस/ऐप संयोजन के लिए अपने regid को अपडेट करने की आवश्यकता है।

+0

धन्यवाद @ एनटीटी, जो स्टोरिंग पूरी तरह से काम करता है। "जीसीएम इन परिस्थितियों से आसानी से ठीक होने के लिए 'कैननिकल पंजीकरण आईडी' नामक एक सुविधा प्रदान करता है। एक कैनोनिकल पंजीकरण आईडी को आपके आवेदन द्वारा अनुरोधित अंतिम पंजीकरण की आईडी माना जाता है। यह वह आईडी है जिसे सर्वर को संदेश भेजने के दौरान उपयोग करना चाहिए उपकरण।" –

+0

बस कुछ उल्लेख करने के लिए; Google के जीसीएम सर्वर अपडेट के बाद, आपको उसी डिवाइस के लिए एक ही पंजीकरण आईडी मिल जाएगी। – EvanBlack

10
आधिकारिक दस्तावेज से

:

How uninstalled client app unregistration works

एक ग्राहक एप्लिकेशन स्वचालित रूप से अपंजीकृत के बाद यह की स्थापना रद्द हो सकता है। हालांकि, यह प्रक्रिया तुरंत नहीं होती है। क्या इस परिदृश्य में होता है:

  1. अंत उपयोगकर्ता ग्राहक एप्लिकेशन अनइंस्टॉल।
  2. ऐप सर्वर जीसीएम कनेक्शन सर्वर को एक संदेश भेजता है।
  3. जीसीएम कनेक्शन सर्वर डिवाइस पर जीसीएम क्लाइंट को संदेश भेजता है।
  4. डिवाइस पर जीसीएम क्लाइंट संदेश प्राप्त करता है और पता लगाता है कि क्लाइंट ऐप अनइंस्टॉल किया गया है; पहचान विवरण उस मंच पर निर्भर करता है जिस पर क्लाइंट ऐप चल रहा है।
  5. डिवाइस पर जीसीएम क्लाइंट जीसीएम कनेक्शन सर्वर को सूचित करता है जो क्लाइंट ऐप अनइंस्टॉल किया गया था।
  6. जीसीएम कनेक्शन सर्वर हटाने के लिए पंजीकरण टोकन को चिह्नित करता है।
  7. ऐप सर्वर संदेश जीसीएम को भेजता है।
  8. जीसीएम ऐप सर्वर पर एक गैर-पंजीकृत त्रुटि संदेश देता है।
  9. ऐप सर्वर को पंजीकरण टोकन को हटाना चाहिए।

नोट है कि यह कुछ समय लग सकता पंजीकरण टोकन पूरी तरह से GCM से हटा होने के लिए।इस प्रकार यह संभव है कि उपरोक्त चरणके दौरान भेजे गए संदेश प्रतिक्रिया के रूप में एक मान्य संदेश आईडी प्राप्त करें, भले ही संदेश क्लाइंट ऐप पर वितरित नहीं किया जाएगा। आखिरकार, पंजीकरण टोकन हटा दिया जाएगा और सर्वर को ऐप सर्वर से कोई और कार्रवाई की आवश्यकता के बिना, एक पंजीकृत रिपोर्ट त्रुटि, प्राप्त होगी।

हालांकि, यह जाहिरा तौर पर भी हो सकता है कि आप अभी भी अन्य प्रश्न में वर्ष पंजीकरण आईडी के लिए नोटिफिकेशन मिलता है, के रूप में उन राज्य:

इस समस्या के लिए, वहाँ एक कार्यक्षमता "प्रामाणिक आईडी" कहा जाता है:

Canonical IDs

ग्राहक अनुप्रयोग में एक बग एक ही डिवाइस के लिए कई पंजीकरण ट्रिगर करता है तो यह मुश्किल हो सकता है राज्य और क्लाइंट ऐप को मेल करने के लिए डुप्लिकेट संदेशों के साथ समाप्त हो सकता है।

कैननिकल आईडी लागू करने से आप इन स्थितियों से अधिक आसानी से पुनर्प्राप्त कर सकते हैं। एक कैनोनिकल पंजीकरण आईडी क्लाइंट ऐप द्वारा अनुरोधित अंतिम पंजीकरण का पंजीकरण टोकन है। यह आईडी है कि डिवाइस को संदेश भेजने के दौरान सर्वर का उपयोग करना चाहिए।

आप एक पुराने पंजीकरण टोकन का उपयोग संदेश भेजने का प्रयास करते हैं, तो GCM होगा प्रक्रिया सामान्य रूप से अनुरोध है, लेकिन यह में प्रतिक्रिया के registration_id क्षेत्र विहित आईडी शामिल होंगे। पंजीकरण सर्वर को इस सर्वर के साथ संग्रहीत पंजीकरण टोकन को प्रतिस्थापित करने के लिए सुनिश्चित करें, अंततः पुराना पंजीकरण टोकन काम करना बंद कर देगा।

+0

दिलचस्प बात यह है कि हमारे पास जीसीएम द्वारा सक्रिय रूप से विचार किए जाने वाले उपकरणों के बीच बहुत बड़ी विसंगति है, लेकिन जिसके लिए एक वर्ष से अधिक समय तक कोई उपयोगकर्ता गतिविधि नहीं थी। साथ ही, Google Play डैशबोर्ड में सक्रिय डिवाइसों की संख्या उन उपकरणों की संख्या से काफी कम है जिनके लिए जीसीएम संदेश भेजे जाते हैं और कोई विफलता की सूचना नहीं दी जाती है। – silentser

संबंधित मुद्दे