モバイルアプリのNotification Action:概要、種類、設定方法

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

Notification Action — プッシュ通知内に直接表示され、ユーザーがアプリを開かずにアクションを実行できるインタラクティブなボタンや入力フィールドです。これはユーザーエクスペリエンスの重要な要素であり、ターゲット画面への経路を短縮します。Android Developers, 2025によると、Notification Actionはインタラクションの摩擦を減らすことでユーザーエンゲージメントを最大40%向上させます。

重要なポイント

  • Notification Action — タスクを迅速に実行するためのプッシュ通知内のインタラクティブ要素。
  • Androidでは、アクションはPendingIntentとNotificationCompat.Action.Builderを使用して実装されます。
  • iOSでは、アクションはUNNotificationActionとUNNotificationCategoryを使用して設定されます。
  • ボタン、テキスト入力、完了マーク、遅延アクションがサポートされています。
  • 各アクションは、タップ時にアプリのコールバックで処理する必要があります。

Notification Actionとは

Notification Actionは、特定のアクションを実行するためにプッシュ通知に追加されるインタラクティブなインターフェース要素です。ユーザーはアプリに入ることなく、メッセージに返信したり、タスクを確認したり、特定の画面を開いたりできます。アクションは通知テキストの下にボタンとして、またはスワイプ時に展開ビューで表示されます。

通知にアクションが必要な理由

Notification Actionの主な目的は、ユーザーが目標に到達するまでのステップ数を減らすことです。アプリを開いて目的の画面に移動する代わりに、ユーザーは1つのボタンを押すだけです。調査によると、インタラクティブな通知を備えたアプリは、シンプルな通知と比較して25~40%高いエンゲージメントを示しています。

異なるプラットフォームでの視覚的表现

Androidでは、Notification Actionはコンパクトビューでアイコンボタンとして、展開モードではテキストボタンとして表示されます。iOSでは、通知を長押しするか左にスワイプするとアクションが表示されます。各プラットフォームにはアクション数に関する推奨事項があります。Androidは最大3つ、iOSは最大4つを推奨しています。

プラットフォーム最大アクション数表示方法アクションの種類
Android3アイコン+テキストボタン、テキスト入力
iOS4長押し/スワイプボタン、テキスト入力

AndroidのNotification Action

Androidでは、Notification ActionはNotificationCompat.Builderを使用してaddAction()メソッドで作成されます。各アクションには、アイコン、テキスト、およびタップ時に起動するPendingIntentが含まれます。Android 7.0(API 24)以降、RemoteInputによる直接テキスト入力がサポートされています。

基本アクションの作成

通知にボタンを作成するには、タップ時に起動されるPendingIntentを定義する必要があります。PendingIntentはActivityを開いたり、ServiceやBroadcastReceiverを起動したりできます。アクションアイコンはモノクロで、Material Designに準拠している必要があります。

kotlin
val acceptIntent = Intent(context, AcceptActionReceiver::class.java)
acceptIntent.putExtra("notification_id", notificationId)

val acceptPendingIntent = PendingIntent.getBroadcast(
    context, requestCode,
    acceptIntent, PendingIntent.FLAG_UPDATE_CURRENT
)

val notification = NotificationCompat.Builder(context, CHANNEL_ID)
    .setSmallIcon(R.drawable.ic_notification)
    .setContentTitle("確認リクエスト")
    .setContentText("タスクの完了を確認してください")
    .addAction(R.drawable.ic_accept, "確認", acceptPendingIntent)
    .build()

テキスト入力付きアクション(RemoteInput)

テキスト入力が必要なシナリオ(メッセージへの返信など)では、AndroidはRemoteInputを提供します。ユーザーは通知内に直接テキストを入力し、アプリはActivityを開かずにそれを受信します。RemoteInputはAndroid 7.0+でサポートされ、BroadcastReceiverまたはServiceでの明示的な処理が必要です。

kotlin
val remoteInput = RemoteInput.Builder("reply_input")
    .setLabel("返信を入力")
    .build()

val replyAction = NotificationCompat.Action.Builder(
    R.drawable.ic_reply, "返信", replyPendingIntent
)
    .addRemoteInput(remoteInput)
    .build()

val notification = NotificationCompat.Builder(context, CHANNEL_ID)
    .addAction(replyAction)
    .build()

Androidでのアクション処理

アクションがタップされると、システムは指定されたPendingIntentを起動します。RemoteInputから入力されたテキストを取得するには、RemoteInput.getResultsFromIntent(intent)を呼び出します。UIスレッドをブロックしないように、IntentServiceまたはWorkManagerでアクションを処理することをお勧めします。

iOSのNotification Action

iOSでは、Notification ActionはUserNotificationsフレームワークを使用して実装されます。開発者はアクションカテゴリ(UNNotificationCategory)を作成し、アプリ起動時に登録します。各アクションは、一意の識別子を持つUNNotificationActionオブジェクトによって定義されます。

iOSでのカテゴリとアクションの設定

iOSのプッシュ通知にアクションを追加するには、関連するアクションをグループ化するカテゴリを作成する必要があります。カテゴリはcategoryフィールドを通じて通知ペイロードで指定されます。通知を受信すると、システムは指定されたカテゴリから利用可能なアクションを表示します。

swift
import UserNotifications

class NotificationSetup {

    func registerNotificationCategories() {
        let approveAction = UNNotificationAction(
            identifier: "APPROVE_ACTION",
            title: "承認",
            options: [.foreground]
        )

        let declineAction = UNNotificationAction(
            identifier: "DECLINE_ACTION",
            title: "拒否",
            options: [.destructive]
        )

        let category = UNNotificationCategory(
            identifier: "REQUEST_CATEGORY",
            actions: [approveAction, declineAction],
            intentIdentifiers: [],
            options: []
        )

        UNUserNotificationCenter.current()
            .setNotificationCategories([category])
    }
}

iOSでのアクション処理

ユーザーがアクションをタップすると、システムはUNUserNotificationCenterのデリゲートでuserNotificationCenter:didReceiveNotificationResponseメソッドを呼び出します。response.actionIdentifierには実行されたアクションの識別子が含まれます。テキスト入力には、ユーザーが入力したテキストを提供するUNTextInputNotificationActionが使用されます。

swift
extension AppDelegate: UNUserNotificationCenterDelegate {

    func userNotificationCenter(
        center: UNUserNotificationCenter,
        didReceive response: UNNotificationResponse,
        withCompletionHandler completionHandler: @escaping () -> Void
    ) {
        switch response.actionIdentifier {
        case "APPROVE_ACTION":
            Log.d("Action: approved")
        case "DECLINE_ACTION":
            Log.d("Action: declined")
        case UNNotificationDefaultActionIdentifier:
            Log.d("Action: opened app")
        default:
            break
        }
        completionHandler()
    }
}

Notification Actionの種類とシナリオ

Notification Actionは、インタラクションの種類と使用シナリオによって分類されます。アクションタイプの正しい選択は、ユーザーエクスペリエンスとターゲットアクションへのコンバージョンに直接影響します。

アプリ起動ボタン

最も一般的なタイプ — 特定の画面でアプリを開くボタンです。AndroidではPendingIntent.getActivity()、iOSではUNNotificationActionの.foregroundオプションを使用します。注文詳細の表示など、完全なインターフェースが必要なアクションに使用されます。

バックグラウンドアクション

アプリを開かずに実行されるアクション。AndroidではPendingIntent.getBroadcast()またはPendingIntent.getService()を使用します。iOSでは.authenticationRequiredオプションまたは.foregroundなしを使用します。例:タスクの完了マーク、投稿へのいいね、お気に入り追加。

テキスト入力

ユーザーが通知内に直接テキストを入力できます。AndroidではRemoteInput、iOSではUNTextInputNotificationActionを使用して実装されます。メッセージへの返信、コメント、ワンタイム確認コードの入力に使用されます。

破壊的アクション

データを不可逆的に変更するアクション — 削除、拒否、ブロック。Androidでは視覚的に強調表示され(一部のシステムでは赤色)、iOSでは.destructiveオプションが必要です。破壊的アクションには、追加のダイアログや2回目のタップなどによる確認を求めることをお勧めします。

テキスト入力付きアクション

アクションの別のクラス — 通知から直接テキストを入力します。AndroidではPendingIntentと組み合わせたRemoteInputを使用して実装されます。iOSでは、UNNotificationActionを継承するUNTextInputNotificationActionが使用されます。このようなアクションは、メッセンジャーでのクイック返信、プロモーションコードの入力、フィードバックフォームの記入、サービス品質の評価に使用されます。入力されたテキストはアクション識別子とともにアプリに渡されます。両方のプラットフォームでテキスト入力を正しく処理するには、ターゲットアクションを実行する前に入力データの解析と検証を実装する必要があります。

タップ処理とロギング

正しいNotification Actionの処理は、分析とユーザーエクスペリエンスにとって重要です。各タップはログに記録され、アプリが閉じられていてもアクションは確実に実行される必要があります。

分析とトラッキング

分析システムを通じて各Notification Actionタップを追跡します。Firebase Analytics、Mixpanel、Yandex.Metricaを使用すると、アクション識別子、タップ時間、通知コンテキストを記録できます。このデータは通知戦略を最適化し、エンゲージメントを高めるのに役立ちます。さまざまなアクションセットを用いたA/Bテストは、ユーザーとの最も効果的なインタラクションシナリオを特定するのに役立ちます。

アプリ終了時の信頼性の高い処理

アプリが閉じられていても、アクションがタップされるとシステムはIntentまたはUNNotificationResponseを配信します。Androidでは、確実な処理のためにBroadcastReceiverを使用します。iOSでは、システムがアプリをバックグラウンドで起動し、デリゲートに応答を渡します。重要なアクション(支払い確認、認証)の場合は、再試行メカニズムを追加し、正常に完了したことをユーザーに通知します。

Androidでのボタンの視覚的カスタマイズ

Android 7.0以降、開発者はアイコンと色を通じてNotification Actionの外観に影響を与えることができます。アイコンはモノクロ(アルファチャンネル)、サイズ24x24 dpである必要があります。iOSでは、ボタンのカスタマイズは制限されており、システムの色とフォントが使用されます。Material Designは、アクションを優先度でグループ化することを推奨しています。最も重要なアクションを最初に、破壊的なものを最後に配置します。

よくある質問

1つの通知にいくつのアクションを追加できますか?

Androidは最大3つのアクション、iOSは最大4つを推奨しています。制限を超えると、一部のアクションが表示されないか、サブメニューに隠れます。

AndroidでNotification Actionにアイコンを追加するには?

アイコンはNotificationCompat.Action.Builderにdrawableリソースとして渡します。アイコンはモノクロ(アルファチャンネル)、サイズ24x24 dpで、Material Designのガイドラインに準拠する必要があります。

Notification Actionはロック画面で動作しますか?

はい、通知がロック画面に表示され、visibilityフラグがVISIBILITY_PUBLICに設定されている場合に動作します。iOSでは、認証が必要なアクションには.authenticationRequiredオプションが必要です。

アプリがメモリから削除された場合、アクションのタップを処理するには?

Androidでは、システムがプロセスを再作成してIntentを配信します。iOSでは、システムがアプリをバックグラウンドで起動します。確実な配信は、AndroidではBroadcastReceiver、iOSではUNNotificationServiceExtensionを使用して実現できます。

AndroidとiOSのアクションのユーザーエクスペリエンスの違いは?

Androidでは、アクションは通知の直下にアイコンとして表示されます。iOSでは、アクションは長押しまたはスワイプの背後に隠れています。通知のUXデザインは、これらのプラットフォームの違いを考慮する必要があります。

まとめ

  • Notification Action — 素早いインタラクションのためのプッシュ通知内のボタンと入力フィールド。
  • Androidでは、アクションはPendingIntentを使用してNotificationCompat.Actionで作成されます。
  • iOSでは、アクションはカテゴリ登録付きのUNNotificationActionで定義されます。
  • テキスト入力はRemoteInput(Android)またはUNTextInputNotificationAction(iOS)で実装されます。
  • 最大アクション数 — Androidは3、iOSは4。
  • 各アクションは通知最適化のために分析システムに記録する必要があります。
  • 信頼性の高い処理には、AndroidではBroadcastReceiver、iOSではAppDelegateを使用します。

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

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

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

こちらもお読みください