すべてのプロダクト
Search
ドキュメントセンター

Mobile Platform as a Service:通知クリックの処理

最終更新日:Jan 22, 2026

サードパーティのプッシュチャンネルと統合され、そのベンダーのデバイスで実行されるアプリケーションの場合、サーバーサイドはデフォルトでサードパーティチャンネルを通じてメッセージを送信します。その他のすべてのアプリケーションでは、メッセージは自社構築チャンネルを通じて送信されます。

  • 自社構築チャンネルがメッセージを受信すると、プッシュ SDK は自動的に通知を送信します。ユーザーが通知をクリックすると、Web ページが自動的に開きます。

    重要

    プッシュ SDK は 10000 から始まる通知 ID を使用します。使用する他の通知 ID がこの範囲と競合しないようにしてください。

  • サードパーティチャンネルがメッセージを受信すると、モバイル OS は自動的に通知を送信します。プッシュ SDK も開発者もこのプロセスをコントロールすることはできません。プッシュ SDK は、ユーザーが通知をクリックした後にのみメッセージを受信し、その時点で Web ページが自動的に開きます。

前提条件

  • このトピックで説明する MPPushMsgServiceAdapter メソッドは、ベースライン 10.1.68.32 以降にのみ適用されます。ベースライン 10.1.68.32 より前のバージョンを使用している場合は、ベースラインをアップグレードする必要があります。詳細については、「mPaaS アップグレードガイド」をご参照ください。

  • 古いバージョンの AliPushRcvService メソッドも引き続き使用できます。これらのバージョンのドキュメントを表示するには、こちらをクリックしてダウンロードしてください。

アプリケーション内ページへのリダイレクト

アプリケーション内の特定のページにリダイレクトするには、プッシュメッセージのリダイレクトアドレスに mpaas://navigate のようなカスタムディープリンクを入力します。また、ディープリンクを受信して他のページにディスパッチするために、アプリケーションでルーティングアクティビティを設定する必要もあります。

AndroidManifest.xml ファイルで、ルーティングアクティビティに対応する intent-filter を追加します。例:

<activity android:name=".push.LauncherActivity"
    android:launchMode="singleInstance">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.BROWSABLE" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="mpaas" />
    </intent-filter>
</activity>

ルーティングアクティビティで URI とメッセージを取得します。

Uri uri = intent.getData();
MPPushMsg msg = intent.getParcelableExtra("mp_push_msg");

メッセージ処理のカスタマイズ

メッセージを処理するには、MPPushMsgServiceAdapteronMessageReceive メソッドと onChannelMessageClick メソッドをオーバーライドします。

public class MyPushMsgService extends MPPushMsgServiceAdapter {

    /**
     * 自社構築チャンネルから受信したメッセージのコールバック。
     *
     * @param msg 受信したメッセージ。
     * @return メッセージが処理されたかどうかを示すブール値。
     *         - true: SDK はメッセージを処理しません。通知の送信やその後のクリック処理を含め、メッセージを自身で処理する必要があります。
     *         - false: SDK は自動的に通知を送信し、クリック操作を処理します。
     */
    @Override
    protected boolean onMessageReceive(MPPushMsg msg) {
        Log.d("Message received from self-built channel: " + msg.toString());
        // メッセージを処理します (例: カスタム通知の送信)。
        return true;
    }

    /**
     * サードパーティチャンネルからの通知クリックのコールバック。
     *
     * @param msg 受信したメッセージ。
     * @return クリックが処理されたかどうかを示すブール値。
     *         - true: SDK はクリックを処理しません。リダイレクト操作を自身で処理する必要があります。
     *         - false: SDK は自動的にリダイレクト操作を処理します。
     */
    @Override
    protected boolean onChannelMessageClick(MPPushMsg msg) {
        Log.d("Message from third-party channel was clicked: " + msg.toString());
        // クリック後のロジックを処理します。
        return true;
    }

}

MPPushMsg オブジェクトは、すべてのメッセージパラメーターをカプセル化します。

String id = msg.getId(); // メッセージ ID
boolean isSilent = msg.isSilent(); // サイレントメッセージかどうかを示します

String title = msg.getTitle(); // メッセージタイトル
String content = msg.getContent(); // メッセージ本文

String action = msg.getAction(); // リダイレクトタイプ。0: URL。1: カスタムディープリンク。
String url = msg.getUrl(); // リダイレクトアドレス。URL またはディープリンクを指定できます。

int pushStyle = msg.getPushStyle(); // メッセージタイプ。0: 通常メッセージ。1: 長文メッセージ。2: リッチメディアメッセージ。
String iconUrl = msg.getIconUrl(); // リッチメディアメッセージの小さいアイコン。
String imageUrl = msg.getImageUrl(); // リッチメディアメッセージのイメージ。

String customId = msg.getCustomId(); // カスタムメッセージ ID。
String params = msg.getParams(); // 拡張パラメーター。

メッセージを処理した後、メッセージのイベントトラッキングデータも報告する必要があります。そうしないと、コンソールのプッシュ利用状況分析で正しいデータを収集できません。

MPPush.reportPushOpen(msg); // メッセージが開かれたことを報告します。
MPPush.reportPushIgnored(msg); // メッセージが無視されたことを報告します。

自社構築チャンネルからのメッセージの場合:

  • サイレントメッセージは報告する必要はありません。

  • 非サイレントメッセージの場合は、開かれたとき、または無視されたときに報告します。Notification.BuildersetContentIntent メソッドと setDeleteIntent メソッド、またはその他の有効なメソッドを使用して、これらのユーザー操作をリッスンします。

サードパーティチャンネルからのメッセージは報告する必要はありません。