इस विषय के बारे में बहुत सारे स्टैकओवरफ़्लो थ्रेड हैं, लेकिन मुझे अभी भी एक अच्छा समाधान नहीं मिला है।
यदि एप्लिकेशन पृष्ठभूमि में नहीं है, तो मैं यह देखने launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]
के लिए application:didFinishLaunchingWithOptions:
कॉल कर सकता हूं कि यह अधिसूचना से खोला गया है या नहीं।
यदि एप्लिकेशन पृष्ठभूमि में है, तो सभी पोस्ट application:didReceiveRemoteNotification:
एप्लिकेशन स्थिति का उपयोग और जांच करने का सुझाव देते हैं । लेकिन जैसा कि मैंने प्रयोग किया (और जैसा कि इस एपीआई के नाम से भी पता चलता है), इस पद्धति को उस समय कहा जाता है जब अधिसूचना प्राप्त होती है, टैप किए जाने के बजाय।
तो समस्या यह है, यदि ऐप लॉन्च किया गया है और फिर बैकग्राउंड किया गया है, और आपको पता है कि एक नोटिफिकेशन प्राप्त हुआ है application:didReceiveNotification
( application:didFinishLaunchWithOptions:
इस बिंदु पर ट्रिगर नहीं हो सकता), तो आपको कैसे पता चलेगा कि उपयोगकर्ता ने नोटिफिकेशन टैप करके या केवल टैप करके ऐप को फिर से शुरू किया है या नहीं ऐप आइकन? क्योंकि यदि उपयोगकर्ता ने अधिसूचना को टैप किया है, तो अपेक्षा उस अधिसूचना में वर्णित पृष्ठ को खोलने की है। अन्यथा ऐसा नहीं होना चाहिए।
मैं handleActionWithIdentifier
कस्टम एक्शन नोटिफिकेशन के लिए इस्तेमाल कर सकता हूं , लेकिन यह तभी ट्रिगर होता है जब कस्टम एक्शन बटन टैप किया जाता है, न कि तब जब यूजर नोटिफिकेशन के मुख्य बॉडी पर टैप करता है।
धन्यवाद।
संपादित करें:
नीचे एक उत्तर पढ़ने के बाद, मैंने सोचा कि इस तरह से मैं अपने प्रश्न को स्पष्ट कर सकता हूं:
हम इन 2 परिदृश्यों को कैसे अलग कर सकते हैं:
(ए) 1.app पृष्ठभूमि में जाता है; 2. सूचना प्राप्त; 3. अधिसूचना पर उपयोगकर्ता नल; 4. एप्लिकेशन अग्रभूमि में प्रवेश करती है
(बी) 1.app पृष्ठभूमि में जाता है; 2. सूचना प्राप्त; 3. उपयोगकर्ता अधिसूचना को अनदेखा करता है और बाद में ऐप आइकन पर टैप करता है; 4. एप्लिकेशन अग्रभूमि में प्रवेश करती है
चूंकि application:didReceiveRemoteNotification:
चरण 2 में दोनों मामलों में ट्रिगर किया गया है।
या, application:didReceiveRemoteNotification:
केवल (ए) के लिए चरण 3 में ट्रिगर किया जाना चाहिए , लेकिन मैंने किसी तरह अपने ऐप को गलत तरीके से कॉन्फ़िगर किया है इसलिए मैं इसे चरण 2 पर देख रहा हूं?