Interactive Notificationとは、アプリを開かずに操作を実行できるインタラクティブ要素を備えたプッシュ通知です。Apple Human Interface Guidelines(2025)によると、このような通知はターゲットアクションまでのステップ数を40%削減します。アクションボタンと入力フィールドにより、ユーザーはアプリを開かずに通知シェードから直接、メッセージへの返信、サブスクリプションの支払い、予約の確認を行うことができます。
重要なポイント
Interactive Notificationは、インタラクティブな制御要素(ボタン、スイッチ、テキスト入力フィールド)を含むプッシュ通知の拡張フォーマットです。単に通知するだけの標準的な通知とは異なり、インタラクティブ通知はユーザーが通知シェードやロック画面から直接ターゲットアクションを実行できるようにします。Google Material Design(2025)によると、インタラクティブ通知はメインのアプリプロセスを起動せずにオペレーティングシステムによって処理され、バッテリーリソースを節約し応答時間を短縮します。デベロッパーはiOSではカテゴリ、Androidではチャネルを通じてアクションのセットを定義し、システムはコンテキストに応じてそれらを表示します。
各インタラクティブ通知は3つのレベルで構成されます:メインコンテンツ(タイトル、本文)、アクション(ボタン)、およびオプションのテキスト入力です。iOSではこれらのコンポーネントはUNNotificationCategoryを通じて組み合わされ、AndroidではNotificationCompat.Action.Builderを通じて組み合わされます。システムはOSのバージョンとテキストの長さに応じて、折りたたまれたビューまたは展開されたビューで通知テキストの下にボタンを表示します。ユーザーは通知を受信した直後に利用可能なアクションを確認し、アプリに切り替えることなくそのうちの1つを実行できます。
Interactive Notificationの動作メカニズムは2つのフェーズに分かれます:アプリ起動時のカテゴリ登録と、ユーザーがタップした際のアクション処理です。登録段階では、デベロッパーがアクションのセットを持つカテゴリオブジェクトを作成します。各アクションには識別子、タイトル、オプションがあります。プッシュ通知を受信すると、システムはcategoryIdentifierフィールドで登録されたカテゴリと照合し、対応するボタンを自動的に追加します。ユーザーがボタンをタップすると、システムはアクション識別子とともにUNUserNotificationCenterデリゲートまたはAndroidのPendingIntentを呼び出し、結果をアプリに返します。WWDC 2024によると、適切な設定でのiOS上のインタラクティブアクションの処理時間は200msを超えません。
インタラクティブ通知は、操作方法によって3つの主要なタイプに分類されます:ボタンベース、テキストベース、マルチメディア。各タイプは独自のタスクを解決し、特定のシナリオで使用されます。タイプの選択はコンテキストに依存します。ユーザーに必要なステップが少ないほど、コンバージョンは高くなります。AppleとGoogleは、確認にはボタン、返信には入力フィールド、コンテンツプレビューにはメディアを使用することを推奨しています。
最も一般的なタイプは、1つ以上のボタンを持つ通知で、各ボタンは事前定義されたアクションを実行します。たとえば、カレンダーイベントの「承認」と「拒否」ボタン、メッセージの「いいね」と「返信」ボタンなどです。iOSは最大4つのボタン、Androidは最大3つのボタンをサポートします。ボタンは優先度によってグループ化できます:通常および破壊的(確認付き)。Appleはロック画面でのユーザーの利便性のために、メインボタンを2つまでにすることを推奨しています。
RemoteInputは、ユーザーがアプリを開かずに通知内で直接テキストを入力できるようにするテクノロジーです。iOSではUNTextInputNotificationActionが使用され、Androidでは入力されたテキストを抽出するためのキーを持つRemoteInput.Builderが使用されます。最もよく使われるのはメッセンジャーでのメッセージへのクイック返信です。入力されたテキストは通知サービスまたはローカルハンドラーを通じてアプリに渡されます。制限として、テキストに書式を含めることはできず、プレーン文字列のみです。
メディア添付付きの通知は、画像、オーディオ、ビデオを通知シェードに直接表示できます。iOSではUNNotificationAttachmentを通じて実装され、AndroidではBigPictureStyle付きのNotificationCompat.MessagingStyleを通じて実装されます。メディアはプッシュプロバイダーサーバーによってロードされ、添付ファイルとして通知とともに送信されます。添付ファイルのサイズには制限があります。Appleは10MB以下、Googleは画像で1MB以下を推奨しています。メディアコンテンツは、ニュース、マーケットプレイス、ソーシャルネットワーク向けの通知の情報価値を高めます。
iOSでは、Interactive NotificationはUserNotificationsフレームワークを通じてUNNotificationCategoryとUNNotificationActionを使用して実装されます。アプリは起動時にカテゴリを登録し、通知を受信するとシステムが自動的に対応するボタンを表示します。アクションを処理するには、userNotificationCenter:didReceiveNotificationResponse:withCompletionHandlerメソッドを実装する必要があります。以下は、Swiftでボタンとテキスト入力を備えたカテゴリを登録する例です。
import UserNotifications
let replyAction = UNTextInputNotificationAction(
identifier: "reply",
title: "返信",
options: [.authenticationRequired],
textInputButtonTitle: "送信",
textInputPlaceholder: "メッセージを入力…"
)
let category = UNNotificationCategory(
identifier: "message",
actions: [replyAction],
intentIdentifiers: [],
options: []
)
UNUserNotificationCenter.current()
.setNotificationCategories([category])
setNotificationCategoriesを呼び出した後、システムはカテゴリを保存し、以降のすべての通知にそれらを使用します。新しいバージョンとカテゴリを同期するために、コードはアプリの起動ごとに呼び出される必要があります。応答処理は通知センターデリゲートで実行され、アプリはさらなる処理のためにアクション識別子と入力されたテキストを受け取ります。
func userNotificationCenter(
_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completion: @escaping VoidBlock
) {
if response.actionIdentifier == "reply" {
let textResponse = response as! UNTextInputNotificationResponse
let message = textResponse.userText
sendMessage(message)
}
completion()
}
userNotificationCenterメソッドは、ユーザーがボタンをタップするかテキストを送信した後にシステムによって呼び出されます。ハンドラー内でactionIdentifierがチェックされ、登録された識別子と一致する場合、アプリはuserTextから入力されたテキストを抽出してサーバーに送信します。テキスト入力のない通常のボタンでは、型キャストなしでUNNotificationResponseが使用されます。
Androidでは、インタラクティブ通知はNotificationCompatクラスを通じてaddActionメソッドとRemoteInputメソッドを使用して作成されます。iOSとは異なり、Androidはカテゴリの事前登録を必要としません。アクションはBuilderを通じて各通知に直接追加されます。これにより柔軟性が高まり、各通知が独自のボタンセットを持つことができます。以下は、RemoteInputを使用したJavaでの返信ボタン付き通知の例です。
RemoteInput remoteInput = new RemoteInput.Builder("key_reply")
.setLabel("返信")
.build();
PendingIntent replyIntent = PendingIntent.getBroadcast(
this, 1001,
new Intent("ACTION_REPLY"),
PendingIntent.FLAG_UPDATE_CURRENT
);
NotificationCompat.Action action =
new NotificationCompat.Action.Builder(
R.drawable.ic_reply,
"返信", replyIntent
)
.addRemoteInput(remoteInput)
.build();
NotificationCompat.Builder builder =
new NotificationCompat.Builder(this, "messages")
.setContentTitle("新しいメッセージ")
.setContentText("こんにちは!お元気ですか?")
.setSmallIcon(R.drawable.ic_notification)
.addAction(action);
NotificationManagerCompat.from(this)
.notify(100, builder.build());
重要な要素はRemoteInputで、入力フィールドをアクションに接続します。ユーザーが「返信」ボタンをタップすると、システムは通知内にテキスト入力ダイアログを開きます。送信後、テキストは指定されたPendingIntentを通じてIntent経由でBroadcastReceiverまたはActivityに渡されます。レシーバーでテキストを取得するには、「key_reply」キーを持つRemoteInput.getResultsFromIntent(intent)が使用されます。
Bundle results = RemoteInput.getResultsFromIntent(intent);
if (results != null) {
CharSequence reply = results.getCharSequence("key_reply");
if (reply != null) {
sendReplyToServer(reply.toString());
}
}
getResultsFromIntentメソッドは、応答送信時にシステムによって渡されたIntentからユーザーが入力したテキストを抽出します。結果はCharSequenceとして返され、サーバーに送信するために文字列に変換されます。ユーザーが送信せずに入力ダイアログを閉じた場合、resultsは空になります。これは処理中に考慮する必要があります。このアプローチにより、Activityを起動せずにクイック返信を実装できます。
Interactive Notificationは、ユーザーの迅速な操作が必要なあらゆるタイプのアプリケーションで使用されます。最も効果的なシナリオは、メッセージに返信するメッセンジャー、注文確認のEコマース、招待を受け入れるカレンダーです。Localytics(2025)によると、インタラクティブ通知を持つアプリは7日目のリテンションが28%高くなります。以下は、人気のシナリオとプラットフォーム機能を示す表です。
| シナリオ | アクション | プラットフォーム |
|---|---|---|
| メッセンジャー | テキストで返信、いいね | iOS + Android |
| Eコマース | 確認、延期、キャンセル | iOS + Android |
| カレンダー | 承認、拒否、未定 | iOS |
| ニュース | 保存、共有、開く | Android |
| 予約 | 確認、再スケジュール、キャンセル | iOS + Android |
インタラクティブ通知を設計する際には、制限を考慮することが重要です。ユーザーはアクションを1回しか実行できません。ボタンを押すと、通知は消えるか「完了」状態に遷移します。したがって、各アクションは元に戻せないか、2番目のステップで確認が必要です。
よくある質問
Interactive Notificationは、ボタン、入力フィールド、またはメディア添付ファイルを備えたプッシュ通知で、ユーザーがアプリを開かずにアクションを実行できるようにします。iOSではUserNotifications、AndroidではNotificationCompatを通じてサポートされています。
通常の通知は単に通知するだけで、ユーザーはタップしてアプリを開きます。インタラクティブ通知にはボタンまたは入力フィールドが含まれており、アクションは通知シェード内で直接実行されます。これによりターゲットアクションへの経路が短縮され、アプリへの負荷が軽減されます。
iOSは最大4つのボタン、Androidは最大3つのボタンをサポートします。Androidでは、2つのボタンが通知パネルに表示され、3つ目はドロップダウンメニューで利用可能です。Appleはロック画面でのユーザーの利便性のために、メインボタンを2つまでにすることを推奨しています。
iOSではUNTextInputNotificationActionが使用され、Androidではキーを持つRemoteInput.Builderが使用されます。ユーザーは通知内のダイアログボックスにテキストを入力し、アプリはActivityを起動せずにデリゲートまたはIntentを通じてそれを受信します。
プッシュ通知を受信するにはインターネット接続が必要ですが、インタラクティブ機能自体(ボタンの表示、テキスト入力)はオフラインで動作します。サーバーへの結果の送信は、接続が回復するまで延期できます。
まとめ
ターンキー方式のモバイルアプリケーションを開発します
IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。