2012-08-23 16 views
34

इसी प्रकार के बजाय एप्लिकेशन आइकन पर क्लिक करें अधिसूचना डेटा प्राप्त करने के लिए: How do I access remote push notification data on applicationDidBecomeActive?आईओएस पुश अधिसूचना - जब आप अधिसूचना इस सवाल का

लेकिन विभिन्न आप अधिसूचना डेटा का उपयोग कैसे कर सकते हैं जब आप applicationDidBecomeActive में हैं और यदि आपने पुश अधिसूचना के बजाय ऐप आइकन पर क्लिक किया है।

प्रवाह है: आप पर push notification तो didReceiveRemoteNotification ट्रिगर किया जाएगा क्लिक करते हैं, लेकिन यदि आप मूल एप्लिकेशन आइकन पर क्लिक करें, केवल applicationDidBecomeActive ट्रिगर करेगा, didReceiveRemoteNotification बुलाया नहीं किया जाएगा।

मैं बाद के मामले की तलाश में हूं तो मैं पुश अधिसूचना डेटा तक कैसे पहुंच सकता हूं।

(दोनों मामले एप्लिकेशन संभालने पृष्ठभूमि में है और अभी तक नहीं मार डाला।)

+2

यह संभव नहीं है। अधिसूचना डेटा केवल ऐप को पास किया जाता है यदि यह अधिसूचना के जवाब में लॉन्च किया गया है और ऐप आइकन पर टैप करते समय नहीं। –

+1

आपकी पुश अधिसूचनाओं के साथ आप किस जानकारी को पास करते हैं? मेरे लिए ऐसा लगता है जैसे आपने डिज़ाइन दोष बनाया है यदि आप पहले एप पुश अधिसूचना प्राप्त किए बिना आसानी से अपना ऐप नहीं खोल सकते हैं। – xci

उत्तर

35

आप होमस्क्रीन से एप्लिकेशन को लॉन्च करके दूरस्थ धक्का पेलोड नहीं मिल सकता है।

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

+2

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

-6

आप इस तरह अपने AppDelegate कुछ में launchWithOptions विधि में अधिसूचना मिलना चाहिए:

NSDictionary *remoteNotif = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey]; 

    if(remoteNotif != nil){ 
     //Handle your notification 
    } 
+1

ऐप वर्तमान में पृष्ठभूमि में है, और मैं ऐप पर अधिसूचना के बजाय होमस्क्रीन से क्लिक करता हूं। – Howard

6

@fannheyward जवाब बिल्कुल सही है। ऐप आइकन टैप करके एप्लिकेशन लॉन्च होने पर आपको पेलोड नहीं मिल सकता है।

मुझे एक विचार है, अगर आपको पता चल जाए कि ऐप आइकन टैप करके ऐप लॉन्च होने पर कुछ अधिसूचना लंबित है। इस ज्ञान के साथ आपका ऐप आपके सर्वर से पेलोड ला सकता है।

आप इस तरह की अधिसूचना में और आवेदन पर "बैज" सेट कर सकते हैंडिडबैकएक्टिव आप यह जानने के लिए [एप्लिकेशन एप्लिकेशन आइकनबैज नम्बर]> 0 देख सकते हैं कि कुछ अधिसूचना सक्रिय है। अपने सर्वर से पेलोड प्राप्त करने में कठिनाई के बाद आप की तरह कृपया ध्यान दें

नीचे
[UIApplication sharedApplication] setApplicationIconBadgeNumber:1]; 
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]; 

0 के लिए सेट कर सकते हैं: इसका मतलब यह है अपने अनुप्रयोग इस पर दिखाया गया बैज होगा जब सूचना प्राप्त होने पर। मुझे व्यवहार से यकीन नहीं है जब उपयोगकर्ता द्वारा सेटिंग्स से बैज अक्षम किया जाता है।

+0

मैं एक ही दृष्टिकोण का उपयोग कर रहा हूं। ध्यान दें कि उपयोगकर्ता * आपके एप के लिए अधिसूचना अलर्ट सक्षम हो सकता है लेकिन * बैज अक्षम * हो सकता है। व्यावहारिक रूप से, हालांकि ... वह कौन करता है? ;) – Timo

+0

के बारे में >> मुझे व्यवहार से यकीन नहीं है जब बैज को उपयोगकर्ता द्वारा सेटिंग से अक्षम किया जाता है - एप्लिकेशन को अभी भी सही गिनती ईवेंट मिल सकता है यदि ऐप आइकन –

3

यदि आपका एप्लिकेशन लक्ष्य आईओएस 7 पर है, तो आप केवल तभी कर सकते हैं जब आवेदन बैकग्राउड में जिंदा है।

एक्सकोड पर क्षमताओं की सेटिंग्स में, आपको पृष्ठभूमि मोड> दूरस्थ सूचनाएं सक्षम करना चाहिए, और नीचे कोड लिखना चाहिए।

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler 
{ 
    // save userInfo in NSUserDefaults 
    completionHandler(UIBackgroundFetchResultNoData); 
} 

आप इसे परीक्षण करना चाहते हैं, यह सर्वर की ओर से https://github.com/acoomans/SimulatorRemoteNotifications

  • उपयोग करने के लिए उपयोगी होगा, बनाना 1
के एक मूल्य के साथ सामग्री से उपलब्ध गुण सेट करने के लिए सुनिश्चित

इस काम के लिए मुझे पृष्ठभूमि लाने वाले बॉक्स को भी देखना पड़ा।

+0

पर बैज प्रदर्शित नहीं होता है, मैंने आईओएस 8 के साथ आईफोन 6 पर यह कोशिश की, सामग्री-उपलब्ध = 1, पृष्ठभूमि मोड रिमोट अधिसूचना, पृष्ठभूमि में ऐप। जब अधिसूचना प्राप्त होती है तो didReceieveRemoteNotification कहा जाता है। ऐप खोला जाने पर इसे कॉल नहीं किया जाता है। यह सवाल का जवाब नहीं देता है। – wyu

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