1

私のアプリでは、週末に通知をオフにしたくありません。そこで私の考えは、金曜日の特定の時間にすべての通知をキャンセルすることでした。通知をスケジュールするのと同じように、タスクをスケジュールすることでこれを行いたいと思います ( 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 はこれを許可していませんか?

4

2 に答える 2

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];
    }
}];

ただし、週末の通知を削除するコードを実行するには、アプリを金曜日に実行する必要があります。

しかし、そもそも週末にあるものをスケジュールしてみませんか?

于 2012-12-08T10:21:13.593 に答える
0

メソッドを使用して、すべてのローカル通知をキャンセルできます

[[UIApplication sharedApplication] cancelAllLocalNotifications];

それらを調べて、おそらく最も重要な通知を投稿したい場合は、を使用できますscheduledLocalNotifications

于 2012-12-08T10:19:07.693 に答える