2011-10-31 17 views
8

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

इसके साथ जुड़े अन्य प्रश्न तब होते हैं जब पुश सूचनाएं आती हैं और आपका ऐप पृष्ठभूमि में होता है application:didReceiveLocalNotification: अभी भी कॉल किया जाता है या यह अभी जाता है और ऐप लॉन्च होने तक प्रतीक्षा करता है और फिर आपको मैन्युअल रूप से संभालने की उम्मीद है यह application:didFinishLaunchingWithOptions:

मेरा परिदृश्य यह है कि मुझे कुछ कोर-डेटा मॉडल को पुश अधिसूचनाओं से जुड़े डेटा के साथ अपडेट करने की आवश्यकता है, इसलिए मैं चाहता हूं कि उन बदलावों से कोई फर्क नहीं पड़ता कि वे ऐप कैसे लॉन्च करते हैं।

उत्तर

1

मेरे अनुभव से, सीधे उनके माध्यम से ऐप लॉन्च करने के अलावा अधिसूचनाओं के बारे में जानने का कोई तरीका नहीं है (आईओएस 5 पर, अधिसूचना प्राप्त करने के बाद या अधिसूचना केंद्र में मौजूद कतारबद्ध अधिसूचनाओं के बाद) सही होगा।

आइकन बैज का उपयोग करने के लिए एक वैकल्पिक रणनीति होगी।

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

1

जब कोई सूचना पॉप अप हो जाती है तो आप इसे देख या रद्द कर सकते हैं। उपयोगकर्ता अधिसूचना रद्द कर दिया है, तो आप उनके लिए अगली बार जब वे अनुप्रयोग में जाना देख सकते हैं:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    UILocalNotification *localNotif = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey]; 

    if(localNotif) { 
     // Do some stuff 
     application.applicationIconBadgeNumber = 0; // Reset num of notifications on app icon 
    } 
} 

अगर आपको कोई सूचना प्राप्त करते समय आप उस विशिष्ट अनुप्रयोग में कर रहे हैं, या आप स्वीकार करते हैं करने के लिए चुन इस विधि निकाल दिया जाता एक स्थानीय अधिसूचना:

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

BOOL inApp = [application applicationState] == UIApplicationStateActive; 

    if(inApp) { // they got this in the app 
     //Do some stuff in the app 
    } 
    else { 
     // They acknowledged the notification out of the app and here they are 
     // Do some other stuff 
    } 

    application.applicationIconBadgeNumber = 0; 
} 

है कि आप स्थानीय सूचनाओं के साथ सभी स्थितियों जो होगा अच्छा कवरेज देता है:

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