[iOS 10] User Notifications framework を使用して指定日時に発火するローカル通知を作成する #wwdc
はじめに
こんばんは。モバイルアプリサービス部の平屋です。
前回の記事「[iOS 10] User Notifications framework を使用して時限式のローカル通知を作成する」に引き続き、iOS 10 で追加された「User Notifications framework」のクラスを使用した実装を紹介します。
今回は指定日時に発火するローカル通知を作成する方法を紹介します。
本記事は Apple からベータ版として公開されているドキュメントを情報源としています。 そのため、正式版と異なる情報になる可能性があります。ご留意の上、お読みください。
実装
さっそく、指定日時に発火するローカル通知を作成する実装を紹介します。
「ユーザーの許可を得る」方法と「通知受信時の処理を実装する」手順については前回の記事を御覧ください。
指定日時に発火するローカル通知を作成する
作成方法は、基本的に前回の記事で紹介した時限式のローカル通知と同じです。
前回との違いは使用するトリガーオブジェクトのタイプです。指定日時に発火するローカル通知の場合は、UNCalendarNotificationTrigger
を使用します。
以下の例では 2016年7月7日に発火するローカル通知を作成しています。
// UNMutableNotificationContent 作成 let content = UNMutableNotificationContent() content.title = "Hello!" content.body = "It's time!" content.sound = UNNotificationSound.default() // UNCalendarNotificationTrigger 作成 let date = DateComponents(month:7, day:7, hour:12, minute:0) let trigger = UNCalendarNotificationTrigger.init(dateMatching: date, repeats: false) // id, content, trigger から UNNotificationRequest 作成 let request = UNNotificationRequest.init(identifier: "CalendarNotification", content: content, trigger: trigger) // UNUserNotificationCenter に request を追加 let center = UNUserNotificationCenter.current() center.add(request)
通知をリピートをさせる
UNCalendarNotificationTrigger
のイニシャライザの 2 つ目の引数を true
にすると通知をリピートをさせることができます。
例えば、毎朝 8:30 に通知を飛ばすには以下のように指定します。
let date = DateComponents(hour:8, minute:30) let trigger = UNCalendarNotificationTrigger.init(dateMatching: date, repeats: true)
また、次に発火する日時は UNCalendarNotificationTrigger
の nextTriggerDate()
メソッドを使用すれば取得できます。
let nextTriggerDate = trigger.nextTriggerDate()
さいごに
本記事では User Notifications framework を使用して指定日時に発火するローカル通知を作成する方法を紹介しました。次回は位置情報に基づいて発火するローカル通知を試してみようと思います!