如何为Nslocal通知设置自定义重复间隔.....?

时间:2011-08-09 05:32:49

标签: iphone objective-c nsnotifications nsnotificationcenter

我是iphone开发的新手。我正在尝试在我的项目中使用NslocalNotification我需要每2小时或每两天或每两个月给予记忆等等。目前我正在使用NslocalNotification重复间隔。但它的使用Nscalender只为每小时工作....

        NSString *InterVal=[freQuencyArr objectAtIndex:index-2];
        NSString *InterValType=[freQuencyArr objectAtIndex:index-1];
        if(![InterVal isEqualToString:@"Every"])
        {  
         result=[InterVal intValue];
        }else
          result=1;
        if([InterValType isEqualToString:@"Day"]){
             notification.repeatInterval= NSDayCalendarUnit;    
        }else if([InterValType isEqualToString:@"Week"]){
            notification.repeatInterval= NSWeekCalendarUnit;    
         }
        else if([InterValType isEqualToString:@"Month"]){
            notification.repeatInterval= NSMonthCalendarUnit;   
        }else if([InterValType isEqualToString:@"days"]){
             notification.repeatInterval=result*24*60*60;
        }

这里如果结果是2取决于IntervalType我需要通知  它不与我合作

         if([InterValType isEqualToString:@"days"]){
             notification.repeatInterval=result*24*60*60;
        }

3 个答案:

答案 0 :(得分:7)

@Srinivas:

如果你查看我在这个答案中发布的链接,你会发现我已经尝试了所有可能的解决方案,试着去做你想要的。

我已经尝试过所有这些在我的应用中实现它,但这不起作用。

我不敢这样说,但这是不可能的。它只允许将单位 NSCalendarUnit对象设置为重复间隔。

我投资了将近2个月(我在2010年12月提出问题,并于2011年2月自行回答)试图通过不同的文章和不同的论坛在互联网上实现所有可能的解决方案,但没有人提供帮助。

如果某些内容对您有用,请查看我的链接并留意所有答案。

How to set Local Notification repeat interval to custom time interval?

真的希望这会对你有所帮助。

答案 1 :(得分:3)

repeatInterval的{​​{1}}属性不能用于重复少于每一个日历单元,即每天,每周,每月等。

相反,您必须安排多个通知才能达到预期的效果,并相应地设置UILocalNotification属性。

答案 2 :(得分:1)

正如lemnar所说,你无法使用repeatInterval以不同于Apple提供的日历单位的频率重复。那么,下面的代码:

     if([InterValType isEqualToString:@"days"]){
         notification.repeatInterval=result*24*60*60;
    }

不会做任何事情。我也在我构建的应用程序中使用重复通知,并且我通过创建多个通知来解决这个问题,每个通知重复一次以提供“所需”的重复频率。例如,如果我想重复“每2天”,我不能使用repeatInterval这样做。但是,我的应用程序中有一个“调度功能”,可以创建多个单独的通知来实现此目的。我这样做是在任意长度的时间内(在我的情况下,一周)。因此,在上面的示例中,当用户指定他/她从今天起每两天需要一次通知时,我会创建3个通知(第3天,第5天和第7天各一个)。

如果以低于日历单位的频率重复,事情会更容易一些。假设我需要每12小时重复一次(早上6点和下午6点)。然后,我会创建2个通知(一个用于6AM,另一个用于6PM)。然后,我会将每个通知的repeatInterval设置为NSDayCalendarUnit。这样我就创建了一组每12小时重复一次的通知。

当我的应用加载时,我会再过7天并根据需要重新创建通知。不是最优雅的解决方案,但这是我能想到绕过repeatInterval限制的最佳方式。