[WWDC18][レポート] iOS 12で通知が変わる! What’s New in User Notifications #WWDC18
はじめに
この記事ではWWDCのセッション、What’s New in User Notificationsの内容についてレポートします。
概要
Local and push notifications enable your app to keep users informed with timely and relevant content, by displaying messages and accepting users' actions, or playing distinctive sounds, or updating the badge on your app icon. Improvements to rich notifications help you create more engaging content and better manage notifications. Find out what's new and get expert advice on implementing user notifications in your app.
内容
セッションの内容は以下でした。
- Grouped notifications
- Notification content extensions
- Notification management
- Provisional authorization
- Critical alerts
Grouped notifications
iOS 12では通知のグルーピングができる。
方法は2つ。Automatic groupingとThread identifierを指定する方法。
Thread identifierを使う場合はUNMutableNotificationContentに設定する。
そして、通知のペイロードにthread-id
を含める。
Thread identifierが指定されていない場合はAutomatic groupingになる。
ユーザーは設定でグルーピング設定が可能。
Notification content extensions
これまでのNotification Content ExtensionsのActionsは動的ではなかった。
iOS 12ではNSExtensionContextにnotificationActions
プロパティが追加された。
このプロパティを使うことで動的にアクションを差し替えることが可能。
そして、通知のカスタムUIをタップした時のインタラクションが可能になりました。
plistにUNNotificationExtensionUserInteractionEnabled
を追加してtrueに設定することで有効になります。
これを使えば、例えば通知のカスタムUI上にボタンを置いてボタンタップ時に処理を行うことができるようになります。
iOS 12ではNSExtensionContextにperformNotificationDefaultAction
メソッドが追加されました。
このメソッドを呼ぶとアプリケーションをprogrammaticallyに起動できます。
次は通知を消す方法。
これまで、didReceive
の中でcompleteionハンドラーを.dismiss
で実行する方法がありました。
iOS 12ではdismissNotificationContextExtension
メソッドが追加されました。
このメソッドを使えば、通知のカスタムUI上に配置したボタンタップ時に通知を消すことができます。
Notification management
iOS 12ではユーザーが通知の設定をDeliver Quietlyに設定できる。 これは、Notification Centerにのみ表示される。
UNUserNotificationCenterDelegate
のuserNotificationCenter(_:openSettingsFor:)
を実装することでアプリ内で通知設定画面を表示できる。
Provisional authorization
これは、これまでの通知許可のアラート。
iOS 12の新機能、Provisional Authorizationの特徴。
通知をお試しで受信できて、ON/OFFはユーザーが変更可能。
Provisional Authorizationを実装するには、requestAuthorization
のオプションに.provisional
を含める。
Critical Alerts
次はCritical Alerts。例えば健康、家、セキュリティに関するもの。
Do Not Disturbやringer switch、サウンドON/OFFを無視して通知される。
Entitlementはこちら。
Critical Alertsはこのようにアラートアイコンが表示される。
ユーザーは設定でON/OFF可能。
ユーザーにCritical Alertsの許可を求めるダイアログ。
Critical Alertsを実装するには、requestAuthorization
のオプションに.criticalAlert
を含める。
デフォルトサウンドのCritical Alertはこのように実装する。
カスタムサウンドも設定可能。
プッシュのペイロードにCritical Alertの情報を含める必要がある。
おわりに
iOS 12ではUser Notificationsに大幅に機能が追加されました。 特に試しにプッシュ通知が受信できる機能は、プッシュ通知の許可ダイアログが表示されないためプッシュのユーザー体験が変わると思います。1つ1つの技術要素について早く試してみたいです。