天天看點

排查指南 | 兩個案例學會從埋點排查 iOS 離線包

排查指南 | 兩個案例學會從埋點排查 iOS 離線包

離線包原理

以一次啟動離線包的流程為例,離線包的加載流程分為兩種場景,第一種是離線包下載下傳好的場景,流程如圖1所示,第二種是離線包沒下載下傳好的場景,如圖2所示:

排查指南 | 兩個案例學會從埋點排查 iOS 離線包

圖1:離線包加載主流

排查指南 | 兩個案例學會從埋點排查 iOS 離線包

圖2:離線包下載下傳流程

我們可以從埋點來跟蹤離線包具體的加載流程*:

  1. 檢查本地是否有離線包,本地有則執行第四步解壓,解壓之後再進行校驗,校驗通過加載本地離線包,如果本地已經安裝過,那就不需要解壓直接走解壓後的流程
  2. 網絡請求離線包資訊,這一步和上一步是異步進行的,對應的埋點有 H5_APP_REQUEST
  3. 對比請求回來的離線包資訊,再決定是否下載下傳離線包,對應的埋點有 H5_APP_DOWNLOAD
  4. 解壓離線包,對應的埋點有 H5_APP_UNZIP
  5. 如果開啟了離線包驗簽,校驗離線包的合法性,對應的埋點有 H5_APP_VERIFY、H5_AL_SESSION_VERIFYTAR_FAIL
  6. 加載本地離線包,對應的埋點有 H5_AL_SESSION_MAP_SUCCESS、H5_AL_SESSION_FALLBACK

注意:fallback走線上需要等到離線包請求這個異步請求回調回來之後傳回的 fallback + mainUrl 确定 Webview 打開的URL。

*參考資料:

離線包日志埋點

案例1:首次打開離線包白屏

STEP1:按照離線包加載流程分析,首次打開離線包一定是需要走線上的fallback,因為本地沒有,走線上之前一定需要先知道離線包的線上位址也就是URL,是以需要檢視日志分析是否是請求離線包資訊那一步出錯了。

排查指南 | 兩個案例學會從埋點排查 iOS 離線包
排查指南 | 兩個案例學會從埋點排查 iOS 離線包
排查指南 | 兩個案例學會從埋點排查 iOS 離線包

STEP2:分析日志打開線上離線包的時候URL為空,在離線包請求還沒有回調回來之前就打開離線包,是以出現了白屏。

STEP3:檢查代碼

排查指南 | 兩個案例學會從埋點排查 iOS 離線包

将建立的離線包控制器作為根視圖,時機過早,是以導緻了該問題。

STEP4:結合客戶需求給出建議,可以使用本地預制離線包解決首次過早打開離線包出現白屏的問題。

案例2:打開預置離線包,報錯(-1009)

複現demo

STEP1:斷網情況下打開預制離線包失敗顯示網絡無法連接配接說明打開預制包失敗了,是以走了線上,由于沒有網絡是以顯示網絡無法連接配接,問題出在本地預制的離線包上。

STEP2:按照離線包的加載流程分析,在本地有預制包的情況下出現走線上的情況分别有兩種情況,離線包驗證簽名失敗和加載本地離線包失敗。

STEP3:日志分析

排查指南 | 兩個案例學會從埋點排查 iOS 離線包

觀察到有驗簽失敗的字樣。

STEP4:檢查代碼用戶端是否關閉了驗簽,預設是開啟的,如果沒有關閉,那麼用戶端需要設定對應的公鑰,或者關閉驗簽。

排查指南 | 兩個案例學會從埋點排查 iOS 離線包

STEP5:關閉驗簽再試一遍,繼續分析日志:

排查指南 | 兩個案例學會從埋點排查 iOS 離線包
排查指南 | 兩個案例學會從埋點排查 iOS 離線包
排查指南 | 兩個案例學會從埋點排查 iOS 離線包

H5_AL_SESSION_FALLBACK加載本地離線包失敗,最終走的線上,觀察解壓離線包成功沒有問題,問題出在加載離線包那一步,日志中查找到H5_APP_EXCEP離線包異常埋點,是讀取資料時候失敗了。

STEP6:問題有可能出現在該離線包上面,所提供一個正常的離線包給客戶做成本地預制離線包,斷網打開驗證,沒有問題,問題就出在該離線包上。

STEP7:解開預制的離線包,觀察離線包是否路徑字元總長度是否超過了限制導緻讀取資料失敗。

排查指南 | 兩個案例學會從埋點排查 iOS 離線包

JS檔案名稱過長,導緻總的字元長度超過了限制,需要客戶修改離線包*。

生成離線包

思考和總結

通過上面兩個案例的介紹,我們可以清晰的看到案例一最終出現問題的原因是請求離線包資訊這個請求沒有回調回來,客戶就打開離線包時沒有擷取到URL,問題出現在了請求離線包那一步了,而案例二最終定位到加載本地包失敗那一步。

了解了離線包的具體加載流程,再結合 nebula 容器自動化埋點日志,就可以具體定位問題到離線包加載的哪一步了。

本文作者:阿裡雲 mPaaS TMA 團隊(楊強 榮陽)

END

排查指南 | 兩個案例學會從埋點排查 iOS 離線包

下周二(8.24)阿裡雲飛天會員日開啟,消息推送等資源包1折秒殺搶購,點選

了解更多

折扣詳情。

繼續閱讀