このトピックでは、モバイルプッシュサービス (MPS) コンポーネントを Android クライアントに統合する方法について説明します。MPS は、ネイティブ AAR とコンポーネント化 (Portal & Bundle) という 2 つの統合方法をサポートしています。
前提条件
mPaaS をプロジェクトに統合済みであること。
ネイティブ AAR 接続タイプを使用する場合、まずプロジェクトに mPaaS を追加する プロジェクトに mPaaS を追加する必要があります。
コンポーネントベースの接続タイプを使用する場合、まず統合プロセス コンポーネントベースの統合プロセスを完了する必要があります。
mPaaS コンソールから
.config構成ファイルを取得済みです。構成ファイルの生成とダウンロードの詳細については、「ステップ 3: プロジェクトに構成ファイルを追加する プロジェクトに構成ファイルを追加する」をご参照ください。この Topic の
MPPushMsgServiceAdapterメソッドは、ベースライン 10.1.68.32 以降にのみ適用されます。 お使いのベースラインのバージョンが 10.1.68.32 より前の場合は、mPaaS 10.1.68 アップグレードガイド mPaaS アップグレードガイドに記載の手順に従ってアップグレードする必要があります。説明以前のバージョンの
AliPushRcvServiceメソッドも引き続きサポートされています。以前のバージョンのドキュメントを表示するには、こちらをクリックしてダウンロードしてください。
操作手順
MPS を使用するには、次の手順を実行します。
Push SDK の依存関係を追加し、AndroidManifest ファイルを構成します。
SDK の依存関係を追加します。接続タイプに応じて、以下の手順に従ってください。
ネイティブ AAR: プロジェクトで、[コンポーネント管理 (AAR)] を使用して [モバイルプッシュ (PUSH)] コンポーネントをインストールします。詳細については、「コンポーネントの依存関係の管理 (ネイティブ AAR)コンポーネントの依存関係の管理 (ネイティブ AAR)」をご参照ください。
コンポーネントベース: Portal プロジェクトおよび Bundle プロジェクトでは、[コンポーネント管理] を使用して [Mobile Push (PUSH)] コンポーネントをインストールします。詳細については、「統合プロセス」および「コンポーネント依存関係の追加」をご参照ください。
AndroidManifestの構成を追加します。AndroidManifest.xmlファイルに次の内容を追加してください。説明コンポーネントベースの接続タイプを使用する場合は、Portal プロジェクトに
AndroidManifestの構成を追加します。<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <service android:name="com.alipay.pushsdk.push.NotificationService" android:enabled="true" android:exported="false" android:label="NotificationService" android:process=":push"> <intent-filter> <action android:name="${applicationId}.push.action.START_PUSHSERVICE" /> </intent-filter> </service> <receiver android:name="com.alipay.pushsdk.BroadcastActionReceiver" android:enabled="true" android:exported="true" android:process=":push"> <intent-filter android:priority="2147483647"> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> <action android:name="android.intent.action.USER_PRESENT" /> <action android:name="android.intent.action.ACTION_POWER_CONNECTED" /> </intent-filter> </receiver>メッセージ配信率を向上させるため、MPS SDK にはプロセスのアライブ状態を維持する機能が組み込まれています。この機能には、プッシュプロセスを開始するためにシステムブロードキャストをリッスンする
com.alipay.pushsdk.BroadcastActionReceiverが含まれており、プロセスが終了した場合の自動再起動も提供します。必要に応じて、これらの機能を有効または無効にできます。システムの起動ブロードキャストのリッスンを停止するには、次のコードを削除します。
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <action android:name="android.intent.action.BOOT_COMPLETED" />ネットワークの切り替えブロードキャストのリッスンを停止するには、次のコードを削除します。
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />ユーザープレゼンスブロードキャストのリッスンを停止するには、次のコードを削除します。
<action android:name="android.intent.action.USER_PRESENT" />充電状態の変更ブロードキャストのリッスンを停止するには、次のコードを削除します。
<action android:name="android.intent.action.ACTION_POWER_CONNECTED" />上記のすべてのブロードキャストを受信する必要がない場合は、
com.alipay.pushsdk.BroadcastActionReceiverのandroid:enabledプロパティを false に設定できます。プッシュプロセスが終了した後に自動的に再起動しないようにするには、
applicationノードの下に次の構成を追加します。<meta-data android:name="force.kill.push" android:value="on" />説明この構成は、ベースラインバージョン 10.2.3.21 以降でのみ有効です。
プッシュサービスを初期化して、クライアントとモバイルプッシュゲートウェイ間の持続的接続を確立します。Push SDK は、この自己構築チャンネルである持続的接続を維持します。
接続タイプに応じて、以下の手順に従ってください。
ネイティブ AAR
Applicationで「mPaaS の初期化」のプロセスをすでに完了している場合は、MP.init()メソッドの後に次のメソッドを呼び出します。MPPush.init(this);mPaaS の初期化メソッドを呼び出していない場合は、
Applicationで次のメソッドを呼び出します。MPPush.setup(this); MPPush.init(this);
コンポーネントベース
LauncherApplicationAgentまたはLauncherActivityAgentのpostInitメソッドで次のメソッドを呼び出します。MPPush.init(context);
MPPushMsgServiceAdapterを継承するサービスを作成し、onTokenReceiveメソッドをオーバーライドして、自己構築チャンネルからデバイス ID (トークン) を受信します。public class MyPushMsgService extends MPPushMsgServiceAdapter { /** * 自己構築チャンネルからトークンを受信するためのコールバック * * @param token 自己構築チャンネルのトークン */ @Override protected void onTokenReceive(String token) { Log.d("自己構築チャンネルのトークンを受信しました: " + token); } }このサービスを
AndroidManifest.xmlファイルで宣言します。<service android:name="com.mpaas.demo.push.MyPushMsgService" android:exported="false"> <intent-filter> <action android:name="${applicationId}.push.action.MESSAGE_RECEIVED" /> <action android:name="${applicationId}.push.action.REGISTRATION_ID" /> <category android:name="${applicationId}" /> </intent-filter> </service>この手順を完了すると、コンソールからデバイスディメンションを使用して、特定のデバイスにメッセージをプッシュできるようになります。必要なデバイス ID は、受信したトークンです。
ユーザー ID をアタッチします。このユーザー ID は開発者が定義します。これは、ご利用のユーザーシステムのユーザー ID、またはアカウントや携帯電話番号など、各ユーザーにマッピングできる別のパラメーターにすることができます。
トークンを受信した後、トークンをユーザー ID にアタッチできます。
String userId = "custom_user_id"; ResultPbPB bindResult = MPPush.bind(context, userId, token); Log.d("ユーザー ID のアタッチに " + (bindResult.success ? "成功しました" : ("失敗しました: " + bindResult.code)));すでに
MPLoggerを呼び出してユーザー ID を設定している場合は、トークンをアタッチするときにユーザー ID を省略できます。例:MPLogger.setUserId("custom_user_id"); ResultPbPB bindResult = MPPush.bind(context, token);ユーザー ID をデタッチする (たとえば、ユーザーがログアウトした場合など) には、次のメソッドを呼び出します。
ResultPbPB unbindResult = MPPush.unbind(context, userId, token); ResultPbPB unbindResult = MPPush.unbind(context, token);この手順を完了すると、コンソールからユーザーディメンションを使用して、特定のユーザーにメッセージをプッシュできるようになります。必要なユーザー ID は、カスタムのユーザー ID です。
(任意) ユーザーの携帯電話番号をアタッチします。
重要現在、補足的なショートメッセージサービスは、非金融サービス向けに中国 (杭州) リージョンでのみ利用可能です。
トークンを受信した後、トークンをユーザーの携帯電話番号にアタッチすることもできます。トークンは、ユーザー ID と携帯電話番号の両方に同時にアタッチできます。携帯電話番号をアタッチすると、ユーザーはその番号でプッシュ通知をショートメッセージとして受信できます。
String userId = "custom_user_id"; String phoneNumber = "138xxxxxxxx" ResultPbPB bindResult = MPPush.bind(context, userId, token,phoneNumber); Log.d("ユーザー ID のアタッチに " + (bindResult.success ? "成功しました" : ("失敗しました: " + bindResult.code)));
関連操作
メッセージ配信率を向上させるには、Android スマートフォンメーカーが提供するサードパーティのプッシュチャンネルを統合します。Huawei、Xiaomi、OPPO、vivo のチャンネルがサポートされています。詳細については、「サードパーティチャンネルの統合」をご参照ください。
デフォルトでは、メッセージを受信すると、SDK はクリック時に Web ページを開く通知を表示します。カスタムディープリンクを使用してアプリ内ページにリダイレクトしたり、通知のクリック動作をカスタマイズしたりするには、「通知クリックの処理」をご参照ください。
その他の機能の詳細については、「高度な機能」をご参照ください。
コード例
サンプルコードパッケージをダウンロードするには、こちらをクリックしてください。
次のステップ
統合が完了したら、サーバーサイドで RESTful API を呼び出してメッセージをプッシュできます。詳細については、「サーバーサイドの構成」をご参照ください。