モバイルアプリのInteractive Notification:概要、種類、仕組み

著者: IT Sectr 公開日: 2026-03-21 読了時間: 9 分

Interactive Notificationとは、アプリを開かずに操作を実行できるインタラクティブ要素を備えたプッシュ通知です。Apple Human Interface Guidelines(2025)によると、このような通知はターゲットアクションまでのステップ数を40%削減します。アクションボタンと入力フィールドにより、ユーザーはアプリを開かずに通知シェードから直接、メッセージへの返信、サブスクリプションの支払い、予約の確認を行うことができます。

重要なポイント

  • Interactive Notificationは、アプリを開かずに動作するボタンまたは入力フィールド付きの通知です。
  • ユーザーは通知シェードから直接、メッセージに返信したり、操作を確認したり、テキストを入力したりできます。
  • iOSはUNNotificationContentExtensionをカテゴリとアクションとともに使用してインタラクティビティを実現します。
  • AndroidはNotificationCompatとRemoteInputを通じてインタラクティブ通知をサポートします。
  • エンゲージメントはインタラクティブ通知を持つアプリでLocalytics(2025)によると28%向上します。

Interactive Notificationとは

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での実装

iOSでは、Interactive NotificationはUserNotificationsフレームワークを通じてUNNotificationCategoryとUNNotificationActionを使用して実装されます。アプリは起動時にカテゴリを登録し、通知を受信するとシステムが自動的に対応するボタンを表示します。アクションを処理するには、userNotificationCenter:didReceiveNotificationResponse:withCompletionHandlerメソッドを実装する必要があります。以下は、Swiftでボタンとテキスト入力を備えたカテゴリを登録する例です。

通知カテゴリの登録

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を呼び出した後、システムはカテゴリを保存し、以降のすべての通知にそれらを使用します。新しいバージョンとカテゴリを同期するために、コードはアプリの起動ごとに呼び出される必要があります。応答処理は通知センターデリゲートで実行され、アプリはさらなる処理のためにアクション識別子と入力されたテキストを受け取ります。

ボタン押下の処理

swift
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での実装

Androidでは、インタラクティブ通知はNotificationCompatクラスを通じてaddActionメソッドとRemoteInputメソッドを使用して作成されます。iOSとは異なり、Androidはカテゴリの事前登録を必要としません。アクションはBuilderを通じて各通知に直接追加されます。これにより柔軟性が高まり、各通知が独自のボタンセットを持つことができます。以下は、RemoteInputを使用したJavaでの返信ボタン付き通知の例です。

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)が使用されます。

入力されたテキストの抽出

java
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とは何ですか?

Interactive Notificationは、ボタン、入力フィールド、またはメディア添付ファイルを備えたプッシュ通知で、ユーザーがアプリを開かずにアクションを実行できるようにします。iOSではUserNotifications、AndroidではNotificationCompatを通じてサポートされています。

インタラクティブ通知は通常のプッシュとどう違いますか?

通常の通知は単に通知するだけで、ユーザーはタップしてアプリを開きます。インタラクティブ通知にはボタンまたは入力フィールドが含まれており、アクションは通知シェード内で直接実行されます。これによりターゲットアクションへの経路が短縮され、アプリへの負荷が軽減されます。

インタラクティブ通知にはいくつのボタンを追加できますか?

iOSは最大4つのボタン、Androidは最大3つのボタンをサポートします。Androidでは、2つのボタンが通知パネルに表示され、3つ目はドロップダウンメニューで利用可能です。Appleはロック画面でのユーザーの利便性のために、メインボタンを2つまでにすることを推奨しています。

通知にテキスト入力フィールドを追加するにはどうすればよいですか?

iOSではUNTextInputNotificationActionが使用され、Androidではキーを持つRemoteInput.Builderが使用されます。ユーザーは通知内のダイアログボックスにテキストを入力し、アプリはActivityを起動せずにデリゲートまたはIntentを通じてそれを受信します。

インタラクティブ通知の動作にインターネットは必要ですか?

プッシュ通知を受信するにはインターネット接続が必要ですが、インタラクティブ機能自体(ボタンの表示、テキスト入力)はオフラインで動作します。サーバーへの結果の送信は、接続が回復するまで延期できます。

まとめ

  • Interactive Notificationは、アプリを開かずにアクションを実行するためのボタンまたは入力フィールドを備えたプッシュ通知です。
  • 種類 — ボタンベース、テキストベース(RemoteInput)、マルチメディア(画像と動画付き)。
  • iOSはUNNotificationCategory、UNNotificationAction、UNTextInputNotificationActionを通じてインタラクティビティを実装します。
  • Androidはアクション処理にNotificationCompat、RemoteInput、PendingIntentを使用します。
  • リテンションはインタラクティブ通知を持つアプリでLocalytics(2025)によると7日目に28%向上します。
  • 制限 — アクションは1回のみ実行され、ボタンを押すと通知は「完了」状態に遷移します。
  • 推奨 — メッセージへの返信、注文の確認、招待の受け入れなどのクイックアクションにインタラクティビティを使用します。

ターンキー方式のモバイルアプリケーションを開発します

IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。

プロジェクトについて相談

こちらもお読みください