サードパーティチャンネルを統合し、対応するベンダーの携帯電話で実行されているアプリの場合、サーバーはデフォルトでサードパーティチャンネルを介してメッセージをプッシュします。その他のアプリの場合、サーバーはセルフビルドチャンネルを介してメッセージをプッシュします。
セルフビルドチャンネルがメッセージを受信すると、プッシュ 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");カスタムメッセージ処理の実装
メッセージを自分で処理するには、MPPushMsgServiceAdapter の onMessageReceive メソッドと 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.BuilderのSetContentIntentメソッドとsetDeleteIntentメソッドを呼び出すか、他の効果的な方法で、メッセージの開封と無視をリッスンできます。
サードパーティチャンネル経由で配信されたメッセージの場合、メッセージトラッキングを自分で報告する必要はありません。