?
//创建本地通知
UILocalNotification *localNote = [[UILocalNotificationalloc] init];
//自定义(星期和时间)
NSDate * newDate = [selfgetNextWeekDay:2hour:20minute:25];
? ? self.localNote.fireDate = newDate;
//设置重复周期为:周(若每天重复使用属性NSCalendarUnitDay或NSCalendarUnitWeekDay)
? ? self.localNote.repeatInterval = kCFCalendarUnitWeek;
? ? self.localNote.timeZone = [NSTimeZonedefaultTimeZone];
? ? self.localNote.alertLaunchImage = @"default-banner.png";
? ? self.localNote.hasAction = YES;
? ? self.localNote.soundName = UILocalNotificationDefaultSoundName;
? ? self.localNote.alertAction = @"通知";
?
? ??self.localNote.alertBody = @"新的通知~~!";
//? ? 移除旧的通知,防止重复添加
? ? [[UIApplicationsharedApplication] cancelAllLocalNotifications];
?
? ??[[UIApplicationsharedApplication] scheduleLocalNotification:self.localNote];
?
/**
?*? 获取下一个新的星期日期
?*
?*? @param newWeekDay 星期数值从周日算起,星期日1/星期一2/星期二3...星期六7
?*? @param hour ? ? ? 设定的小时值
?*? @param minute ? ? 设定的分钟值
?*
?*? @return返回新的日期(NSDate对象)
?*/
?
-(NSDate *)getNextWeekDay:(int)newWeekDay hour:(int)hour minute:(int)minute{
? ? NSDateComponents * components = [[NSCalendarcurrentCalendar] components:NSCalendarUnitWeekday|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecondfromDate:[NSDatedate]];
?? ?
? ? HTLog(@"设置的weekday = %d", newWeekDay);
?? ?
? ? NSDateComponents *comps = [[NSDateComponentsalloc] init] ;
?? ?
? ? NSInteger unitFlags = NSCalendarUnitEra |
? ? NSCalendarUnitYear |
? ? NSCalendarUnitMonth |
? ? NSCalendarUnitDay |
? ? NSCalendarUnitHour |
? ? NSCalendarUnitMinute |
? ? NSCalendarUnitSecond |
? ? NSWeekCalendarUnit |
? ? NSCalendarUnitWeekday |
? ? NSCalendarUnitWeekdayOrdinal |
? ? NSCalendarUnitQuarter;
?? ?
? ? comps = [[NSCalendarcurrentCalendar] components:unitFlags fromDate:[NSDatedate]];
? ? [comps setHour:hour];
? ? [comps setMinute:minute];
? ? [comps setSecond:0];
?? ?
? ? int temp = 0;
? ? int days = 0;
?? ?
? ? temp = newWeekDay - components.weekday;
? ? days = (temp >= 0 ? temp : temp + 7);
? ? NSDate *newFireDate = [[[NSCalendarcurrentCalendar] dateFromComponents:comps] dateByAddingTimeInterval:3600 * 24 * days];
? ? return newFireDate;
?
}
自定义本地推送通知(UILocalNotification) 星期和时间
原文:http://zht1933.iteye.com/blog/2270186