天天看點

廠商 push 不通排查指南一、push 相關背景二、問題排查舉例三、其他常見問題

廠商 push 不通排查指南一、push 相關背景二、問題排查舉例三、其他常見問題
為了提升「MPS 消息推送」的推送的到達率,mPaaS 內建了華為、小米等廠商的推送功能,進而有效地提高使用者留存率,提升使用者體驗。在日常運維過程中,發現少部分裝置在廠商 push下無法 push,在此分享下相關案例的排查過程,友善後續同類問題借鑒。

一、push 相關背景

1.push 整體架構

以接觸最多的國内 Android 裝置為例,整體結構如下:

廠商 push 不通排查指南一、push 相關背景二、問題排查舉例三、其他常見問題

2.廠商 push 和自建 push

廠商 push 通道:優點是通過各個 OS 廠商維護的長連結進行推送,在 App 被系統殺掉後也可以進行推送,推送到達率高于自建push。支援華為,小米,oppo,vivo等廠商。缺點是,目前廠商的push基本都隻支援通知欄消息的推送,在使用者點選通知前,不啟動應用,對紅點, 圖檔等消息格式支援有限。

自建push通道:通過App啟動後和自建服務端的長連接配接通道實作推送,缺點也很明顯,App被殺掉後,就無法收到資訊。主要用于不支援廠商管道場景下的push。

二、問題排查舉例

通過上面的介紹,可以看出三方廠商 push 是否成功,主要取決于三個鍊路,分别為:

  1. 三方 token 正确生成上報
  2. 服務端正常轉發到廠商伺服器
  3. 下發到用戶端消息可以正常顯示

1.測試準備

為了快速驗證問題,我們需要準備一個推送程式,可以快速推送資訊到App上。MPS提供了推送的Http接口供外部調用,我們可以通過初始化一個簡單的java程式實作推送資訊的發送,友善聯調。

使用連結

2.三方 token 生成階段

目前 mPaaS 對三方廠商 push 的 token 生成分為以下步驟。

2.1 裝置在三方push的廠商清單裡

以華為裝置為例,判斷是否是華為裝置的标準是,檢測目前手機是否是 emui,如果是才走華為 PUSH SDK。在我們日常運維的 case 中,發現過部分裝置由于刷機或者其他操作,在華為手機上安裝的不是 emui,類似這種裝置是走不了華為 push 的,隻能走自建 push。

以vivo裝置為例,低版本手機隻有在vivo公布的白名單裝置内才支援推送。

廠商 push 不通排查指南一、push 相關背景二、問題排查舉例三、其他常見問題

2.2 生成三方 token

在調用 push sdk 生成 token 的過程中,由于 push sdk 的生成也依賴目前手機的 room 版本,以華為為例,就強依賴華為手機内置的 HMS Core 版本。針對這種場景下的問題,在擷取三方 token 失敗的時候,會在回調裡傳回對應錯誤碼。如下圖所示,搜尋 push 的關鍵字 mPush14,然後過濾,可以擷取 token 傳回錯誤碼2。

廠商 push 不通排查指南一、push 相關背景二、問題排查舉例三、其他常見問題

我們檢視華為定義的錯誤碼,發現2表示 SERVICE_VERSION_UPDATE_REQUIRED,需要更新目前的 HMS 版本。

廠商 push 不通排查指南一、push 相關背景二、問題排查舉例三、其他常見問題

更新HMS版本的方案有兩個

方案1:主動更新,調用更新服務接口,更新更新效果如下所示:

在啟動階段調用如下服務,安裝更新華為推送服務
if (HuaweiApiAvailability.getInstance().isHuaweiMobileNoticeAvailable(context) == ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED) {
   // 需要更新
  HuaweiApiAvailability.getInstance().resolveError(activity, ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED, 1);
}           
廠商 push 不通排查指南一、push 相關背景二、問題排查舉例三、其他常見問題

方案2: 引導使用者去

華為設定

裡去更新

2.3 三方 token 正常上報

生成 token 後會通過 RPC 接口上報到 MPS 服務端,需要檢查 RPC 接口是否有異常,上報接口是:alipay.client.yunpushcore.device.report

廠商 push 不通排查指南一、push 相關背景二、問題排查舉例三、其他常見問題

2.4 token 過期

以 oppo 為例,是在應用第一次啟動時注冊生效,後在刷機、還原手機(設定-其他設定-還原手機)、解除安裝應用時會失效,需要重新注冊才能推送。

廠商 push 不通排查指南一、push 相關背景二、問題排查舉例三、其他常見問題

3.服務端投送階段

3.1 消息包含了紅點,靜默,群發

目前如果消息設定了紅點或者靜默,因為廠商 push 不支援,MPS 會自動走自建 push。

3.2 三方服務端報錯

這種主要用作 mPaaS 服務端推送到三方服務端後,三方傳回異常。這種需要去 MPS 拉取服務端報錯日志,然後核對廠商文檔解決,比如華為服務端報錯文檔。

3.3 三方服務端限流

以 vivo 為例,預設推送走的是營運消息,每天隻能對同一個使用者推送 5 次。隻有改成系統 push 類型才能沒有這個限制。

4. 裝置顯示階段

4.1 裝置必須打開通知權限才能顯示

比如 oppo 的通知權限預設是關閉的,需要打開通知權限,或者引導使用者打開後才能顯示。

4.2 應用包名和注冊 oppo 配置保持一緻

應用的包名要和注冊 oppo 平台填寫的包名要一緻,不然不會顯示。

三、其他常見問題

1.常用日志舉例

1.1 tag:mPush14

主要是 mPaaS 上層應用層日志列印,列印 push 注冊 token 相以及自建通道 push 相關資訊。

廠商 push 不通排查指南一、push 相關背景二、問題排查舉例三、其他常見問題

1.2 tag: mcssdk

mcssdk 是 oppo push sdk 的日志 tag,可以檢視廠商的一些日志資訊,比如檢視三方 token

廠商 push 不通排查指南一、push 相關背景二、問題排查舉例三、其他常見問題

2.其他思路

如果以上都解決不了,最後建議去看各個廠商的官方介紹,可能會找到一些思路。

廠商 push 不通排查指南一、push 相關背景二、問題排查舉例三、其他常見問題
廠商 push 不通排查指南一、push 相關背景二、問題排查舉例三、其他常見問題

END

延伸閱讀

廠商 push 不通排查指南一、push 相關背景二、問題排查舉例三、其他常見問題
廠商 push 不通排查指南一、push 相關背景二、問題排查舉例三、其他常見問題
點選了解「MPS 消息推送」更多資訊