2013-10-31 7 views
5

मैं लगातार 30 दिनों के लिए UILocalNotificaion को 8:00 बजे रोजाना 8:00 बजे शेड्यूल करना चाहता हूं और मैं उस कार्यक्षमता को केवल एक UILocationNotification उदाहरण के साथ कार्यान्वित करना चाहता हूं। स्थानीय अधिसूचना शेड्यूल करने के लिए मेरा कोड यहां दिया गया है।लगातार 30 दिनों के लिए UILocalNotification को कैसे सेट करें

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"HH:mm"]; 
NSDate *date = [[NSDate alloc] init]; 
date = [formatter dateFromString:@"08:00"]; 
UILocalNotification *localNotification = [[UILocalNotification alloc] init]; 
localNotification.fireDate = date; 
localNotification.timeZone=[NSTimeZone defaultTimeZone]; 
localNotification.alertBody = @"You just received a local notification"; 
localNotification.alertAction = @"View Details"; 
localNotification.soundName = UILocalNotificationDefaultSoundName; 
localNotification.repeatInterval = NSDayCalendarUnit; 
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification]; 
[formatter release]; 
[date release]; 

यह हमेशा के लिए 08:00 पूर्वाह्न दैनिक सूचनाएं सक्रिय कर देगा, लेकिन मैं केवल लगातार 30 दिनों के लिए सूचना प्राप्त करना चाहते। सबसे आसान समाधान 30 UILocalNotifications को आग लगाना है, लेकिन मैं इसे 1 UILocalNotification उदाहरण के साथ करना चाहता हूं। मैं उसे कैसे कर सकता हूँ? कृपया मदद करे।

उत्तर

4

UILocalNotification userInfo संपत्ति में जब आप अधिसूचना बनाते हैं तो NSDate ऑब्जेक्ट को सहेजते हैं। जब आप अधिसूचना खोलते हैं, उपयोगकर्ता दिनांक में दिनांक के साथ वर्तमान तिथि के साथ जांचें। यदि अंतर है तो 30 दिनों से अधिक समय आप अपनी स्थानीय अधिसूचना रद्द कर सकते हैं।

+2

आपका समाधान उपयोगकर्ता जांच करता है कि काम करते हैं या एक सूचना प्राप्त होगी। लेकिन क्या होगा यदि उपयोगकर्ता किसी अधिसूचना को प्राप्त या जांच नहीं करता है? –

+0

@ शाहिद इकबाल को इस विशिष्ट प्रश्न का उत्तर मिला है? – Ilario

+0

@ एलारियो मुझे लगता है कि मुझे करीम के जवाब के साथ जाना है। –

0
NSDate *now = [NSDate date]; 

// now a NSDate object for now + 30 days 
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 

NSDateComponents *offsetComponents = [[NSDateComponents alloc] init]; 
[offsetComponents setDay:30]; 
NSDate *endDate = [gregorian dateByAddingComponents:offsetComponents toDate:now options:0]; 

कि जांच के बाद:

if([currentDate isEarlierDate:endDate]){ 
//Fire the notification 
} 
संबंधित मुद्दे