[iOS 10] UNUserNotificationCenter を使用して通知センターに表示されている通知を管理する #wwdc
はじめに
こんにちは。モバイルアプリサービス部の平屋です。前回の記事に引き続き、iOS 10 で追加された「User Notifications framework」のクラスを使用した実装を紹介します。
前回の記事では未配信の通知を管理する方法を紹介しました。本記事では、通知センターに表示されている通知を管理する方法を紹介します。
本記事は Apple からベータ版として公開されているドキュメントを情報源としています。 そのため、正式版と異なる情報になる可能性があります。ご留意の上、お読みください。
実装
通知センターに表示されている通知を管理するには、UNUserNotificationCenter
のメソッドを使用します。出来ることは「未配信の通知を管理する」場合と同様です。
通知センターに表示されている通知の一覧を取得する
通知センターに表示されている通知の一覧を取得するには UNUserNotificationCenter
の getDeliveredNotifications(completionHandler:)
メソッドを使用します。
取得処理は非同期で実行されます。処理完了時に呼ばれるハンドラの引数は UNNotification
の配列です。
UNNotification
は UNNotificationRequest
と Date
(配信日時) をプロパティに持ちます。UNNotificationRequest
は、次に解説する「通知センターから特定の通知を削除する」場合などに使用できます。
let center = UNUserNotificationCenter.current() center.getDeliveredNotifications { (notifications: [UNNotification]) in }
通知センターから特定の通知を削除する
通知センターから特定の通知を削除するには UNUserNotificationCenter
の removeDeliveredNotifications(withIdentifiers:)
メソッドを使用します。
引数には、削除したい UNNotificationRequest
の identifier
の配列をセットします。削除処理は非同期で実行されます。
let center = UNUserNotificationCenter.current() center.removeDeliveredNotifications(withIdentifiers: [notification.request.identifier])
通知センターから全ての通知を削除する
通知センターから全ての通知を削除するには UNUserNotificationCenter
の removeAllDeliveredNotifications()
メソッドを使用します。
削除処理は非同期で実行されます。
let center = UNUserNotificationCenter.current() center.removeAllDeliveredNotifications()
さいごに
本記事では、通知センターに表示されている通知を管理する方法を紹介しました。次回はリモート通知を試してみようと思います!