[英]UILocalNotification - Fire and Repeat at particular time each day
I have this piece of code which I use for firing a local notification each day at mid night: 我有这段代码,我每天在深夜触发本地通知:
//Get todays midnight
NSDate *alertTime = [NSDate date];
NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar];
NSUInteger preservedComponents = (NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit);
alertTime = [calendar dateFromComponents:[calendar components:preservedComponents fromDate:alertTime]];
UIApplication *app = [UIApplication sharedApplication];
//Set up the local notification
UILocalNotification *notification = [[UILocalNotification alloc] init];
if(notification){
//Set fire date to alert time
notification.fireDate = alertTime;
//Set time zone to default
notification.timeZone = [NSTimeZone defaultTimeZone];
//Repeat the notification everyday (fires at same time
//as initial notification)
notification.repeatInterval = NSDayCalendarUnit;
// schedule notification
[app scheduleLocalNotification:notification];
NSLog(@"%@", notification.fireDate);
}
However I need another local notification to fire each day at 13:00. 但是,我需要每天13:00触发另一条本地通知。 How is this accomplished?
如何完成的? I don't understand how the above code can be adapted to achieve this..
我不明白如何修改上面的代码来实现这一目标。
Thanks a lot, 非常感谢,
Jack 插口
If you have the time which you have to fire notification every day, you should do this 如果您有时间每天必须触发通知,则应执行此操作
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [[NSDateComponents alloc] init];
for (NSMutableArray * arrDay in self.namaztimes) {
NSLog(@"Alarm Array: %@", arrDay);
int count=[arrDay count];
if(!count){
continue;
}
int day =0;
int month=0;
int year=0;
int hour =0;
int minutes=0;
// NSArray *arrDates=[[NSMutableArray alloc] initWithCapacity:1];
for ( int i=0;i<3;i++) {
NSString * dayTime=[arrDay objectAtIndex:i ];
if (i==0) {
day = [dayTime intValue];
}else if(i==1){
month = [dayTime intValue];
}else if(i==2){
year = [dayTime intValue];
}
}
for ( int i=3;i<count;i++) {
NSString * dayTime=[arrDay objectAtIndex:i ];
hour = [[dayTime substringToIndex:2] intValue];
minutes = [[dayTime substringFromIndex:3] intValue];
[components setDay:day];
[components setMonth:month];
[components setYear:year];
[components setMinute:minutes];
[components setHour:hour];
NSDate *myNewDate = [calendar dateFromComponents:components];
[self scheduleNotificationForDate:myNewDate];
}
}
[components release];
[calendar release];
then from here it will connect to the main notification firing method 然后从这里它将连接到主要的通知触发方法
[self scheduleNotificationForDate:myNewDate];
-(void) scheduleNotificationForDate: (NSDate*)date {
/* Here we cancel all previously scheduled notifications */
[[UIApplication sharedApplication] cancelAllLocalNotifications];
UILocalNotification *localNotification = [[UILocalNotification alloc] init];
localNotification.fireDate = date;
NSLog(@"Notification will be shown on: %@ ",localNotification.fireDate);
localNotification.timeZone = [NSTimeZone defaultTimeZone];
localNotification.alertBody = @"Your Notification Text"; //[NSString stringWithFormat:@"%@",date];
localNotification.alertAction = NSLocalizedString(@"View details", nil);
/* Here we set notification sound and badge on the app's icon "-1"
means that number indicator on the badge will be decreased by one
- so there will be no badge on the icon */
localNotification.repeatInterval = NSDayCalendarUnit;
localNotification.soundName = UILocalNotificationDefaultSoundName;
localNotification.applicationIconBadgeNumber = -1;
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.