如何安排LocalNotifications每2天或每3天触发一次。

时间:2011-03-08 04:50:03

标签: iphone objective-c

我有一个应用程序,我必须安排本地通知。考虑用户输入上午7点的时间,然后必须根据他设置的设置每天(或者,2天,或每3天)在上午7点触发通知。必须定期触发此通知,直到用户关闭通知为止。

我怀疑如何安排通知每2天或每3天或每2周一次点火?对不起,如果这是一个非常基本的问题。我是Local Notifications的新手。

2 个答案:

答案 0 :(得分:1)

您需要从开始日期到结束日期制作日期列表,然后需要输入警报天数的间隔,并根据您需要设置警报的间隔。

警报需要

日期和时间。

看到这个函数,它会返回一个日期数组,其间隔为天数

-(NSMutableArray *)getDatesArrayBetweenDates:(NSString *)minDate toDate:(NSString *)maxDate freqDays:(NSInteger )dayfreq
{
    // minDate and maxDate represent your date range
    NSMutableArray *resultArray=[NSMutableArray array];
    NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar];
    NSDateComponents *days = [[NSDateComponents alloc] init];
    NSDate *minDateObject;
    NSDate *maxDateObject;
    NSDateFormatter *df=[[NSDateFormatter alloc] init];
    [df setDateFormat:@"MM/dd/yyyy"];
    minDateObject=[df dateFromString:minDate];
    maxDateObject=[df dateFromString:maxDate];
    NSInteger dayCount = 0;
    while ( TRUE ) {

        NSDate *date = [gregorianCalendar dateByAddingComponents: days toDate: minDateObject options: 0];
        [days setDay: ++dayCount];
        if ( [date compare: maxDateObject] == NSOrderedDescending )
            break;
        // Do something with date like add it to an array, etc.
        NSString *dateForAdd=[df stringFromDate:date];
        //if(![self.dateListArray containsObject:dateForAdd])
            [resultArray addObject:dateForAdd];
    }
    [df release];
    [days release];
    [gregorianCalendar release];

    NSMutableArray *returnableArray=[NSMutableArray array];
    NSInteger day=0;
    for(int i=0;i<[resultArray count];i++)
    {
       if(day==0)
       {
           [returnableArray addObject:[resultArray objectAtIndex:i]];
       }

        if(day==dayfreq)
            day=0;
        else {
            ++day;
        }

    }
    return returnableArray;
}

您需要在字符串中传递开始日期和结束日期以及警报的天数间隔,此函数会返回字符串中的日期数组。现在您需要使用这些日期并追加时间然后按日期对象NSDateFormatter然后将其设置为fireDate本地通知。

请参阅此link了解详情

答案 1 :(得分:0)

UILocalNotification *localNotification = [[UILocalNotification alloc] init];
localNotification.fireDate = [put a NSDate object here];
localNotification.repeatInterval = NSDayCalendarUnit;

这会创建一个每日重复的本地通知。