2012-07-10 11 views
10

GCM docs से:जीसीएम दस्तावेज़ ऐप अपडेट पर पंजीकरण को अमान्य करने की सलाह क्यों देते हैं?

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

डॉक्स राज्य जब कि "यह नए संस्करण के साथ काम करने के लिए गारंटी नहीं है" कि एक GCM सीमा या वे संस्करण के लिए संस्करण से मेरी एप्लिकेशन के व्यवहार में संभावित परिवर्तनों के बारे में अटकलें कर रहे हैं?

ऐप की तरफ से मैं कम या कम गारंटी दे सकता हूं कि जीसीएम के संबंध में लगातार संस्करण ठीक से काम करेंगे और जो भी ऐप-विशिष्ट संदेश प्रारूप मैं concoct। क्या मुझे अभी भी पुनः पंजीकरण करने की आवश्यकता है?

यदि हां, तो मुझे "नया संस्करण": संस्करण कोड या संस्करण का नाम जानने के लिए किस का उपयोग करना चाहिए? मेरी समझ यह है कि ये "मुक्त रूप" हैं और ऐप डेवलपर उन्हें जो भी मूल्य चुनता है उसे सेट करता है। तो, अगर मैं स्टोर में ऐप अपडेट डालता हूं लेकिन वर्जननाम या वर्जन कोड नहीं बदलता; क्या मुझे जीसीएम के साथ फिर से पंजीकरण करने की आवश्यकता होगी?

यह में क्या GCM वास्तव में चाहता एप्लिकेशन हर बार एक नई स्थापना पहली बार के लिए शुरू की है पुन: पंजीकृत करने के लिए की तरह लगता है (और हर बार यह क्रमिक पंजीकरण पूरा हो गया है जब तक शुरू की है), मूल्यों की परवाह किए बिना वर्जननाम और वर्जन कोड। क्या यह एक सटीक बयान है?

उत्तर

13

मुझे याद नहीं है कि हमने इसे कहाँ पढ़ा है, लेकिन यह हमारे ध्यान में आया कि जब कोई ऐप इंस्टॉल नहीं होता है, तो Google को पंजीकरण आईडी को अमान्य कर दिया जाएगा।

यह समझ में आता है कि ऐप वास्तव में अनइंस्टॉल किया गया है, लेकिन यदि डिवाइस वास्तव में अद्यतन पर मध्य में था, तो यह जल्दी से अनइंस्टॉल और पुनः इंस्टॉल करता है, इसलिए Google गलती से सोच सकता है कि पंजीकरण को अमान्य घोषित करने की आवश्यकता है।

समाधान आपके ऐप पंजीकरण आईडी की गारंटी के लिए, अद्यतन के बाद पहले लॉन्च पर फिर से पंजीकरण करना प्रतीत होता है।

संस्करण कोड वास्तव में एक स्वतंत्र रूप से चयनित नंबर है, लेकिन आप इसे Google Play पर प्रकाशित हर नए संस्करण पर बढ़ाएं, ताकि आप जांच सकें कि वह नंबर बदल गया है, और पता है कि आपका ऐप अपडेट किया गया है और आपको इसकी आवश्यकता है पंजीकरण रीफ्रेश करने के लिए।

संपादित करें:

यह एक बहुत अधिक डॉक्स इस व्यवहार की व्याख्या और कैसे ठीक कोड लिखने के साथ, C2DM के उत्तराधिकारी GCM के लिए प्रासंगिक भी है।

सभी विवरणों के साथ देखें: http://developer.android.com/google/gcm/client.html

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

 if (checkPlayServices()) { 
      gcm = GoogleCloudMessaging.getInstance(this); 
      regid = getRegistrationId(context); 

      if (regid.isEmpty()) { 
       registerInBackground(); 
      } 
     } else { 
      Log.i(TAG, "No valid Google Play Services APK found."); 
     } 
+1

इस अच्छी जानकारी के लिए धन्यवाद। जब "पहला लॉन्च" परिदृश्य पता चला है, तो क्या यह फिर से GCMRegistrar.register() को कॉल करने के लिए पर्याप्त है या क्या मुझे स्पष्ट रूप से पंजीकरण रद्द करने का प्रयास करना चाहिए? मैं पूर्व का अनुमान लगा रहा हूं, लेकिन लगा कि मैं पूछूंगा। – jph

+1

बस पंजीकरण फिर से कॉल करना पर्याप्त होगा, लेकिन अपने सर्वर – marmor

+0

पर नई पंजीकरण आईडी को पास करना न भूलें, मैंने आपकी टिप का परीक्षण करने का प्रयास किया। मैंने उसे नहीं देखा। पंजीकरण आईडी को नया संस्करण स्थापित करने के बाद बदला नहीं गया था और नई आईडी –

0

मैं संस्करण कोड का उपयोग अनुप्रयोग अद्यतन पता लगाने के लिए होगा। जब भी आप Google Play store में कोई नया संस्करण सबमिट करते हैं, तो संस्करण कोड को बदलने के लिए मजबूर होना पड़ता है, इसलिए आप ऐप के संस्करण का पता लगाने के लिए उस पर भरोसा कर सकते हैं।