为不一致的间隔iOS安排通知

时间:2014-11-18 04:30:20

标签: ios scheduling uilocalnotification

我正在处理一个应用程序,在该应用程序中,我希望显示UILocalNotification的间隔不一致。通知将显示在用户想要查看的星期几,即用户选择星期一,星期二和星期五,然后通知将在每个即将到来的一周的这些天显示。

感谢您提前提供任何帮助。

3 个答案:

答案 0 :(得分:0)

UILocalNotification的{​​{1}}属性需要NSDate。为什么不根据用户通过UI的反馈创建fireDate实例并使用它?

要创建NSDate对象,您可以使用秒数来调用NSDate。例如,要创建表示从现在起6天和5小时的时间的initWithTimeIntervalsSinceNow:

NSDate

或者,如果您需要考虑用户的特定日历(请记住世界各地正在使用许多不同的日历)或时区,您还应该查看NSCalendarNSTimeZone类。 'Date and Time Programming Guide'是一个很好的演练。

答案 1 :(得分:0)

我认为您需要做的是为您的间隔中的不规则时段安排多个UILocalNotification实例。您可以使用repeatInterval属性重复每个UILocalNotification

对于您的示例,您可以在星期一,星期二和星期五安排三个UILocalNotification个实例,然后将每个实例的repeatInterval值设置为NSWeekCalendarUnit

答案 2 :(得分:0)

穿上AppDelegate.m并从enterbackground和terminal方法调用

-(void)localNotification{
    UILocalNotification *scheduledAlert;

    [[UIApplication sharedApplication] cancelAllLocalNotifications];
    scheduledAlert = [[[UILocalNotification alloc] init] autorelease];
    NSDate *date = [NSDate date];
    NSLog(@"%@",date);
    scheduledAlert.fireDate = [NSDate dateWithTimeIntervalSinceNow:86400];
    scheduledAlert.timeZone = [NSTimeZone defaultTimeZone];
    scheduledAlert.repeatInterval =  NSDayCalendarUnit;
    NSArray *arr =[[NSArray alloc]initWithObjects:@"Your Notification 1",@"Your Notification 2",@"Your Notification 3",nil];
    int jk = arc4random()%arr.count;
    scheduledAlert.alertBody = [arr objectAtIndex:jk];

    [[UIApplication sharedApplication] scheduleLocalNotification:scheduledAlert];

}