web-dev-qa-db-ja.com

iOS 5通知センターからアプリの通知をプログラムでクリアできますか?

IOS 5通知センターからアプリが作成した古い通知を削除したいと思います。これはできますか?もしそうなら、どのように?

48
Will

通知センターから通知を削除するには、アイコンバッジ番号をゼロに設定するだけです。

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];

これは番号が変更された場合にのみ機能するため、アプリがバッジ番号を使用しない場合は、最初に設定してからリセットする必要があります。

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:1];
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
75
voidStern

私が使用する(バッジを必要としない)より簡単な方法は、次のように、スケジュールされたローカル通知の配列をそれ自体にリセットすることです。

  UIApplication* application = [UIApplication sharedApplication];
  NSArray* scheduledNotifications = [NSArray arrayWithArray:application.scheduledLocalNotifications];
  application.scheduledLocalNotifications = scheduledNotifications;

これは、通知センターに存在するすべての「古い」通知が削除される一方で、スケジュールされた通知はすべて有効のままになるという効果があります。ただし、この動作に関するドキュメントはまだ見ていませんので、iOSの将来のリリースで変更される可能性があります。

もちろん、all通知を削除する場合は、次のようになります。

  [[UIApplication sharedApplication] cancelAllLocalNotifications];
19
Gabriel Reid

SwiftおよびiOS 10.0で通知を消去する場合

import UserNotifications

if #available(iOS 10.0, *) {
    let center = UNUserNotificationCenter.current()
    center.removeAllPendingNotificationRequests() // To remove all pending notifications which are not delivered yet but scheduled.
    center.removeAllDeliveredNotifications() // To remove all delivered notifications
}
2
Anit Kumar

私にとっては、次のようなバッジのみでローカル通知を送信することでのみ機能しました:

    if([UIApplication sharedApplication].applicationIconBadgeNumber == 0) {
        UILocalNotification *singleLocalPush = [[UILocalNotification alloc] init];
        singleLocalPush.fireDate = [NSDate dateWithTimeIntervalSinceNow:1];
        singleLocalPush.hasAction = NO;
        singleLocalPush.applicationIconBadgeNumber = 1;
        [[UIApplication sharedApplication] scheduleLocalNotification:singleLocalPush];
        [singleLocalPush release];
    } else {
        [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
    }

そしてメソッドで

    -(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification

バッジを再び0に設定できます。

1
piz78