6

在我的应用程序中,我必须设置重复UILocalNotification。我可以通过执行将repeatInterval 设置为每天、每周等

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

好的..很好,但我必须每 14 天设置一次 repeatInterval。我从这个链接知道我们只能使用 NSCalendarUnit 重复间隔之一。因此,您可以设置一分钟、一小时或一天的重复间隔,但不能设置为五分钟、三小时或 14 天。关于 iOS 5 或更高版本中的此限制的任何想法(该文章是为 iOS 4.0 编写的)?

4

3 回答 3

7

您只能将重复间隔设置为日历单位。不过,为了获得正确的时间间隔,您可能必须设置多个通知。

例如,如果您希望每 20 分钟发送一次通知,则必须每隔 20 分钟创建 3 个通知,并且重复间隔为 NSHourCalendarUnit。

您的问题是,从周单位开始的下一件事是一个月,但一个月不完全是 4 周。

要实际设置每 14 天通知一次,您必须创建 26 个通知,重复间隔为 NSYearCalendarUnit。

于 2013-08-02T10:34:59.547 回答
1

您可以在处理通知时取消通知并在 14 天后重新设置一次触发日期。即当您的应用程序在前台运行时,请执行以下操作:

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

请参阅此 SO 主题: 在本地通知中设置 repeatInterval

我已经尝试过这种方法,并且有效。

于 2013-08-30T12:44:22.087 回答
0

在 iOS 10 中,您可以使用UNTimeIntervalNotificationTrigger每 14 天后重复通知。

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);
    }
}];

希望这会帮助任何寻找这个主题的人。

于 2017-05-19T13:22:15.807 回答