对于我的应用程序,我不希望通知在周末发生。
所以我的想法是在星期五的特定时间取消所有通知,我想通过安排任务来做到这一点,就像我安排通知(UILocalNotifications
)
例如,我有我的警报代码:
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setHour:8];
[comps setMinute:25];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *fireDate = [gregorian dateFromComponents:comps];
UILocalNotification *alarm = [[UILocalNotification alloc] init];
alarm.fireDate = fireDate;
alarm.repeatInterval = NSDayCalendarUnit;
alarm.soundName = @"sound.aiff";
alarm.alertBody = @"Message..";
alarm.timeZone = [NSTimeZone defaultTimeZone];
[[UIApplication sharedApplication] scheduleLocalNotification:alarm];
有没有办法用相同的方法取消所有通知,还是Apple不允许这样做?
答案 0 :(得分:1)
您可以通过以下方式取消本地通知:
[[UIApplication sharedApplication] cancelLocalNotification:notification];
您需要循环浏览所有本地通知并在周末取消它们。通过它们循环:
NSArray *notifications = [[UIApplication sharedApplication] scheduledLocalNotifications];
[notifications enumerateObjectsUsingBlock:^(UILocalNotification *notification, NSUInteger idx, BOOL *stop){
if (/* notification.fireDate is on weekend */) {
[[UIApplication sharedApplication] cancelLocalNotification:notification];
}
}];
但是,您必须确保应用程序在星期五运行才能执行代码以删除周末通知。
但是,为什么不安排那些周末出现的人呢?
答案 1 :(得分:0)
您可以使用
方法取消所有本地通知[[UIApplication sharedApplication] cancelAllLocalNotifications];
如果您想浏览它们,并发布最重要的通知,可以使用scheduledLocalNotifications
。