我有一个应用程序,我必须安排本地通知。考虑用户输入上午7点的时间,然后必须根据他设置的设置每天(或者,2天,或每3天)在上午7点触发通知。必须定期触发此通知,直到用户关闭通知为止。
我怀疑如何安排通知每2天或每3天或每2周一次点火?对不起,如果这是一个非常基本的问题。我是Local Notifications的新手。
答案 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;
这会创建一个每日重复的本地通知。