Repeating a Local Notification after every 14 days(two weeks)?

会有一股神秘感。 提交于 2019-11-27 22:29:15

问题


In my app i've to set repetitive UILocalNotification. I'm able to set repeatInterval as daily, weekly etc by doing

UILocalNotification *localNotification = [[UILocalNotification alloc] init];
localNotification.repeatInterval = NSDayCalendarUnit; // or any other calendarUnit

Ok..it's fine, but i've to set repeatInterval for every 14 days. i came to know from this link that we can only use one of the NSCalendarUnit repeat intervals. So you can have a repeat interval of one minute or one hour or one day but not five minutes or three hours or 14 days. Any Idea about this limitation in iOS 5 or later(that article was written for iOS 4.0)?


回答1:


You can only set the repeat interval to a calendar unit. In order to get the right time interval you may have to set several notifications though.

If you for instance wanted a notification every 20 minutes you would have to create 3 notifications 20 minutes apart with a repeat interval of NSHourCalendarUnit.

The problem in your case is that the next thing up from the week unit is a month but a month is not exactly 4 weeks.

To actually set a notification for every 14 days you will have to create 26 notifications with a repeat interval of NSYearCalendarUnit.




回答2:


You can cancel the notification and set a new one fire date at 14 days from now when handling the notification. i.e. when your app is running in the foreground, do it in:

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

See this SO topic: Set repeatInterval in local notification

I've tried this way, and it works.




回答3:


In iOS 10, you can use UNTimeIntervalNotificationTrigger to repeat notification after every 14 days.

UNTimeIntervalNotificationTrigger* trigger = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:(14*24*3600) repeats: YES];
NSLog(@"td %@", trigger.nextTriggerDate);

UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:identifier content:content trigger:trigger];

[center addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) {
    if (error != nil) {
        NSLog(@"Something went wrong: %@",error);
    } else {
        NSLog(@"Created! --> %@",request);
    }
}];

Hope this will help anyone looking for this topic.



来源:https://stackoverflow.com/questions/18014438/repeating-a-local-notification-after-every-14-daystwo-weeks

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!