1
- (void) scheduleGeneralNotificationFrequentlyWithItem:(ToDoItem *)item interval:(int)minutesBefore frequent:(NSCalendarUnit)frequentUnit{
    NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar];
    NSDateComponents *dateComps = [[NSDateComponents alloc] init];
    [dateComps setDay:item.day];
    [dateComps setMonth:item.month];
    [dateComps setYear:item.year];
    [dateComps setHour:item.hour];
    [dateComps setMinute:item.minute];
    NSDate *itemDate = [calendar dateFromComponents:dateComps];
    [dateComps release];

    UILocalNotification *localNotif = [[UILocalNotification alloc] init];

    if (localNotif == nil)
        return;
    localNotif.fireDate = [itemDate dateByAddingTimeInterval:-(minutesBefore*60)];
    localNotif.timeZone = [NSTimeZone defaultTimeZone];

    if (!item.eventName) {
        item.eventName = @"My event name";
    }
    localNotif.alertBody = item.alertBody;
    localNotif.alertAction = NSLocalizedString(@"Details", nil);

    localNotif.soundName = UILocalNotificationDefaultSoundName;
    localNotif.applicationIconBadgeNumber = 1;


    localNotif.userInfo = item.data; // some data
    localNotif.repeatInterval = frequentUnit; // here I put NSDayCalendarUnit
    [[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
    [localNotif release];
    NSString *isDisableLocalPush = [Settings getSetting:kPraktijDisableLocalPushKey];
    if ([isDisableLocalPush isEqualToString:kJSONValueYes]) { //disable all notifications after added it
        [self disableAllLocationPushNotifications];
    }
}

在上面的代码中,它将每天安排到 localNotif.fireDate ,对吗?

我想要实现的是:安排下个月到下个月的每一天的通知,例如:2013/march/01 到 2013/may/01 的每日通知

4

1 回答 1

0

不,它会从触发日期开始安排每日通知(直到您取消它)。

如果您想安排一个日期范围并且它不超过您可以一次设置的本地通知的限制(即 64,仍然少于您需要的 2 个月),我认为最好安排本地通知每天一个接一个。

只需从 NSDate 对象开始触发日期,安排本地通知而不重复间隔,将 NSDate 增加一天,然后重复安排本地通知,直到它到达范围的结束日期。

于 2013-05-27T15:43:02.990 回答