2012-09-05 13 views
8

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

जब मैं didReceiveLocalNotification:(UILocalNotification *)notification का उपयोग करता हूं। मैं प्राप्त कर सकते हैं और सूचना है कि ऐप्लिकेशन में प्रवेश करने के लिए प्रयोग किया जाता है का उपयोग करें, किसी भी समस्याओं

हालांकि बिना, इस समारोह केवल निकाल दिया जाता है जब एप्लिकेशन पहले से ही (सक्रिय, निष्क्रिय, पृष्ठभूमि चल रहा है, और संभवतः निलंबित, लेकिन मैं अभी तक कोशिश नहीं की है)।

अब, यह फ़ंक्शन didFinishLaunchingWithOptions:(NSDictionary *)launchOptions है जहां आप [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey] का उपयोग कर सकते हैं जो UILocalNotification लौटाएगा।

हालांकि, जब आप से ऐप लॉन्च करते हैं तो स्थिति नहीं चल रहा है, यह ईवेंट निकाल दिया नहीं गया है। स्थानीय नोटिफिकेशन तब ऐप खोलता है, लेकिन मैं इसे किसी भी तरह से उपयोग नहीं कर सकता।

अब, मेरा प्रश्न है: मैं इसे कैसे काम कर सकता हूं, इसलिए ऐप शुरू करते समय, अधिसूचना से, जब ऐप चालू नहीं हो रहा है, तो मैं सूचनाएं प्राप्त और संसाधित कर सकता हूं? क्या शायद कुछ ऐसा है जो मैं गलत कर रहा हूं?

पहले, didFinishLaunchingWithOptions समारोह है, जो, दुर्भाग्य से काम नहीं करता है:

यहाँ मेरी app से नमूना कोड का एक सा है। समारोह का शुभारंभ किया [sharedLocalNotificationsInstance processNotification:notification] कभी नहीं रहा है ...

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ 

LocalNotificationsController *sharedLocalNotificationsInstance = [LocalNotificationsController sharedLocalNotificationsInstance]; 
[sharedLocalNotificationsInstance checkNotifications]; 

UILocalNotification *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey]; 
if (notification != nil) { 

    // Process the received notification 
    [sharedLocalNotificationsInstance processNotification:notification]; 

    application.applicationIconBadgeNumber = 0; 
} 

return YES; 
} 

और कोड का एक दूसरा टुकड़ा: didReceiveLocalNotification समारोह है, जो पूरी तरह से काम करता है: मैं सूचना प्राप्त और [sharedLocalNotificationsInstance processNotification: अधिसूचना] पूरी तरह से काम करता है।

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{ 

// Used when the application launches from a notification 
LocalNotificationsController *sharedLocalNotificationsInstance = [LocalNotificationsController sharedLocalNotificationsInstance]; 

// Process the received notification 
[sharedLocalNotificationsInstance processNotification:notification]; 
} 
+0

हाय लार्स्क। मुझे भी बिलकुल यही समस्या है। ऐप चालू होने पर नोटिफिकेशन प्राप्त कर सकता है ग्राउंड या बैक ग्राउंड लेकिन मजेदार चीजें तब होती हैं जब ऐप बंद हो जाता है। मैं अधिसूचना पर क्लिक करता हूं, ऐप खुलता है, स्क्रीन पर 1 सेकंड के लिए रहता है तो स्क्रीन काला हो जाती है। मैं पृष्ठभूमि में आवेदन देखता हूं लेकिन अधिसूचना प्राप्त करने का कोई संकेत नहीं। मुझे वास्तव में यकीन नहीं है कि UILocalNotification * अधिसूचना = (UILocalNotification *) [launchOptions objectForKey: UIAplplicationLaunchOptionsLocalNotificationKey]; काम करता है या नहीं। क्या आपको इसके लिए ठोस समाधान मिला है? – Add080bbA

उत्तर

4

इस प्रकार आईओएस स्थानीय अधिसूचना को संभालता है। यह आपके ऐप की स्थिति पर निर्भर करता है, उदा। सक्रिय, पृष्ठभूमि में चल रहा है, या अभी तक शुरू नहीं हुआ है। आईओएस या तो किया जाएगा FinishLaunchingWithOptions या didReceiveLocalNotification, या आपके ऐप को बिल्कुल स्पर्श नहीं करेगा।

कृपया स्पष्टीकरण के लिए यह लेख देखें - http://www.thekspace.com/home/component/content/article/62-uilocalnotification-demystified.html

+0

लिंक के लिए धन्यवाद! दुर्भाग्यवश, वह पृष्ठ यह भी कहता है कि ऐप लॉन्च करेगा लॉन्च लॉन्चिंग विथऑप्शन जब ऐप चलने वाले राज्य में नहीं होगा, जो दुर्भाग्य से नहीं है ... कम से कम मुझे पता नहीं है। मैं अभी कुछ सोच रहा हूं, यह शायद कुछ अलग हो सकता है: ऐप लॉन्च करें, और फिर didReceiveLocalNotification ईवेंट को फायर करें। मैंने केवल उस घटना को प्रोग्राम करने के लिए प्रोग्राम किया जब अनुप्रयोगस्टेट = 1 (सक्रिय), लेकिन शायद मुझे इसके बजाय इसका उपयोग करने की आवश्यकता है। मैं एक बार नजर डालूँगा! – laarsk

+0

यदि आपका ऐप नहीं चल रहा है, जब स्थानीय अधिसूचना होती है और उपयोगकर्ता अधिसूचना को सक्रिय करता है, तो आईओएस आपके ऐप को शुरू करेगा और अधिसूचना ऑब्जेक्ट को didFinishLaunchingWithOptions के माध्यम से पास करेगा। हालांकि, यदि उपयोगकर्ता अधिसूचना को सक्रिय नहीं करता है, तो कुछ भी नहीं होगा। –

+0

आईओएस 7 में, जब एप्लिकेशन निष्क्रिय है तो मुझे आईओएस से कोई अधिसूचना नहीं मिली। बैज सेट है, लेकिन आइकन एप्लिकेशन में क्लिक करते समय, कोई फ़ंक्शन नहीं कहा जाता है। – Brave

1

<Matrix-Morpheus-Meme title="WHAT IF I TOLD YOU">

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

</Matrix-Morpheus-Meme>

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