2013-06-07 9 views
8

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

असल में, टोकन हम यह कर रहे हैं बचाने के लिए:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { 
    NSString *token = [[[deviceToken description] 
      stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]] 
      stringByReplacingOccurrencesOfString:@" " withString:@""]; 
    [[NSUserDefaults standardUserDefaults] setValue:token forKey:kDeviceTokenKey]; 
} 

लेकिन समस्या यह है, NSUserDefaults जब एप्लिकेशन को उपकरण से निकालना मिटा दिया जाता है, लेकिन धक्का सेटिंग्स नहीं हैं। तो यह फिर से नहीं पूछेगा, इस प्रकार प्रतिनिधि विधि को फिर से कॉल न करें, इस प्रकार मेरे पास अब टोकन नहीं है, लेकिन पुश अभी भी सक्रिय है।

क्या वर्णित परिदृश्य में टोकन वापस पाने का कोई मौका है?

+0

आप 'रजिस्टरफॉररोटोटोटेशन टाइप्स:' विधि कहां से कॉल करते हैं? – Stas

+0

'didFinishLaunchingWithOptions' विधि –

उत्तर

23
Push Notification Programming Guide

एक आवेदन हर बार लॉन्च रजिस्टर और उसके प्रदाता वर्तमान टोकन देना चाहिए से

। यह रजिस्टर को कॉल करता हैफॉररोटोटोटेशन टाइप: पंजीकरण प्रक्रिया को बंद करने का तरीका।

डिवाइस टोकन का अनुरोध करके और प्रदाता को पास करने के लिए प्रत्येक अपना एप्लिकेशन लॉन्च करने के समय, आप यह सुनिश्चित करने में सहायता करते हैं कि प्रदाता डिवाइस के लिए वर्तमान टोकन है। यदि कोई उपयोगकर्ता डिवाइस या कंप्यूटर पर बैकअप को पुनर्स्थापित करता है, जो कि (उदाहरण के लिए, उपयोगकर्ता डेटा को किसी नए डिवाइस या कंप्यूटर पर माइग्रेट करता है) के लिए बनाया गया था, तो वह या उसे कम से कम एक बार एप्लिकेशन लॉन्च करना होगा इसके लिए सूचनाएं फिर से प्राप्त करें। यदि उपयोगकर्ता बैकअप डेटा को किसी नए डिवाइस या कंप्यूटर पर पुनर्स्थापित करता है, या ऑपरेटिंग सिस्टम को पुनर्स्थापित करता है, तो डिवाइस टोकन परिवर्तन। इसके अलावा, डिवाइस टोकन को कैश न करें और इसे अपने प्रदाता को दें; जब भी आपको इसकी आवश्यकता हो तब सिस्टम से हमेशा टोकन प्राप्त करें। यदि आपका आवेदन पहले पंजीकृत है, तो पंजीकरण करने के लिए कॉल करें फ़ोरमोटोटोटेशन प्रकार: ऑपरेटिंग सिस्टम में परिणाम अतिरिक्त ओवरहेड के बिना तुरंत प्रतिनिधि को डिवाइस टोकन पास कर रहा है।

अपने प्रश्न का उत्तर देने के लिए: प्रत्येक लॉन्च पर registerForRemoteNotificationTypes: पर कॉल करें और नवीनतम टोकन का उपयोग करें।

+0

धन्यवाद, आप बिल्कुल सही हैं। मैंने 'डीफेल' विधि लागू की और जैसा कि यह निकला, यह केवल एक प्रमाणपत्र समस्या थी (टीम प्रोविजनिंग प्रोफाइल काम नहीं करता) –

+0

क्या आप इसे कार्यान्वित करने के तरीके पर विस्तार कर सकते हैं? जब मैं हटा देता हूं, तो कुछ कारणों से नया टोकन पंजीकृत नहीं होता है। – John

2

अपने आवेदन के प्रत्येक लॉन्च पर registerForRemoteNotificationTypes पर कॉल करें ताकि didRegisterForRemoteNotificationsWithDeviceToken विधि कॉल प्राप्त हो और आप एपीएनएस से हर बार अपना डिवाइस टोकन प्राप्त करेंगे। और आपके एप्लिकेशन के लिए डिवाइस टोकन प्रत्येक लॉन्च पर समान है।

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