全部產品
Search
文件中心

Mobile Platform as a Service:華為推送

更新時間:Jul 13, 2024

本文介紹華為推送的接入流程,主要包括以下三個步驟。

  1. 註冊華為推送

  2. 接入華為推送

  3. 測試華為推送

註冊華為推送

登入華為開發官網,註冊帳號並且開啟推送服務。詳情請參見 華為推送開啟步驟

接入華為推送

推送 SDK 支援接入華為 HMS2 和 HMS5,但二者只能擇其一接入。

  • HMS2 版本過舊,如果您是首次接入,推薦接入 HMS5。

  • 如果您是從 HMS2 升級到 HMS5,請先刪除下文列出的 HMS2 AndroidManifest 配置。

接入華為推送 - HMS5.x 版本

  1. 添加 推送 - HMS5 組件,方式與添加推送 SDK 相同,參見 添加推送 SDK

    說明

    推送 - HMS5 組件僅包含適配代碼,不包含 HMS SDK,請按照下文單獨添加 HMS SDK 依賴。

  2. 在華為應用服務控制台下載設定檔 agconnect-services.json 並放置到應用主工程的 assets 目錄下。

  3. 在專案根目錄下的 build.gradle 檔案中配置 HMS SDK 的 Maven 倉地址。

    allprojects {
     repositories {
         // 其他repo已省略
         maven {url 'https://developer.huawei.com/repo/'}
     }
    }
  4. 在主工程的 build.gradle 檔案中添加 HMS SDK 依賴。

     dependencies {
         implementation 'com.huawei.hms:push:5.0.2.300'
     }
    • HMS SDK 版本會經常更新,最新版本號碼可以參考 HMS SDK 版本更新說明

    • 當前適配的版本為 5.0.2.300,如需使用更高版本,可根據需求修改,通常來說廠商 SDK 都會向下相容,如不相容可加入DingTalk群 41708565 反饋適配新版的需求。

  5. 如需使用混淆,則要添加相關混淆配置:

接入華為推送 - HMS2.x 版本

  1. 添加 推送 - 華為2 組件,方式與添加推送 SDK 相同,參見 添加 SDK 。 當前內建的 HMS2 SDK 版本為 2.5.2.201。

  2. 配置 AndroidManifest.xml (組件化方式在 Portal 工程中添加),並替換其中的 com.huawei.hms.client.appid 的值。

     <activity
          android:name="com.huawei.hms.activity.BridgeActivity"
          android:configChanges="orientation|locale|screenSize|layoutDirection|fontScale"
          android:excludeFromRecents="true"
          android:exported="false"
          android:hardwareAccelerated="true"
          android:theme="@android:style/Theme.Translucent">
           <meta-data
              android:name="hwc-theme"
              android:value="androidhwext:style/Theme.Emui.Translucent" />
     </activity>
      <!--為了防止低版本 dex 崩潰,動態開啟 provider,enabled 設定為 false-->
      <provider
           android:name="com.huawei.hms.update.provider.UpdateProvider"
           android:authorities="${applicationId}.hms.update.provider"
           android:exported="false"
           android:enabled="false"
           android:grantUriPermissions="true">
         </provider>
             <!-- value 的值“appid”用實際申請的應用 ID 替換,來源於開發人員聯盟網站應用程式的服務詳情。注意,value 中的斜杠(\)及空格要保留。-->
       <meta-data
                 android:name="com.huawei.hms.client.appid"
                 android:value="\ your huawei appId" />
         <receiver
                 android:name="com.huawei.hms.support.api.push.PushEventReceiver"
                 android:exported="true"
                 >
                 <intent-filter>
                     <!-- 接收通道發來的通知欄訊息,相容老版本 PUSH -->
                     <action android:name="com.huawei.intent.action.PUSH" />
                 </intent-filter>
      </receiver>
    
       <receiver
                 android:name="com.alipay.pushsdk.thirdparty.huawei.HuaweiPushReceiver"
                 android:exported="true"
                 android:process=":push">
                 <intent-filter>
                     <!-- 必須,用於接收 TOKEN -->
                     <action android:name="com.huawei.android.push.intent.REGISTRATION" />
                     <!-- 必須,用於接收訊息 -->
                     <action android:name="com.huawei.android.push.intent.RECEIVE" />
                     <!-- 可選,用於點擊通知欄或通知欄上的按鈕後觸發 onEvent 回調 -->
                     <action android:name="com.huawei.android.push.intent.CLICK" />
                     <!-- 可選,查看 PUSH 通道是否串連,不查看則不需要 -->
                     <action android:name="com.huawei.intent.action.PUSH_STATE" />
                 </intent-filter>
        </receiver>
  3. 如需使用混淆,則要添加相關混淆配置:

測試華為推送

  1. 接入華為推送後,您可以在華為手機上啟動應用並確保調用了初始化方法(參見 訊息推送初始化),推送 SDK 會自動擷取華為推送的廠商 token 並上報。

  2. 您可以在殺掉應用進程的情況下推送測試訊息:

    • 如果仍然能收到訊息,說明您的應用成功接入華為推送。

    • 如果不能收到訊息,請按照下文進行問題排查。

排查問題

  1. 檢查華為配置和參數是否和華為推送後台一致:

    • 接入 HMS2 請檢查 AndroidManifest.xml 中相關配置是否添加, com.huawei.hms.client.appid 是否和華為推送後台一致。

    • 接入 HMS5 請檢查 agconnect-services.json 是否存在,存放位置是否正確。

  2. 檢查 mPaaS 控制台是否開啟了華為通道(參見 配置華為推送渠道),以及相關配置是否和華為推送後台一致。

  3. 查看 logcat 日誌進行排查:

    1. 選擇 push 進程,過濾 mPush.PushProxyFactory,檢查是否存在以下日誌:

      D/mPush.PushProxyFactory: found proxy com.mpaas.push.external.hms.Creator (HMS2)
      D/mPush.PushProxyFactory: found proxy com.mpaas.push.external.hms5.Creator (HMS5)

      若無,說明添加 推送 - 華為2推送 - HMS5 組件可能存在問題,請確認是否正確添加。

    2. 選擇主進程,過濾 mHMS,檢查是否擷取到了華為推送的廠商 token,如出現日誌get token failed:說明擷取華為廠商 token 失敗,錯誤碼參見 華為推送錯誤碼

    3. 選擇主進程,過濾 report channel token, 檢查上報華為廠商 token 是否成功,如出現以下日誌:

      report channel token error: xxxx

      說明上報廠商 token 失敗,請檢查 mPaaS 設定檔base64Code 是否有值,以及擷取設定檔時上傳的 apk 簽名和當前應用是否一致。

其他問題

對 EMUI 和華為行動服務是否有版本限制

對 Emotion UI(簡稱 EMUI,是華為基於 Android 進行開發的情感化作業系統)和華為行動服務有版本限制,詳細版本要求請參見 裝置接收華為推送訊息的條件

華為手機無法列印日誌

在手機撥號介面輸入 *#*#2846579#*#* 進入工程菜單 > 後台設定 > LOG 設定 > 選中 AP 日誌。重啟手機後,logcat 開始生效。