美文网首页
签到签退提醒

签到签退提醒

作者: Loki_ | 来源:发表于2016-06-02 11:10 被阅读289次

    需求说明:

    还有5(10,15)分钟到上班时间时推送提醒消息,下班时间已过5(10,15)分钟时推送提醒消息,上班和下班时间均为从服务器获取的配置时间

    NSDateFormatter*df=[[NSDateFormatteralloc]init];

    [dfsetTimeZone:[NSTimeZonetimeZoneWithAbbreviation:@"UTC"]];

    [dfsetDateFormat:@"HH:mm:ss"];

    NSDate*date = [NSDatedate];

    NSTimeZone*zone =

    [NSTimeZonesystemTimeZone];

    NSIntegerinterval =

    [zonesecondsFromGMTForDate: date];

    NSDate*localeDate =  [datedateByAddingTimeInterval: interval];

    NSString*localStr =

    [dfstringFromDate:localeDate];

    NSDate*localDate =

    [dfdateFromString:localStr];

    //获取上班时间

    NSString* amTime =

    [responseObjectobjectForKey:@"am"];

    NSDate*amDate=[dfdateFromString:amTime];

    //获取下班时间

    NSString* pmTime =

    [responseObjectobjectForKey:@"pm"];

    NSDate*pmDate=[dfdateFromString:pmTime];

    if([[UIApplicationsharedApplication]currentUserNotificationSettings].types!=UIUserNotificationTypeNone) {

    if(inRemind ==YES) {

    if([label.textisEqualToString:@"提前5分钟提醒"]) {

    NSDate*advanceTime = [NSDatedateWithTimeInterval:-60*5sinceDate:amDate];

    NSTimeIntervalinRemindTime=[advanceTimetimeIntervalSinceDate:localDate];

    UILocalNotification*notification=[[UILocalNotificationalloc]init];

    //设置调用时间

    notification.fireDate=[NSDatedateWithTimeIntervalSinceNow:inRemindTime];//通知触发的时间,10s以后

    notification.repeatInterval=kCFCalendarUnitDay;//循环通知的周期

    //设置通知属性

    notification.alertBody=@"还有5分钟,记得签到哦!";//通知主体

    ////notification.applicationIconBadgeNumber=1;//应用程序图标右上角显示的消息数

    notification.alertAction=@"打开应用";//待机界面的滑动动作提示

    notification.alertLaunchImage=@"Default";//通过点击通知打开应用时的启动图片,这里使用程序启动图片

    notification.soundName=UILocalNotificationDefaultSoundName;//收到通知时播放的声音,默认消息声音

    //设置用户信息

    notification.userInfo=@{@"id":@1,@"user":@"Kenshin

    Cui"};//绑定到通知上的其他附加信息

    //调用通知

    [[UIApplicationsharedApplication]scheduleLocalNotification:notification];

    }elseif([label.textisEqualToString:@"提前10分钟提醒"]){

    NSDate*advanceTime = [NSDatedateWithTimeInterval:-60*10sinceDate:amDate];

    NSTimeIntervalinRemindTime=[advanceTimetimeIntervalSinceDate:localDate];

    UILocalNotification*notification=[[UILocalNotificationalloc]init];

    //设置调用时间

    notification.fireDate=[NSDatedateWithTimeIntervalSinceNow:inRemindTime];

    notification.repeatInterval=kCFCalendarUnitDay;//循环通知的周期

    //notification.repeatInterval=2;//通知重复次数

    //notification.repeatCalendar=[NSCalendar

    currentCalendar];//当前日历,使用前最好设置时区等信息以便能够自动同步时间

    //设置通知属性

    notification.alertBody=@"还有10分钟,记得签到哦!";//通知主体

    //notification.applicationIconBadgeNumber=1;//应用程序图标右上角显示的消息数

    notification.alertAction=@"打开应用";//待机界面的滑动动作提示

    notification.alertLaunchImage=@"Default";//通过点击通知打开应用时的启动图片,这里使用程序启动图片

    notification.soundName=UILocalNotificationDefaultSoundName;//收到通知时播放的声音,默认消息声音

    //notification.soundName=@"msg.caf";//通知声音(需要真机才能听到声音)

    //设置用户信息

    notification.userInfo=@{@"id":@1,@"user":@"Kenshin

    Cui"};//绑定到通知上的其他附加信息

    //调用通知

    [[UIApplicationsharedApplication]scheduleLocalNotification:notification];

    }elseif([label.textisEqualToString:@"提前15分钟提醒"]){

    NSDate*advanceTime = [NSDatedateWithTimeInterval:-60*15sinceDate:amDate];

    NSTimeIntervalinRemindTime=[advanceTimetimeIntervalSinceDate:localDate];

    UILocalNotification*notification=[[UILocalNotificationalloc]init];

    //设置调用时间

    notification.fireDate=[NSDatedateWithTimeIntervalSinceNow:inRemindTime];

    notification.repeatInterval=kCFCalendarUnitDay;//循环通知的周期

    //notification.repeatInterval=2;//通知重复次数

    //notification.repeatCalendar=[NSCalendar

    currentCalendar];//当前日历,使用前最好设置时区等信息以便能够自动同步时间

    //设置通知属性

    notification.alertBody=@"还有15分钟,记得签到哦!";//通知主体

    //notification.applicationIconBadgeNumber=1;//应用程序图标右上角显示的消息数

    notification.alertAction=@"打开应用";//待机界面的滑动动作提示

    notification.alertLaunchImage=@"Default";//通过点击通知打开应用时的启动图片,这里使用程序启动图片

    notification.soundName=UILocalNotificationDefaultSoundName;//收到通知时播放的声音,默认消息声音

    //notification.soundName=@"msg.caf";//通知声音(需要真机才能听到声音)

    //设置用户信息

    notification.userInfo=@{@"id":@1,@"user":@"Kenshin

    Cui"};//绑定到通知上的其他附加信息

    //调用通知

    [[UIApplicationsharedApplication]scheduleLocalNotification:notification];

    }

    }

    if(outRemind ==YES) {

    if([label2.textisEqualToString:@"延后5分钟提醒"]) {

    NSDate*delayTime = [NSDatedateWithTimeInterval:60*5sinceDate:pmDate];

    NSTimeIntervaloutRemindTime=[delayTimetimeIntervalSinceDate:localDate];

    if(outRemindTime >0) {

    UILocalNotification*notification=[[UILocalNotificationalloc]init];

    //设置调用时间

    notification.fireDate=[NSDatedateWithTimeIntervalSinceNow:outRemindTime];//通知触发的时间,10s以后

    notification.repeatInterval=kCFCalendarUnitDay;//循环通知的周期

    //设置通知属性

    notification.alertBody=@"辛苦了一天,别忘了签退!";//通知主体

    //notification.applicationIconBadgeNumber=1;//应用程序图标右上角显示的消息数

    notification.alertAction=@"打开应用";//待机界面的滑动动作提示

    notification.alertLaunchImage=@"Default";//通过点击通知打开应用时的启动图片,这里使用程序启动图片

    notification.soundName=UILocalNotificationDefaultSoundName;//收到通知时播放的声音,默认消息声音

    //设置用户信息

    notification.userInfo=@{@"id":@1,@"user":@"Kenshin

    Cui"};//绑定到通知上的其他附加信息

    //调用通知

    [[UIApplicationsharedApplication]scheduleLocalNotification:notification];

    }

    }elseif([label2.textisEqualToString:@"延后10分钟提醒"]) {

    NSDate*delayTime = [NSDatedateWithTimeInterval:60*10sinceDate:pmDate];

    NSTimeIntervaloutRemindTime=[delayTimetimeIntervalSinceDate:localDate];

    if(outRemindTime >0) {

    UILocalNotification*notification=[[UILocalNotificationalloc]init];

    //设置调用时间

    notification.fireDate=[NSDatedateWithTimeIntervalSinceNow:outRemindTime];//通知触发的时间,10s以后

    notification.repeatInterval=kCFCalendarUnitDay;//循环通知的周期

    //设置通知属性

    notification.alertBody=@"辛苦了一天,别忘了签退!";//通知主体

    //notification.applicationIconBadgeNumber=1;//应用程序图标右上角显示的消息数

    notification.alertAction=@"打开应用";//待机界面的滑动动作提示

    notification.alertLaunchImage=@"Default";//通过点击通知打开应用时的启动图片,这里使用程序启动图片

    notification.soundName=UILocalNotificationDefaultSoundName;//收到通知时播放的声音,默认消息声音

    //设置用户信息

    notification.userInfo=@{@"id":@1,@"user":@"Kenshin

    Cui"};//绑定到通知上的其他附加信息

    //调用通知

    [[UIApplicationsharedApplication]scheduleLocalNotification:notification];

    }

    }elseif([label2.textisEqualToString:@"延后15分钟提醒"]) {

    NSDate*delayTime = [NSDatedateWithTimeInterval:60*15sinceDate:pmDate];

    NSTimeIntervaloutRemindTime=[delayTimetimeIntervalSinceDate:localDate];

    if(outRemindTime >0) {

    UILocalNotification*notification=[[UILocalNotificationalloc]init];

    //设置调用时间

    notification.fireDate=[NSDatedateWithTimeIntervalSinceNow:outRemindTime];//通知触发的时间,10s以后

    notification.repeatInterval=kCFCalendarUnitDay;//循环通知的周期

    //设置通知属性

    notification.alertBody=@"辛苦了一天,别忘了签退!";//通知主体

    //notification.applicationIconBadgeNumber=1;//应用程序图标右上角显示的消息数

    notification.alertAction=@"打开应用";//待机界面的滑动动作提示

    notification.alertLaunchImage=@"Default";//通过点击通知打开应用时的启动图片,这里使用程序启动图片

    notification.soundName=UILocalNotificationDefaultSoundName;//收到通知时播放的声音,默认消息声音

    //设置用户信息

    notification.userInfo=@{@"id":@1,@"user":@"Kenshin

    Cui"};//绑定到通知上的其他附加信息

    //调用通知

    [[UIApplicationsharedApplication]scheduleLocalNotification:notification];

    }

    }

    }

    }else{

    [[UIApplicationsharedApplication]registerUserNotificationSettings:[UIUserNotificationSettingssettingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSoundcategories:nil]];

    }

    相关文章

      网友评论

          本文标题:签到签退提醒

          本文链接:https://www.haomeiwen.com/subject/wmqkdttx.html