「FocusMode」と「新しいNotification」により、大切な時間をより集中しやすい環境に
次は通知周りに関するアップデートについてです。こちらも昨今のリモート中心の生活を背景として、よりiPhone/iPadが使いやすくなる機能の紹介になります。
コロナ禍の現在、業務の中でリモートワークが占める割合が増えている方も多いと思いますが、中には自宅で仕事を行うのがやりづらいと感じている人もいるのではないでしょうか。その理由の1つとして、「外的刺激が多く集中できない」ということがあるかと思います。例えば、「オフィス業務中はあまり気にすることのなかったスマホ通知が、自宅だと気軽に確認できて気が散ってしまう」といったこともあるのではないでしょうか。
ここで活用できる新しいAppleデバイスの新機能が「FocusMode」です。
FocusMode
FocusModeは、「通知やホーム画面を、自分で作成したモードごとに自由にカスタマイズできる機能」です。以前から利用可能な「おやすみモード」が進化し、自分好みにカスタマイズできるようになったとイメージしてもらえると良いかもしれません。
この機能を活用することで、作成した各モードに対して許可する通知設定を細かく決めておくことが可能になっています。また、自分で1つずつ細かく設定するのが面倒臭いという場合には、システムが自動で提案してくれる機能も搭載されています。

例えば「仕事モード」のような設定を作る場合、そのモード中はメッセージや電話、メール、カレンダーの通知のみが配信されるというような形で任意のコントロールを組み込むことが可能です。「基本的にはブロックするけど特定の連絡先だけは通知を許可したい」といったこともできるので、必要な通知を取りこぼす恐れもありません。

また、通知だけでなく、対象のFocusModeに対応したホーム画面を用意しておくことも可能です。仕事に関係ないアプリを非表示にすることもできるので、ついついゲームアプリに手を伸ばしてしまう心配もなくなるでしょう。

この機能は自分の持っている全てのデバイスに同時適用することができるので、端末ごとにいちいち設定する必要もありません。
新しいNotification
FocusModeにより通知の制限ができるようになっただけでなく、表示される通知のUIにもアップデートがありました。
まずデザインの変更として、従来の通知ではアプリアイコンのみが表示されていたのに対し、メッセージ送信者のアイコンも一緒に表示することが可能になりました。これにより送信者が視覚的にわかりやすくなって、より通知が見やすくなりました。

さらに「Notification summary」という新機能により、重要でない通知を要約された1つの通知にまとめることも可能になっています。要約の対象とするアプリや通知タイミングはユーザーが決める形となっており、日中リアルタイムに受信する必要がないものはまとめて通知させることができます。システム側から要約通知に含めることを提案もされるので、これを活用することでより重要な通知に気を配りやすくなりました。

(※ 最新のOSではここからUIがさらに変更になっています。)
ちなみに、Notification summaryはパーソナライズされており、いくつかの通知がピックアップされて大きく表示されますが、これは以下の重み付けのロジックによって決定されます。
- 大きいサムネイルがついた通知はそうでないものより優先される
- 関連度スコア(relevanceScoreの設定値)が高いものが優先される
Interruption Level API
これらの変更をベースとして、各通知には「重み」をつけられるようになりました。これはアプリケーション側が緊急性の度合いによって設定するもので、4つの中断レベルから内容に合わせて1つを選択することになります。

Passive
- 無音かつスクリーンが点灯しない通知なので、デバイスを手に取ったタイミングで気づくことになる
- 時間的な制約がない通知に使う
Active
- 音と振動により知らされる通知
- デフォルトの中断レベルで、iOS14以前の通知と同じような挙動になる
Time Sensitive
- 視覚的に目立つようになる通知で、ユーザーがタップしない限りロック画面に長くとどまる
- 早急な対応が必要な通知に利用する
- OSがユーザーに対してレベルを下げる提案をする場合もある
- 要約設定されていたとしても個別の通知として配信される
Critical
- 最も緊急性の高い通知で、デバイスがミュート状態でも音で知らされる
- 承認されたエンタイトルメントが必要で、健康や安全のためなどの極めて重要な通知だけに利用する
これらの指定は、ローカル通知・プッシュ通知それぞれ以下のような形で行えるので、内容にあった適切なレベルを指定することでユーザー体験をより向上することができます。


また、ユーザーが利用していない通知ばかりが送られているアプリに対して、システムがユーザーに通知のミュートを提案することがあります。そのため、不必要な通知を無闇に送ることは避けた方が良いでしょう。

コミュニケーション通知
コミュニケーションに関する通知はシステム上特別な挙動をするように設計されています。
- アプリアイコンだけでなくアバターアイコンが重なって表示される
- Notification summaryを突破して通知される
- FocusModeで個別の通知許可設定がされていれば通知される
上記のように、コミュニケーション通知はシステムから高い優先度で扱われる特徴を持っていますが、システムに対してはどのように認識させるのでしょうか。
ここで利用することになるのがIntentsフレームワークです。アプリがコミュニケーション通知を送信・受信する際、メッセージング通知の場合はInSendMessageIntent、通話の場合はInStartCallIntentを用いてシステムにユーザー情報を伝えます。そして、この時同時に受け渡すINPersonオブジェクトに対して具体的なデータをセットする形になります。

これによりシステムに特定の通知を「コミュニケーション通知」として認識させることが可能になります。詳細な実装方法は割愛しますが、Appleから実装ドキュメントも出ているのでこちらを参照することでより理解が深められると思います。
