サードパーティのプッシュチャンネルと統合され、そのベンダーのデバイスで実行されるアプリケーションの場合、サーバーサイドはデフォルトでサードパーティチャンネルを通じてメッセージを送信します。その他のすべてのアプリケーションでは、メッセージは自社構築チャンネルを通じて送信されます。
自社構築チャンネルがメッセージを受信すると、プッシュ 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");メッセージ処理のカスタマイズ
メッセージを処理するには、MPPushMsgServiceAdapter の onMessageReceive メソッドと 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.BuilderのsetContentIntentメソッドとsetDeleteIntentメソッド、またはその他の有効なメソッドを使用して、これらのユーザー操作をリッスンします。
サードパーティチャンネルからのメッセージは報告する必要はありません。