[iOS 10] UNUserNotificationCenter を使用して通知センターに表示されている通知を管理する #wwdc

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは。モバイルアプリサービス部の平屋です。前回の記事に引き続き、iOS 10 で追加された「User Notifications framework」のクラスを使用した実装を紹介します。

前回の記事では未配信の通知を管理する方法を紹介しました。本記事では、通知センターに表示されている通知を管理する方法を紹介します。

本記事は Apple からベータ版として公開されているドキュメントを情報源としています。 そのため、正式版と異なる情報になる可能性があります。ご留意の上、お読みください。

実装

通知センターに表示されている通知を管理するには、UNUserNotificationCenter のメソッドを使用します。出来ることは「未配信の通知を管理する」場合と同様です。

通知センターに表示されている通知の一覧を取得する

通知センターに表示されている通知の一覧を取得するには UNUserNotificationCentergetDeliveredNotifications(completionHandler:) メソッドを使用します。

取得処理は非同期で実行されます。処理完了時に呼ばれるハンドラの引数は UNNotification の配列です。

UNNotificationUNNotificationRequestDate (配信日時) をプロパティに持ちます。UNNotificationRequest は、次に解説する「通知センターから特定の通知を削除する」場合などに使用できます。

let center = UNUserNotificationCenter.current()
center.getDeliveredNotifications { (notifications: [UNNotification]) in

}

通知センターから特定の通知を削除する

通知センターから特定の通知を削除するには UNUserNotificationCenterremoveDeliveredNotifications(withIdentifiers:) メソッドを使用します。

引数には、削除したい UNNotificationRequestidentifier の配列をセットします。削除処理は非同期で実行されます。

let center = UNUserNotificationCenter.current()
center.removeDeliveredNotifications(withIdentifiers: [notification.request.identifier])

通知センターから全ての通知を削除する

通知センターから全ての通知を削除するには UNUserNotificationCenterremoveAllDeliveredNotifications() メソッドを使用します。

削除処理は非同期で実行されます。

let center = UNUserNotificationCenter.current()
center.removeAllDeliveredNotifications()

さいごに

本記事では、通知センターに表示されている通知を管理する方法を紹介しました。次回はリモート通知を試してみようと思います!

参考資料

Framework Reference

Class Reference