繁体   English   中英

设置了RepeatInterval的UILocalNotification设置为NSWeekdayCalendarUnit不会每周触发一次

[英]UILocalNotification with repeatInterval set NSWeekdayCalendarUnit doesn't trigger weekly

我正在尝试设置本地通知以每周重复一次。
这是我的设置:

UILocalNotification* localNotification =  [[UILocalNotification alloc] init];
...
localNotification.repeatInterval = NSWeekdayCalendarUnit;

在控制台日志中:

localNotif:{开火日期= 2015年4月24日,星期五,新加坡标准时间,时区=亚洲/新加坡(GMT + 8)偏移量28800,重复间隔= NSWeekdayCalendarUnit,重复计数= UILocalNotificationInfiniteRepeatCount,下一个射击日期=新加坡标准时间2015年4月25日,星期六,12:27:33 PM,用户信息= {KUserLocalNotficationKey =“ 2015-04-24 04:27:33 +0000”; }}

如您所见,下一个触发日期是第二天。 这是错误吗?
我已经在iOS 7.1、8.1、8.3中对其进行了测试。

你必须像这样编码

UILocalNotification* localNotification =  [[UILocalNotification alloc] init];
...
localNotification.repeatInterval = NSCalendarUnitWeekOfYear;

它每周触发一次通知。

PLz试试这个

  UILocalNotification *localNotif=[[UILocalNotification alloc]init];
        localNotif.fireDate =currentDate;
        localNotif.timeZone=[NSTimeZone defaultTimeZone];
        localNotif.alertBody = @"MazeRoll";
        localNotif.soundName = UILocalNotificationDefaultSoundName;
        localNotif.applicationIconBadgeNumber = 1;
        localNotif.repeatInterval=NSWeekCalendarUnit;
        UIApplication *app=[UIApplication sharedApplication];
        [app scheduleLocalNotification:localNotif];
        NSLog(@"sdfsdfsdf%@",[[UIApplication sharedApplication] scheduledLocalNotifications]);

您可以使用NSCalendarUnitWeekOfYear设置本地通知,并设置正确的启动日期。

UILocalNotification *localNotification=[[UILocalNotification alloc]init];
localNotification.fireDate =[NSDate date]; // set your week day on which repeatedly you want local notfication. for example Monday, then set Fire date of next monday.
localNotification.timeZone=[NSTimeZone defaultTimeZone];
localNotification.repeatInterval=NSCalendarUnitWeekOfYear;
NSLog(@"%@",localNotification);

希望这可以帮助。 享受编码!

 NSDate *currentDate = [NSDate date];
    NSDate *futureTime = [currentDate dateByAddingTimeInterval:60*60*168];
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSTimeZone *timeZone = [NSTimeZone systemTimeZone];
    [calendar setTimeZone:timeZone];
    NSDateComponents *components = [calendar components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit fromDate:futureTime];
    if ([components hour] >= 19) { // make it the next day
        [components setDay:[components day] + 1 ];
    }
    [components setHour:8];
    [components setMinute:00];
    NSDate *alertTime = [calendar dateFromComponents:components];
    NSLog(@"alertTime %@",alertTime.description);
    UILocalNotification *localNotif=[[UILocalNotification alloc]init];
    localNotif.fireDate =alertTime;
    localNotif.timeZone=[NSTimeZone defaultTimeZone];
    localNotif.alertBody = @"MazeRoll";
    localNotif.soundName = UILocalNotificationDefaultSoundName;
    localNotif.applicationIconBadgeNumber = 1;
    localNotif.repeatInterval=NSDayCalendarUnit;
    UIApplication *app=[UIApplication sharedApplication];
    [app scheduleLocalNotification:localNotif];
    NSLog(@"sdfsdfsdf%@",[[UIApplication sharedApplication] scheduledLocalNotifications]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM