2012-12-08 10 views
22

विशेषज्ञों, मेरे पास एक परिदृश्य है जिसमें मुझे दिन में तीन बार सुबह (सुबह, दोपहर, शाम) सूचित करने की आवश्यकता होती है। और प्रत्येक अधिसूचना के लिए प्रत्येक दिन के लिए डेटाबेस मानों के आधार पर इन अधिसूचनाओं के लिए समय अलग-अलग होगा।मैं निम्नलिखित परिदृश्य के लिए स्थानीय अधिसूचना कैसे निर्धारित कर सकता हूं?

ये तीन अधिसूचनाएं कॉन्फ़िगर करने योग्य हैं। मतलब उपयोगकर्ता सेटिंग्स के तहत सुबह अधिसूचना बंद करते समय बस दोपहर और शाम को सेट करना चुन सकता है।

मेरी समझ के अनुसार मैं स्थानीय सूचनाओं का उपयोग करके इसे प्राप्त कर सकता हूं।

मैं निम्नलिखित कर सकता हूं: - आवेदन से बाहर निकलने से पहले, फिनिशलांचिंगविथऑप्शन के अंदर, मैं जांच सकता हूं कि अगली अधिसूचना क्या है, क्या यह सेट (चालू/बंद) है। यदि यह सेट है तो मैं इसे शेड्यूल करता हूं। यदि नहीं, तो मैं अगले अधिसूचना प्रकार पर जाता हूं और वही काम करता हूं। यदि सभी अधिसूचनाएं बंद हैं, तो जाहिर है, कोई अधिसूचना निर्धारित नहीं की जाएगी।

अब जब अधिसूचना दिखाई देती है तो मुझे दो बटन "बंद करें" और "दृश्य" के साथ अलर्ट देखने को मिलता है। यदि उपयोगकर्ता "दृश्य" का चयन करता है तो मेरा ऐप सक्रिय पर वापस आ गया है और उपयोगकर्ता अगली अधिसूचना से बाहर निकलने से पहले निर्धारित है।

अभी तक इतना अच्छा है।

अब यदि उपयोगकर्ता "बंद करें" का चयन करना चुनता है तो मैं क्या करूँ? यह मेरा ऐप लॉन्च नहीं करेगा और इसके परिणामस्वरूप अगली अधिसूचना निर्धारित नहीं होगी?

मैं इसे कैसे प्राप्त करूं? क्या ऐसा करने का कोई बेहतर तरीका है?

सहायता! मदद! मदद!

+0

यह ध्वनि नहीं पड़ता कि आप क्या करना चाहते बहुत मुमकिन है, या प्रयोग करने योग्य है की तरह के लिए docs देखें। मैं अपनी आवश्यकताओं को पुनर्विचार और एक अलग तरह से समस्या को हल करने की कोशिश कर सलाह देते हैं। –

उत्तर

37

आप एक बार में सभी (या कई) अधिसूचनाएं शेड्यूल कर सकते हैं। आपको उपयोगकर्ता को पर अगली अधिसूचना शेड्यूल करने के लिए देखने की आवश्यकता नहीं है।

the docs on UILocalNotification से

,

एक आवेदन अनुसूचित सूचनाओं के केवल एक सीमित संख्या में हो सकता है; प्रणाली (स्वचालित रूप से फिर से निर्धारित सूचनाएं एक भी अधिसूचना के रूप में गिनती के साथ) soonest-फायरिंग 64 सूचनाएं रहता है और बाकी

को छोड़ देता है तो, अगर आप प्रति दिन 3 सूचनाएँ है, तो आप पहले से निर्धारित समय से 3 सप्ताह कर सकते हैं एक बार में अधिसूचनाएं। मुझे लगता है कि यदि उपयोगकर्ता एक महीने के लिए आपका ऐप नहीं खोलता है, तो आपको अभी भी कोई समस्या होगी, लेकिन क्या आपको उस परिदृश्य के बारे में चिंता करने की ज़रूरत है?

वैसे भी, मैं बस यह सुनिश्चित करना चाहता था कि यह स्पष्ट है कि आपको इन अधिसूचनाओं को एक समय में शेड्यूल करने की आवश्यकता नहीं है।

उदाहरण:

UILocalNotification* n1 = [[UILocalNotification alloc] init]; 
n1.fireDate = [NSDate dateWithTimeIntervalSinceNow: 60]; 
n1.alertBody = @"one"; 
UILocalNotification* n2 = [[UILocalNotification alloc] init]; 
n2.fireDate = [NSDate dateWithTimeIntervalSinceNow: 90]; 
n2.alertBody = @"two"; 
[[UIApplication sharedApplication] scheduleLocalNotification: n1]; 
[[UIApplication sharedApplication] scheduleLocalNotification: n2]; 

तो, उपयोगकर्ता चुनता बंद जब पहली अधिसूचना प्रदर्शित क्यों न हो, दूसरा एक अभी भी वितरित किया जाएगा।

वैसे, didFinishLaunchingWithOptions विधि आपके आवेदन के ठीक बाद कॉल हो जाती है, इसे बंद करने से ठीक पहले नहीं। उस ने कहा, जब भी आप चाहें नई अधिसूचनाएं शेड्यूल कर सकते हैं।

+0

धन्यवाद नैट। मैं इसके बारे में सोचा, लेकिन यकीन है कि अगर यह सही तरीका था नहीं था। –

3

आप repeatInterval संपत्ति का भी उपयोग कर सकते हैं ताकि वे स्वयं को अनिश्चित काल तक पुनः निर्धारित कर सकें। हालांकि, अगर आप NSCalendarUnit में इकाइयों तक सीमित हैं। अधिक जानकारी के

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

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