2015-06-16 8 views
9

निलंबित नहीं किया गया है, मेरा ऐप पुश अधिसूचना प्राप्त कर रहा है, और इसके लिए उचित जानकारी संदेश दिखा रहा है। हालांकि जब मैं संदेश पर क्लिक कर रहा हूं, एप्लिकेशन सक्रिय हो जाता है लेकिन आवेदन किया गया फिनिशलांचिंगविथऑप्शन को कॉल नहीं किया जा रहा है जो मुझे लगता है, क्योंकि एप्लिकेशन निलंबित नहीं है और यह केवल सक्रिय इस्तीफा दे रहा है। प्रश्न यह है कि मैं यह सुनिश्चित कर सकता हूं कि जब एप्लिकेशन अग्रभूमि में आता है तो उपयोगकर्ता संदेश पर क्लिक करता है?ऐप पृष्ठभूमि में होने पर पुश अधिसूचना को कैसे संभालना है, लेकिन

+0

पहला प्रश्न यह है कि आप देखें बटन का क्या मतलब है, यदि आपका ऐप बैक ग्राउंड मोड में है तो मैं आपको बीटीडब्ल्यू नहीं प्राप्त कर रहा हूं और आप क्लिक करेंगे अधिसूचना के बैनर पर, 'didReceiveRemoteNotification' को पुश अधिसूचना आती है और ऐप पृष्ठभूमि में होने पर – iPatel

+0

पर कॉल किया जाएगा, सिस्टम कुछ संदेश (अधिसूचना पेलोड से) के साथ आईफोन के शीर्ष पर एक दृश्य को संकेत देता है। हालांकि जब मैं उस दृश्य ऐप पर क्लिक करता हूं तो सक्रिय हो जाता है लेकिन किया गयाफिशिश लॉन्चिंगविथऑप्शन को – taffarel

+0

नहीं कहा गया था 'फिनिशलांचिंगविथऑप्शन' केवल तब कॉल करें जब आपका ऐप सक्रिय नहीं होता है। – iPatel

उत्तर

6

मुझे लगता है कि आप देख रहे हैं इस एप्लिकेशन प्रतिनिधि विधि है:

- (void)application:(UIApplication *)application  
     didReceiveRemoteNotification:(NSDictionary *)userInfo 

कि आपके ऐप backgrounded है यह कहा जाएगा, और अधिसूचना पेलोड userInfo शब्दकोश में वितरित किया जाएगा। यह उस स्थिति से भिन्न होता है जब ऐप को ठंडा प्रारंभ से लॉन्च किया जाता है, जब यह विधि नहीं कहती है, और इसके बजाय आप लॉन्च के लिए लॉन्चऑप्शन डिक्शनरी में चेक इन करते हैं।

वरीय हालांकि रास्ता iOS7 के बाद से यह करने के लिए इस का उपयोग करने के लिए है:

- (void)application:(UIApplication *)application 
     didReceiveRemoteNotification:(NSDictionary *)userInfo 
      fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler; 

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

0

अगर मैं सवाल सही ढंग से समझ, आप कैसे सुनिश्चित करें कि एप्लिकेशन को उपयोगकर्ता "क्लिक" अर्थात एक पुश सूचना पर अभिनय के परिणाम के रूप अग्रभूमि में लाया गया होना करने के लिए पूछ रहे हैं।

जब ऐप बिल्कुल नहीं चल रहा है, तो आप उल्लेख करते हुए -application:didFinishLaunchingWithOptions: का उपयोग कर सकते हैं। लॉन्चऑप्शन डिक्शनरी में पेलोड इत्यादि शामिल है - मैं इसका वर्णन नहीं करूंगा क्योंकि आप पहले ही जानते हैं कि यह कैसे काम करता है।

जब ऐप चल रहा है, तो उस विधि को नहीं कहा जा रहा है। इसके बजाय, - application:didReceiveRemoteNotification: कहा जाता है। बीटीडब्ल्यू यह कहा जाता है कि क्या ऐप पहले से ही अग्रभूमि में था या यदि यह पृष्ठभूमि में था और उपयोगकर्ता ने ऐप खोलने के लिए पुश अधिसूचना बैनर/अलर्ट पर "क्लिक किया"। इसे अन्यथा नहीं कहा जाएगा: इसलिए मेरा मानना ​​है कि यह बिल्कुल है जिसे आप ढूंढ रहे हैं।

इस विधि द्वारा प्रदान किए गए userInfo शब्दकोश में अधिक विज्ञापन-प्रसार प्रक्रिया के लिए -application:didFinishLaunchingWithOptions: के समान सूचनाएं डेटा शामिल होंगे। (नोट: userInfo और launchOptions अर्थात् अलग हैं, लेकिन उम्मीद है कि यह स्पष्ट है। :))

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