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

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

最終更新日:Jan 17, 2025

サードパーティチャンネルを統合し、対応するベンダーの携帯電話で実行されているアプリの場合、サーバーはデフォルトでサードパーティチャンネルを介してメッセージをプッシュします。その他のアプリの場合、サーバーはセルフビルドチャンネルを介してメッセージをプッシュします。

  • セルフビルドチャンネルがメッセージを受信すると、プッシュ SDK は自動的に通知を配信し、ユーザーはそれをクリックして Web ページを開くことができます。

    重要

    SDK で使用されるメッセージ通知 ID は 10000 から始まります。使用する他の通知 ID がそれと競合しないようにしてください。

  • アプリ内ページにジャンプするには、「アプリ内ページリダイレクトの実装」をご参照ください。

  • 受信したメッセージを自分で処理するには、「カスタムメッセージ処理の実装」をご参照ください。

  • サードパーティチャンネルがメッセージを受信すると、モバイルシステムは自動的に通知を配信します。プッシュ SDK も開発者も干渉することはできません。プッシュ SDK は、ユーザーが通知をクリックした場合にのみメッセージを受信して Web ページを開くことができます。

  • アプリ内ページにジャンプするには、「アプリ内ページリダイレクトの実装」をご参照ください。

  • メッセージのクリック時のリダイレクトを自分で処理するには、「カスタムメッセージ処理の実装」をご参照ください。

前提条件

  • このガイドで説明されている MPPushMsgServiceAdapter メソッドは、ベースライン 10.1.68.32 以降のバージョンにのみ適用されます。現在のベースラインバージョンが 10.1.68.32 より前の場合は、「mPaaS スペックアップガイド」を参照して、ベースラインをスペックアップしてください。

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

アプリ内ページリダイレクトの実装

アプリ内の特定のページにジャンプする必要がある場合は、メッセージのリダイレクトアドレスにカスタム DeepLink(例:mpaas://navigate)を入力し、アプリにルーティング Activity を設定して DeepLink を受信し、他のページに配信します。

また、ルーティング Activity の 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>

ルーティング 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("セルフビルドチャンネル経由でメッセージを受信しました:" + msg.toString());
        // カスタム通知の配信など、メッセージを自分で処理します
        return true;
    }

    /**
     * 通知がクリックされた後のコールバック。サードパーティチャンネル経由で配信されたメッセージは、通知バーに表示されます。
     *
     * @param msg 受信したメッセージ
     * @return メッセージのクリックが処理されたかどうか:
     * true が返された場合、SDK はサードパーティチャンネル経由で配信された通知のクリックを処理しません。開発者は、通知クリック時のリダイレクトを処理する必要があります。
     * false が返された場合、SDK は自動的に通知クリック時のリダイレクトを処理します。

     */
    @Override
    protected boolean onChannelMessageClick(MPPushMsg msg) {
        Log.d("サードパーティチャンネル経由のメッセージがクリックされました:" + 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:カスタム DeepLink
String url = msg.getUrl(); // リダイレクトアドレス、URL または DeepLink

int pushStyle = msg.getPushStyle(); // メッセージタイプ、0:通常のメッセージ、1:大きなテキスト、2:リッチテキスト
String iconUrl = msg.getIconUrl(); // リッチテキストメッセージのアイコン
String imageUrl = msg.getImageUrl(); // リッチテキストメッセージの大きな画像

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

メッセージを処理した後、次のメッセージトラッキングを報告する必要がある場合があります。そうしないと、mPaaS コンソールの MPS 使用状況分析モジュールは正確な統計データを取得できません。

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

セルフビルドチャンネル経由で配信されたメッセージの場合:

  • ミュートメッセージの場合、メッセージトラッキングを報告する必要はありません。

  • ミュート以外のメッセージの場合、開封済みメッセージと無視されたメッセージを報告する必要があります。Notification.BuilderSetContentIntent メソッドと setDeleteIntent メソッドを呼び出すか、他の効果的な方法で、メッセージの開封と無視をリッスンできます。

サードパーティチャンネル経由で配信されたメッセージの場合、メッセージトラッキングを自分で報告する必要はありません。