LoginSignup
31
19

More than 1 year has passed since last update.

【WWDC21】Notificationの新機能とinterruptionLevelについて

Last updated at Posted at 2021-06-22

こんにちわ。iOSアプリ開発をしている@haseken_devです。
あまりQiitaを書いてなかったため、リハビリも兼ねて、
WWDC21にて発表された、Notificationの新機能と新enumのinterruptionLevelについて、
業務にも必要そうだったため、簡単にまとめてみました。

1. はじめに

この記事はAppleが先日開催したWWDC21にて発表した、Notificationの新機能と新しいinterruptionLevelについて、下記のセッション動画をもとに簡単にまとめました。

・Send communication and Time Sensitive notifications

不足点あるかと思いますが、誰かの参考になれば幸いです。

また、本記事で不備・認識誤りなどがありましたら、ぜひご連絡いただけたら幸いです。

※Communication Notificationに関しては、簡単に触れる程度になっています。
※セッションのスクリーンショットに字幕が入ってしまっています。。。

2. 目次

3. Notificationの新規機能について

今回、WWDC21では新しい機能がいくつか発表されました。

3.1. 見た目の変更

スクリーンショット 2021-06-21 23.17.09.png
Notificationはappアイコンと共にコンテンツと関連するメディアに焦点が当たるようにUIが変更されました。

スクリーンショット 2021-06-21 23.18.57.png

また、Notificationのactionにアイコンも置けるようになりました。
これにより、actionが何を行うものなのかを視覚的に判断できるようになりそうです。

スクリーンショット 2021-06-21 23.19.51.png
actionにアイコンを追加するには、UINotificationActionIconのオブジェクトを、
システムアイコンか、bundle内(できればAsset catalogs内)の画像を指定して作成し、
UINotificationActionのiconに指定することで表示が可能になります。

セッション内では、Rich Notificationも新しいレイアウトに合わせて動作確認を行うことにも言及されていました。

3.2. 新しいNotificationの管理方法について

Notificationの管理方法として、「Notification summary」と「集中モード」が新たに提供されます。

3.2.1. Notification summary

スクリーンショット 2021-06-21 23.30.52.png
一日の中で、スケジュールされた時間にNotificationをまとめて配信できるようになり、
優先順位ごとにまとめて表示させる設定が可能になります。

スクリーンショット 2021-06-21 23.33.48.png
Notificationの内容にメディアを添付することで、Notification summaryの中で優先的に表示される可能性が高くなるとのことでした。
また、新しいpropertyのrelevanceScoreを採用して関連性のスコアを提供することで、適切な通知が優先的に表示されるようです。
(まだ試せていませんが、同appのNotificationで比較するために利用されるのではないかと考えています。そうでないと、どのappも最大値を設定して配信することになると思われます。。)

3.2.2. 集中モード

スクリーンショット 2021-06-21 23.38.27.png
スクリーンショット 2021-06-21 23.38.43.png
読書、睡眠、仕事など、活動内容や時間帯に応じて、Notificationの表示や中断をフィルタリングできる設定を行えるようになりました。

スクリーンショット 2021-06-21 23.39.20.png
集中モードの設定では、割り込み通知を送信できる人や、appを選択することが可能です。

スクリーンショット 2021-06-21 23.39.50.png
Notificationがこれらの制御を突破する可能性はあるそうですが、それはユーザーが許可した場合のみのようです。
また、Communication NotificationやTime SensitiveなNotificationがその制御を突破する可能性があるとのことでした。
このことより、app開発者は適切なNotificationをユーザーに届ける重要性がより増してきました。

3.3. Interruption levels

UserNotification frameworkに新たなAPIであるUNNotificationInterruptionLevelが提供されました。
こちらに関しては、詳細を後述します。

3.4 Announce

スクリーンショット 2021-06-22 1.33.56.png

AnnounceはSiriでNotificationをAirPods Proなどに発話するために利用されています。

スクリーンショット 2021-06-21 23.45.06.png
これまで必要だったallowAnnouncementは、iOS 15よりDeprecatedになっています。

スクリーンショット 2021-06-21 23.47.09.png
iOS 15より、サポートされているオーディオデバイスに接続されている場合、全ての通知でannounceがサポートされます。
Notificationをアナウンスさせるかどうかはデバイスの設定appから設定ができます。
アナウンスを有効にした場合、CommunicationおよびTime SensitiveがdefaultでONとなるようです。

スクリーンショット 2021-06-22 0.01.28.png
また、CarPlayに接続されている間は、Communicationが自動的にアナウンスされるように設定ができるようです。

3.5. Communication notifications

スクリーンショット 2021-06-22 0.03.27.png
iOS 15では、通常のNotificationとは別に、電話やメッセージなど、誰かとコミュニケーションによるNotificationを区別するために、Communication notificationsを新しく追加しました。
これによって、よりリッチなUXを提供できるようです。

最も特徴的なものがアバター表示になります。
タイトルには必ず送信者が入り、グループ通信の場合はサブタイトルに受信者が入ります。
スクリーンショット 2021-06-22 0.04.34.png

スクリーンショット 2021-06-22 0.44.14.png
Communication notificationsを有効にするためには、Capabilitiesで有効にし、
Info.plistのNSUserActivityTypesにIntens typeを追加する必要があります。

スクリーンショット 2021-06-22 0.08.09.png
スクリーンショット 2021-06-22 0.29.31.png
現段階では、SiriKitのStandard IntentsであるINStartCallIntentINSendMessageIntentのみNotificationに追加できます。
Siriは提供されたIntentsを元に、ShortcutsやSuggestionを提供します。

4. Interruption levelsについて

UNNotificationInterruptionLevelで提供されるレベルは4つあります。

4.1. 各レベルについて

4.1.1. Passive(New!)

スクリーンショット 2021-06-22 0.53.34.png
スクリーンショット 2021-06-22 0.55.01.png
notificationがデバイスに届いたとき、バイブレーションやサウンドを鳴らすことなく、
また画面が点灯することもないレベルです。
Notificationのリストにサイレントで配信され、ユーザーが次にリスト表示した時に見ることができます。
例えばおすすめの食事、新しいエピソードの配信など、いずれ見られるはずの通知で使用するのが良さそうです。

4.1.2. Active

スクリーンショット 2021-06-22 0.55.14.png
スクリーンショット 2021-06-22 0.55.31.png
デバイスに届いた時、サウンドを鳴らす、バイブレーションを行う、画面を点灯させるなど、
現行のnotificationに似ている挙動をします。
集中モードなどのシステム制御を突破することはありません。
UNNotificationInterruptionLevelのdefaultはこの値になります。
例えばスポーツ速報や、ライブストリームビデオの通知など、集中モードなどをわざわざ中断する必要のないnotificationに使用するのが良さそうです。

4.1.3. Time Sensitive(New!)

スクリーンショット 2021-06-22 1.02.04.png
基本的にはActiveと同様の動作をしますが、許可されていれば、集中モードなどの制御を突破することが可能です。
例えばアカウントのセキュリティ、荷物の配達などすぐに注意を払う必要があり、
積極的に中断することが適切な場合に使用を検討するのがよさそうです。
このレベルを有効にするためには、Capabilitiesで有効にする必要があります。

4.1.4 Critical

スクリーンショット 2021-06-22 1.10.38.png
既に存在するCriticalなnotificationのサポート相当のものです。
積極的に警告し、集中モードなどの制御も突破します。さらに、デバイスの消音ボタンすらも突破します。
このnotificationを配信するには、Appleに承認されたentitlementsが必要となります。
悪天候や地域の安全性に関するアラートなど、用途をしっかり考えて配信する必要がありそうです。

4.2. レベルの設定方法

notificationにInterruption Levelsを設定するには、下記の方法があります。

スクリーンショット 2021-06-22 1.13.02.png
UNMutableNotificationContentのinterruptionLevelにlevelを設定します。

スクリーンショット 2021-06-22 1.14.28.png
ペイロードに設定する場合は、新しくkeyの"interruption-level"に値を設定します。

また、4.1.でも述べましたが、Time SensitiveではCapabilitiesを有効にする必要があり、
CriticalではAppleに承認されたentitlementsを必要とします。

5. 最後に

いかがでしたでしょうか。今回notification周りでかなり変更が入った印象を自分は受けております。

notificationは便利な一方で、適切ではない配信はこれまでもユーザーからは求められていないケースがあったことも事実だと思います。

iOS 15が配信された後では、集中モードがどんどん設定されていくことが予想されますが、
その中で適切なレベルのnotificationを配信していくように考えていかなければ、ゆくゆくはユーザー満足度を下げ、appをアンインストールされることにも繋がりかねないと考えています。
一方で、Notification summaryでまとめて配信された場合に、どのようにユーザーにnotificationに気がついてもらうかを考えていかなければ、適切なレベルで配信を行った時にも埋もれてしまう可能性もあると思います。

iOS 15が配信されるまでに、iOS 15への最適化のスケジュールを検討し、
チームで適切なnotificationの配信方法について議論する必要がありそうです。

Human Interface Guidelineで公開されている下記の項目もよく読み込んでいきたいと思っています。

・Notifications

6. 参考

・Send communication and Time Sensitive notifications

31
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
19