日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

排查指南 | 两个案例学会从埋点排查 iOS 离线包

發(fā)布時間:2024/9/3 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 排查指南 | 两个案例学会从埋点排查 iOS 离线包 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
簡介:首次打開離線包白屏以及報錯“-1009”等該如何處理呢?

離線包原理

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

圖1:離線包加載主流

圖2:離線包下載流程

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

  • 檢查本地是否有離線包,本地有則執(zhí)行第四步解壓,解壓之后再進行校驗,校驗通過加載本地離線包,如果本地已經安裝過,那就不需要解壓直接走解壓后的流程
  • 網絡請求離線包信息,這一步和上一步是異步進行的,對應的埋點有 H5_APP_REQUEST
  • 對比請求回來的離線包信息,再決定是否下載離線包,對應的埋點有 H5_APP_DOWNLOAD
  • 解壓離線包,對應的埋點有 H5_APP_UNZIP
  • 如果開啟了離線包驗簽,校驗離線包的合法性,對應的埋點有 H5_APP_VERIFY、H5_AL_SESSION_VERIFYTAR_FAIL
  • 加載本地離線包,對應的埋點有 H5_AL_SESSION_MAP_SUCCESS、H5_AL_SESSION_FALLBACK
  • 注意:fallback走線上需要等到離線包請求這個異步請求回調回來之后返回的 fallback + mainUrl 確定 Webview 打開的URL。

    *參考資料:離線包日志埋點

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

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

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

    STEP3:檢查代碼

    將創(chuàng)建的離線包控制器作為根視圖,時機過早,所以導致了該問題。

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

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

    復現(xiàn)demo

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

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

    STEP3:日志分析

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

    STEP4:檢查代碼客戶端是否關閉了驗簽,默認是開啟的,如果沒有關閉,那么客戶端需要設置對應的公鑰,或者關閉驗簽。

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

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

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

    STEP7:解開預制的離線包,觀察離線包是否路徑字符總長度是否超過了限制導致讀取數(shù)據(jù)失敗。

    JS文件名稱過長,導致總的字符長度超過了限制,需要客戶修改離線包*。

    *參考資料:生成離線包

    思考和總結

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

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

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

    END


    下周二(8.24)阿里云飛天會員日開啟,消息推送等資源包1折秒殺搶購,點擊了解更多折扣詳情。

    原文鏈接:https://developer.aliyun.com/article/787725?

    版權聲明:本文內容由阿里云實名注冊用戶自發(fā)貢獻,版權歸原作者所有,阿里云開發(fā)者社區(qū)不擁有其著作權,亦不承擔相應法律責任。具體規(guī)則請查看《阿里云開發(fā)者社區(qū)用戶服務協(xié)議》和《阿里云開發(fā)者社區(qū)知識產權保護指引》。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內容,填寫侵權投訴表單進行舉報,一經查實,本社區(qū)將立刻刪除涉嫌侵權內容。

    總結

    以上是生活随笔為你收集整理的排查指南 | 两个案例学会从埋点排查 iOS 离线包的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。