本文章实现周一到周五上下班打卡提醒。
-( void )setRemindTime
{
// 取得系统的时间,并将其一个个赋值给变量
NSDate * now = [ NSDate date];
NSCalendar *calendar = [[NSCalendaralloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit |NSWeekCalendarUnit| NSWeekdayCalendarUnit |
NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents *comps = [[NSDateComponentsalloc] init];
comps = [calendar components:unitFlags fromDate:now];
NSDateComponents *comps2 = [[NSDateComponentsalloc] init];
comps2 = [calendar components:unitFlags fromDate:now];
// int hour = [comps hour];
// int min = [comps minute];
// int sec = [comps second];
for (int newWeekDay =2; newWeekDay<=6; newWeekDay++) {
int temp = 0;
int days = 0;
temp = newWeekDay - comps.weekday;
days = (temp >= 0 ? temp : temp + 7);
[comps setHour:8];
[comps setMinute:60-[_beforeTimeintValue]];
[comps setSecond:0];
NSDate *newFireDate = [[[NSCalendarcurrentCalendar] dateFromComponents:comps] dateByAddingTimeInterval:3600 * 24 * days];
[selfscheduleNotificationWithItem:[NSStringstringWithFormat:@"离上班时间还有%@分钟,记得签到哦!",_beforeTime] fireDate:newFireDate];
[comps2 setHour:18];
[comps2 setMinute:[_afterTimeintValue]];
[comps2 setSecond:0];
NSDate *newFireDate2 = [[[NSCalendarcurrentCalendar] dateFromComponents:comps2] dateByAddingTimeInterval:3600 * 24 * days];
[selfscheduleNotificationWithItem:[NSStringstringWithFormat:@"下班时间已过%@分钟,记得签到哦!",_afterTime] fireDate:newFireDate2];
}
}
- (void)scheduleNotificationWithItem:(NSString *)alertItem fireDate:(NSDate*)date
{
//[[UIApplication sharedApplication] cancelAllLocalNotifications];
//初始化
UILocalNotification *locationNotification = [[UILocalNotificationalloc]init];
locationNotification.fireDate =date;
//NSLog(@"推送时间%@",locationNotification.fireDate);
locationNotification.timeZone = [NSTimeZonedefaultTimeZone];
//设置重复周期
locationNotification.repeatInterval = kCFCalendarUnitWeek;
//设置通知的音乐
locationNotification.soundName = UILocalNotificationDefaultSoundName;
//设置通知内容
locationNotification.alertBody = alertItem;
NSDictionary *infoDic = [NSDictionarydictionaryWithObjectsAndKeys:LOCAL_NOTIFY_SCHEDULE_ID,@"id",nil];
locationNotification.userInfo = infoDic;
//执行本地推送
[[UIApplicationsharedApplication] scheduleLocalNotification:locationNotification];
}
-(void)cancelNotification
{
//取消通知
//获取当前所有的本地通知
NSArray *notificaitons = [[UIApplicationsharedApplication] scheduledLocalNotifications];
if (!notificaitons || notificaitons.count <= 0)
{
return;
}
//取消一个特定的通知
for (UILocalNotification *notify in notificaitons)
{
if ([[notify.userInfoobjectForKey:@"id"] isEqualToString:LOCAL_NOTIFY_SCHEDULE_ID])
{
[[UIApplicationsharedApplication] cancelLocalNotification:notify];
}
}
-( void )setRemindTime
{
// 取得系统的时间,并将其一个个赋值给变量
NSDate * now = [ NSDate date];
NSCalendar *calendar = [[NSCalendaralloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit |NSWeekCalendarUnit| NSWeekdayCalendarUnit |
NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents *comps = [[NSDateComponentsalloc] init];
comps = [calendar components:unitFlags fromDate:now];
NSDateComponents *comps2 = [[NSDateComponentsalloc] init];
comps2 = [calendar components:unitFlags fromDate:now];
// int hour = [comps hour];
// int min = [comps minute];
// int sec = [comps second];
for (int newWeekDay =2; newWeekDay<=6; newWeekDay++) {
int temp = 0;
int days = 0;
temp = newWeekDay - comps.weekday;
days = (temp >= 0 ? temp : temp + 7);
[comps setHour:8];
[comps setMinute:60-[_beforeTimeintValue]];
[comps setSecond:0];
NSDate *newFireDate = [[[NSCalendarcurrentCalendar] dateFromComponents:comps] dateByAddingTimeInterval:3600 * 24 * days];
[selfscheduleNotificationWithItem:[NSStringstringWithFormat:@"离上班时间还有%@分钟,记得签到哦!",_beforeTime] fireDate:newFireDate];
[comps2 setHour:18];
[comps2 setMinute:[_afterTimeintValue]];
[comps2 setSecond:0];
NSDate *newFireDate2 = [[[NSCalendarcurrentCalendar] dateFromComponents:comps2] dateByAddingTimeInterval:3600 * 24 * days];
[selfscheduleNotificationWithItem:[NSStringstringWithFormat:@"下班时间已过%@分钟,记得签到哦!",_afterTime] fireDate:newFireDate2];
}
}
- (void)scheduleNotificationWithItem:(NSString *)alertItem fireDate:(NSDate*)date
{
//[[UIApplication sharedApplication] cancelAllLocalNotifications];
//初始化
UILocalNotification *locationNotification = [[UILocalNotificationalloc]init];
locationNotification.fireDate =date;
//NSLog(@"推送时间%@",locationNotification.fireDate);
locationNotification.timeZone = [NSTimeZonedefaultTimeZone];
//设置重复周期
locationNotification.repeatInterval = kCFCalendarUnitWeek;
//设置通知的音乐
locationNotification.soundName = UILocalNotificationDefaultSoundName;
//设置通知内容
locationNotification.alertBody = alertItem;
NSDictionary *infoDic = [NSDictionarydictionaryWithObjectsAndKeys:LOCAL_NOTIFY_SCHEDULE_ID,@"id",nil];
locationNotification.userInfo = infoDic;
//执行本地推送
[[UIApplicationsharedApplication] scheduleLocalNotification:locationNotification];
}
-(void)cancelNotification
{
//取消通知
//获取当前所有的本地通知
NSArray *notificaitons = [[UIApplicationsharedApplication] scheduledLocalNotifications];
if (!notificaitons || notificaitons.count <= 0)
{
return;
}
//取消一个特定的通知
for (UILocalNotification *notify in notificaitons)
{
if ([[notify.userInfoobjectForKey:@"id"] isEqualToString:LOCAL_NOTIFY_SCHEDULE_ID])
{
[[UIApplicationsharedApplication] cancelLocalNotification:notify];
}
}
}