码迷,mamicode.com
首页 > 其他好文 > 详细

【设定本地通知为周一到周五提醒, 周末不提醒解决办法】

时间:2015-09-10 19:16:19      阅读:796      评论:0      收藏:0      [点我收藏+]

标签:

iOS开发中的信息提示推送方式,一类是远程服务器推送(APNS)与UILocalNotification本地通知的,我们知道UILocalNotification的通知重复提示的单位是以是秒、分、时、天、周、月等. 如图:

 

 技术分享

 

那么问题来了, 要实现标题所说的该怎么办呢?

哈哈...

小编第一想到是的先判断系统时间为星期几, 然后分别设置5个以周为单位的通知, 但考虑到很麻烦, 小编本人最怕麻烦了? 于是开始向他(她)人请教.

技术分享

这是位美女哦~ 这里不介绍了, 感谢~~

说到这估计有人要砍人了, 说了这么多, 快说怎么解决吧~~ 那下面就说怎么实现吧!

 

解决方法

1. 设置一个以天为单位的通知

 

#pragma mark  本地通知

- (void)setLocalNotification:(UILocalNotification *)mLocalNotification  WithTime:(NSString *)notificationTime withTitle:(NSString *)alertBody

{

    // 设置通知的标题(操作名称)

    mLocalNotification.alertAction = @"这是一条通知";

    // 设置通知的正文

    mLocalNotification.alertBody = alertBody;

    // 设置通知的时间

    NSDateFormatter *formattr = [[NSDateFormatter alloc] init];

    // 格式化时间

    [formattr setDateFormat:@"HH:mm"];

    // 触发通知时间

    NSDate *now = [formattr dateFromString:notificationTime];

    mLocalNotification.fireDate = now;    

    // 设置重复通知的时间为每日提醒

    mLocalNotification.repeatInterval = NSCalendarUnitDay; // kCFCalendarUnitMinute NSCalendarUnitDay    

    // 通知触发时播放的声音

    mLocalNotification.soundName = UILocalNotificationDefaultSoundName;

    // 取消通知的时候判断key和ID相同的就是同一个通知了。

    NSDictionary *dict =[NSDictionary dictionaryWithObjectsAndKeys:notificationTime, @"key" ,nil];

    [mLocalNotification setUserInfo:dict];

     // 利用Application添加通知

    [[UIApplication sharedApplication] scheduleLocalNotification:mLocalNotification];

}

 

2.在 - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification方法中判断是否为周末, 为周末就取消该通知, 那有人又会问了, 怎么取消该通知呢? 请看上面代码, 是否主要到我给通知设定了一个UserInfo, 对了, 就是遍历所以通知, 找到key相同的通知取消, 还是上代码吧!

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification

{

    NSDictionary *userInfo = notification.userInfo;

    if ([@"10:00" isEqualToString:userInfo[@"key"]]) {

        if ([toolset isWeekend]) {

               // 取消通知

               [self cancelLocalNotificationWithkeyValue:value];

              // 重新开启   

              UILocalNotification *notification = [[UILocalNotification alloc] init];

              [self setLocalNotification:notification WithTime:value withTitle:@"好烦好烦..."];

        }

}

 

/** 取消某个的通知 如: value = @"10:00" */

- (void)cancelLocalNotificationWithkeyValue:(NSString *)value

{

    NSArray *notifications=[[UIApplication sharedApplication] scheduledLocalNotifications];

    NSUInteger acount = notifications.count;

    if (acount>0){

        for (UILocalNotification *myUILocalNotification in notifications) {

            

            NSDictionary *userInfo = myUILocalNotification.userInfo;

            if ([value isEqualToString:userInfo[@"key"]]) {

                

                [[UIApplication sharedApplication] cancelLocalNotification:myUILocalNotification];

                NSLog(@"取消: %@", value);

            }

        }

    }

}

好了, 赶紧试试吧! 如果还有更好的方法, 请告知, TKS! 

 

【设定本地通知为周一到周五提醒, 周末不提醒解决办法】

标签:

原文地址:http://www.cnblogs.com/Milo-CTO/p/4798627.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!