Вы не сможете использовать repeatInterval
, так как вам нужна особая схема повторения. Я думаю, что вы должны запланировать локальное уведомление на каждый день, когда вы хотите его получить:
- 28 уведомлений за каждый день первых 4 недель,
- 28 уведомлений за каждый день второго периода 4 недели,
- и так далее ...
Код, который может помочь:
/**
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:
, чтобы запланировать 28 необходимых уведомлений на каждый период в 4 недели. Так что теперь вы можете просто запускать это так часто, как это необходимо, вызывая его с первым днем каждого 4-недельного периода, когда вы хотите, чтобы уведомления запускались.
Когда ваше приложение запущено, вы должны очистить все текущие локальные уведомления и перепланировать их в соответствии с вашими требованиями. В частности, вам придется настроить, если приложение запускается в течение 4 недель, когда должны запускаться уведомления. В этом случае вам придется настроить предложенный метод scheduleLocalNotificationsEachDayFor4WeeksStartingFrom
, чтобы уменьшить количество запланированных уведомлений ...