问题描述
我想为一周中的选定日期设置闹钟.
可能是工作日(周一、周二、周三、周四或周五)、周末(周六、周日)或每天.
如何使用本地通知来做到这一点?
推荐答案
如果你有时间每天必须触发通知,你应该这样做
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];
然后它将从这里连接到主通知触发方法
[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]; }
相关问答
相关标签/搜索