我正在制作使用UILocalNotification的应用程序。我想知道如何在UILocalNotification中留出空隙,即如何安排警报4周(每天或每隔一天重复一次)并关闭1周,然后关闭4周再关闭1周,依此类推。这只是一个案例。这些差距是动态的,是在运行时确定的。
最佳答案
您将无法使用repeatInterval
,因为您需要特殊的重复方案。我认为您必须为想要的每一天安排一个本地通知:
一些代码可能会有所帮助:
/**
This method will schedule 28 notifications, each 24 hours exactly for 4 weeks,
starting from dayOne (first notification will be at dayOne, the second one
at dayOne + 24 hours..., so be sure to choose the hour you want by setting
dayOne correctly.
*/
- (void)scheduleLocalNotificationsEachDayFor4WeeksStartingFrom:(NSDate *)dayOne {
// Schedule notifications for each day during 4 weeks starting at dayOne
NSMutableArray *notifications = [NSMutableArray array];
for (int i = 0; i < 28; i++) {
[notifications addObject:notificationForDay(dayOne, i)];
}
for (UILocalNotification *notification in notifications) {
[[UIApplication sharedApplication] scheduleLocalNotification:notification];
}
}
UILocalNotification *notificationInSomeDays(NSDate *referenceDate, NSUInteger some) {
UILocalNotification *notification = [[[UILocalNotification alloc] init] autorelease];
// Notification timing
NSUInteger days = 60*60*24; // number of seconds in a day
notification.fireDate = [referenceDate dateByAddingTimeInterval:some * days];
notification.timeZone = [NSTimeZone localTimeZone]; // use local time zone if your reference date is a local one, or choose the appropriate time zone
// define your notification content...
return notification;
}
您可以使用
scheduleLocalNotificationsEachDayFor4WeeksStartingFrom:
方法为每个4周的时段安排所需的28条通知。因此,您现在可以根据需要通过在您希望启动通知的每个4周的第一天的第一天调用它来运行它。当您启动应用程序时,您应该清除所有当前的本地通知,并重新安排它们的时间以符合您的要求。特别是,您必须调整是否在应运行通知的4周内启动该应用程序。在这种情况下,您将必须调整建议的
scheduleLocalNotificationsEachDayFor4WeeksStartingFrom
方法以减少计划的通知的数量...关于iphone - 在UILocalNotification中创建周的间隔以及周期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8131588/