全部產品
Search
文件中心

Mobile Platform as a Service:快速開始

更新時間:Jul 13, 2024

本文介紹如何快速將訊息推送組件接入到 Android 用戶端。訊息推送支援原生 AAR 和組件化(Portal & Bundle)兩種接入方式。

前提條件

操作步驟

要使用訊息推送服務,您需要完成以下接入步驟:

  1. 添加推送 SDK。添加推送 SDK 依賴和 AndroidManifest 配置。

    1. 添加 SDK 依賴。根據不同的接入方式進行相應的操作:

    2. 添加 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>
    3. 推送 SDK 為了提高訊息的到達率,內建了進程保活功能,包括上述 com.alipay.pushsdk.BroadcastActionReceiver 監聽系統廣播喚起推送進程,以及進程回收後的自動重啟,接入時可以根據自身需求決定是否啟用這些功能:

      1. 如不需要監聽系統啟動廣播,可刪除:

        <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
        <action android:name="android.intent.action.BOOT_COMPLETED" />
      2. 如不需要監聽網路切換廣播,可刪除:

        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
      3. 如不需要監聽使用者喚醒廣播,可刪除:

        <action android:name="android.intent.action.USER_PRESENT" />
      4. 如不需要監聽充電狀態變化廣播,可刪除:

        <action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
      5. 如不需要監聽上述所有廣播,可將 com.alipay.pushsdk.BroadcastActionReceiverandroid:enabled 屬性設定為 false 。

      6. 如不需要推送進程回收後自動重啟,可在 application 節點下添加以下配置:

        <meta-data
        		android:name="force.kill.push"
        		android:value="on" />
        說明

        該配置僅在基準版本 10.2.3.21 及以上版本中有效。

  2. 初始化。初始化推送服務,建立用戶端和Alibaba Cloud Mobile Push網關之間的長串連,這個長串連由推送 SDK 維護,即自建通道。

    根據不同的接入方式進行相應的操作:

    • 原生 AAR 方式

      • 如已在 Application 中調用初始化 mPaaS,則在 MP.init() 方法之後調用:

         MPPush.init(this);
      • 如未調用 mPaaS 初始化方法,則在 Application 中調用:

          MPPush.setup(this);
          MPPush.init(this);
    • 組件化方式

      LauncherApplicationAgentLauncherActivityAgentpostInit 方法中調用:

      MPPush.init(context);
  3. 建立 Service。建立 Service 繼承 MPPushMsgServiceAdapter,重寫 onTokenReceive 方法,接收自建通道下發的裝置標識(token)。

    public class MyPushMsgService extends MPPushMsgServiceAdapter {
    
        /**
         * 收到自建通道 token 的回調
         *
         * @param token 自建通道 token
         */
        @Override
        protected void onTokenReceive(String token) {
            Log.d("收到自建通道 token: " + token);
        }
    
    }

    AndroidManifest.xml 中聲明該 Service:

    <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>

    完成此步驟後,就可以在控制台通過裝置維度推送訊息了,需要填寫的裝置標識就是收到的 token。

  4. 綁定使用者識別碼。此使用者識別碼 由開發人員自訂,既可以是真實使用者系統的使用者標識,也可以是能和每個使用者形成映射關係的其他參數,例如帳號、手機號等。

    在收到 token 後,可以將 token 和使用者識別碼 綁定:

    String userId = "自訂 userId";
    ResultPbPB bindResult = MPPush.bind(context, userId, token);
    Log.d("綁定 userId " + (bindResult.success ? "成功" : ("錯誤:" + bindResult.code)));

    如已調用 MPLogger 設定過使用者識別碼,可以在綁定時不傳入使用者識別碼,例如:

    MPLogger.setUserId("自訂 userId");
    ResultPbPB bindResult = MPPush.bind(context, token);

    如需解除綁定使用者識別碼,例如使用者退出登入,可調用:

    ResultPbPB unbindResult = MPPush.unbind(context, userId, token);
    ResultPbPB unbindResult = MPPush.unbind(context, token);

    完成此步驟後,即可在控制台通過使用者維度推送訊息,需要填寫的使用者標識就是自訂的使用者識別碼。

  5. (可選)綁定使用者手機號。

    重要

    目前,僅杭州非金融區提供簡訊補充服務。

    在收到 token 後,還可以將 token 和使用者的手機號碼綁定,同時將 token 與使用者識別碼 和手機號綁定。綁定手機號碼後,使用者就可以通過該手機號碼收到相關推送簡訊。

    String userId = "自訂 userId";
    String phoneNumber = "138xxxxxxxx"
    ResultPbPB bindResult = MPPush.bind(context, userId, token,phoneNumber);
    Log.d("綁定 userId " + (bindResult.success ? "成功" : ("錯誤:" + bindResult.code)));

相關操作

  • 為提升訊息推送的到達率,推薦接入 Android 手機廠商提供的推送通道,目前支援華為、小米、OPPO、vivo,具體操作參見 接入廠商通道

  • 收到訊息後會自動發送通知,使用者點擊通知可自動開啟網頁,如需根據自訂的 DeepLink 跳轉應用內頁面,或自訂收到訊息後的行為,請參見 通知點擊處理

更多其他功能,參見 進階功能 說明文檔。

程式碼範例

點擊此處 下載範例程式碼包。

後續操作

接入完成後,可以通過服務端調用 RESTful 介面,推送訊息。具體內容請參考 佈建服務端