iOSプッシュ通知の新機能 “通知要約” と “集中モード” に対する戦略

※この記事は以前に[こちら](https://techblog.istyle.co.jp/archives/9008)に寄稿した内容の再編集版です

# はじめに
[SARAH iOSアプリケーション](https://apps.apple.com/jp/app/id916083595)の開発をしている Yuki です。iOSのプッシュ通知の "通知要約" や "集中モード" に対する戦略について記します。知っておくと開発だけでなくマーケにも役立ちます。

# “通知要約”と”集中モード”とは
いずれもiOS15で追加された新機能です。設定方法は割愛しますが設定アプリから設定できます。

### 通知要約
指定したアプリのプッシュ通知を指定した時間にまとめて受け取ることができ、指定時間以外は通知されなくなる機能です。
![blog1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2368372/e54d653d-7663-a9eb-741f-a0749aa67d71.png)

### 集中モード
睡眠、プライベート、仕事など場面に応じてプッシュ通知を抑制できる機能です。例えば仕事中はゲームアプリのプッシュ通知のみOFFにするといった柔軟なカスタマイズが可能です。iOS14で登場した「おやすみモード」の上位互換です。

# 何が問題なのか
iPhoneユーザにとってはプッシュ通知の受け取りを細かく制限でき非常に便利な機能ですが、自身が運営するアプリまでその対象にされてしまうと当然プッシュ通知の開封率などに影響します。

しかしながら、運営側に対してもこの通知要約や集中モードに適応させるための **“Interruption Levels（中断レベル）”** と **“Relevance Score（関連性スコア）”** という新APIが同時に公開されました。

# Interruption Levels（中断レベル）
ユーザのプッシュ通知抑制の設定に対して**どこまで突破してプッシュ送信するか**の設定値です。１つのプッシュ通知送信時に以下の４つのレベルを選択できるようになりました。
※Critical（緊急）の利用には特別な申請が必要で、緊急地震速報などがそれに当たります。
|LEVEL  |音/振動/画面起動  |通知要約,集中モードを突破  |音や振動の設定を突破  |
|---|---|---|---|
|**Passive（受動的）** |✖️  |✖️  |✖️  |
|**Active（能動的）** |⭕️  |✖️  |✖️  |
|**Time Sensitive（即時）** |⭕️  |⭕️  |✖️  |
|**Critical（緊急）** |⭕️  |⭕️  |⭕️  |

ここで一つ「全て Time Sensitive にしてしまえば良いのでは？」という単純な戦略が考えられますが、これは非常に危険です。Time Sensitive のプッシュ通知を展開したユーザには以下のようなオプトインアウトが表示されるため、ユーザの意思により以降の即時通知受信を拒否されてしまいます。更に**この拒否設定を再度許可させるためのインターフェイスをアプリ内に提供する機能は現状ありません**。ユーザ自身の意思で設定画面から許可しなおしてもらうしかないです。
![blog2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2368372/f992c80d-cc75-5362-3d51-e598808b5a9b.png)
Appleも以下のように公言しています。
>Use the Time Sensitive interruption level only for notifications that are relevant in the moment.
… make sure the notification is about an event that’s happening now or will happen within an hour.

*via [Apple Human Interface Guidelines](https://developer.apple.com/design/human-interface-guidelines/guidelines/overview/)*

ユーザの意に反して何件もプッシュ通知が着信したら当然嫌われますね。Time Sensitive の利用に「１時間以内にユーザに何かしらのアクションを起こさせたいとき」という目安が示されています。具体的には「〇〇キャンペーン終了まであと１時間！」などでしょうか。

# Relevance Score（関連性スコア）
プッシュ通知に対して 0.0 ~ 1.0 の範囲で設定できる**プッシュ通知の優先順位の指標**です。１日に複数のプッシュ通知を送信する際に有効で、より重要なプッシュ通知に高いスコアを設定することで通知要約の上位に表示させることができます。
![blog1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2368372/e54d84fe-b419-c0a7-fa92-37277ac1a535.png)
通知要約は複数のアプリをひとまとめに表示するため、当然運用者は他社より自身のアプリを上位に表示させたいと考えます。しかしながらこのスコアは**アプリケーションを跨いで影響し合いません**。Appleはこの表示順位について、[Apple Tech Talks 2021](https://developer.apple.com/jp/tech-talks/) のオンラインセッションの中で

>画像や動画を使用したリッチ通知をより上位に表示するようにソートする

と述べていました。より**UXに富んだプッシュ通知運用の競争を促している**ようにも感じられました。

# APNsペイロードKeyやSwiftでの設定
APNsのペイロードやSwiftコードからでも設定可能になっています。
### APNsペイロード
```json
{
    "aps": {
        "interruption-level": "time-sensitive",
        "relevance-score": 1.0
    }
}
```
### Swift
```swift
import UserNotification

let content = UNMutableNotificationContent()
content.interrruptionLevel = .timeSensitive
content.relevanceScore = 1.0
```

# 考察・まとめ
通知要約や集中モードはプッシュ通知運営側から見るとネガティブな機能に思えますが、ユーザに寄り添うことを前提に Interruption Levels や Relevance Score を適切に運用することで「欲しい情報が欲しい時に届く・見つかる」などのユーザ体験向上が図れます。今以上にユーザとの信頼関係を築くチャンスと言えるかもしれません。

## エンジニア募集中
SARAHでは一皿に特化したごはん情報の投稿・配信・収集・解析するサービスを、toC、toBと多角的に展開しています。
そんなSARAHを一緒に爆進してくれるメンバーを募集中です！興味のある方はぜひ↓の採用窓口からカジュアルにお話を聞きにきてください！
皆さんと一緒に働けるのを楽しみにしています！
また、SARAHではテックブログを運営してるので、是非見てみてください

### SARAH Tech Blog Hub
https://tech.sarah30.com/

### 採用窓口
https://www.notion.so/sarah30/SARAH-97caa9e30b1941cfbacc35558d1af86a

https://open.talentio.com/r/1/c/sarah30/homes/2362

https://www.wantedly.com/companies/sarah