新しい通知を追加するときに、NotificationCenterから以前のすべてのローカル通知を削除したい。ただし、iOS9.0以前のバージョンでは機能しますが、iOS10では複数のローカル通知が発生します。したがって、cancelAllLocalNotifications
が通知をクリアしていないようです。
IOS10でコードが正常にコンパイルされます。
UIApplication.shared.cancelAllLocalNotifications()
IOS 10の場合、Swift 3.0
cancelAllLocalNotifications
iOS10から非推奨。
@available(iOS, introduced: 4.0, deprecated: 10.0, message: "Use UserNotifications Framework's -[UNUserNotificationCenter removeAllPendingNotificationRequests]") open func cancelAllLocalNotifications()
このインポートステートメントを追加する必要があります。
import UserNotifications
通知センターを取得します。そして、以下のような操作を行ってください。
let center = UNUserNotificationCenter.current()
center.removeAllDeliveredNotifications() // To remove all delivered notifications
center.removeAllPendingNotificationRequests() // To remove all pending notifications which are not delivered yet but scheduled.
単一または複数の特定の通知を削除する場合は、以下の方法で実行できます。
center.removeDeliveredNotifications(withIdentifiers: ["your notification identifier"])
それが役に立てば幸い..!!
iOS 10の場合、Objective C:
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
[center removeAllDeliveredNotifications];
[center removeAllPendingNotificationRequests];
Swift 4:
UNUserNotificationCenter.current().removeAllPendingNotificationRequests()
すべての通知を一覧表示する場合:
func listPendingNotifications() {
let notifCenter = UNUserNotificationCenter.current()
notifCenter.getPendingNotificationRequests(completionHandler: { requests in
for request in requests {
print(request)
}
})
}
IOS 10の場合、この方法を使用してすべてのローカル通知を削除できます。私はちょうどテストしました、それは働いています。
NSArray *arrayOfLocalNotifications = [[UIApplication sharedApplication] scheduledLocalNotifications] ;
for (UILocalNotification *localNotification in arrayOfLocalNotifications) {
[[UIApplication sharedApplication] cancelLocalNotification:localNotification] ;
}