在我們內建 mPaaS 插件并使用小程式的過程中,很多開發者遇到了打不開小程式的問題。今天就舉例說明,開發者在完成基本接入後,嘗試打開 H5 應用,但容器頁面顯示錯誤提示“設定标簽”時,應該如何解決。![]()
排查指南 | 關于 mPaaS-iOS 小程式打不開問題的解決方案常見原因問題排查步驟
常見原因
mPaaS 架構在打開一個H5應用前,首先需要獲知該應用離線包的基本資訊。
是以用戶端會主動通過RPC接口alipay.client.getUnionResource去拉取離線包資訊。如果離線包資訊擷取失敗,或沒有命中要打開的目标應用,容器會提示錯誤 “系統繁忙,請稍後再試”。
針對這類問題,排查方向包括:檢查 RPC 請求是否正常、檢查環境和離線包釋出是否比對等。
問題排查步驟
(一)檢查 RPC 請求是否正常
用戶端需要主動拉取離線包資訊,而拉取過程依賴 RPC 請求,如果RPC 鍊路存在問題,則無法正常擷取離線包資訊,導緻加載失敗。要确認 RPC 請求是否存在問題,需要在 Xcode 控制台中搜尋 alipay.client.getUnionResource 觀察 RPC 請求是否正常傳回。如果存在錯誤,一般的錯誤代碼包括 7XXX 或 3XXX 系列等,例如:
正常傳回樣例(result-status 為 1000):
Demo[83767:2555863] [mPaaSLog] APMobileNetwork alipay.client.getUnionResource resp:{
"Content-Encoding" = gzip;
"Content-Type" = "text/plain;charset=UTF-8";
Date = "Tue, 11 Aug 2020 05:01:37 GMT";
Vary = "Accept-Encoding";
"mgw-traceid" = 0a1cfd401597122097726853822435;
"result-status" = 1000;
"server-time" = 1597122097739;
}
錯誤傳回樣例(result-status 不為 1000):
Demo[83383:2546279] [mPaaSLog] APMobileNetwork alipay.client.getUnionResource resp:{
"Content-Length" = 0;
"Content-Type" = "text/plain;charset=UTF-8";
Date = "Tue, 11 Aug 2020 04:50:08 GMT";
memo = "%E9%AA%8C%E7%AD%BERPC%E6%8E%A5%E5%8F%A3%20%E5%8A%A0%E7%AD%BE%E6%95%B0%E6%8D%AE%E4%B8%BA%E7%A9%BA";
"mgw-traceid" = 0a1d7667159712140890222728553;
"result-status" = 7014;
"server-time" = 1597121408902;
tips = "%E9%AA%8C%E7%AD%BERPC%E6%8E%A5%E5%8F%A3%20%E5%8A%A0%E7%AD%BE%E6%95%B0%E6%8D%AE%E4%B8%BA%E7%A9%BA";
}
RPC 7XXX 系列錯誤的處理方法
7XXX 類錯誤均與 RPC 請求的簽名驗證過程有關,常見錯誤代碼及原因如下:
錯誤碼 | 說明 | 示例 |
---|---|---|
7000 | 沒有設定公鑰 | 移動 APP 中無線保镖中無 appId 對應的密鑰或者網關無法擷取 appId 對應的簽名密鑰。 |
7001 | 驗簽的參數不夠 | 網關服務端驗證簽名不通過。 |
7002 | 驗簽失敗 | |
7003 | 驗簽-時效性失敗 | API 請求入參 ts 時間戳超過系統設定的時間有效性。需要檢查用戶端時間是否為系統時間。 |
7007 | 驗簽-缺少 ts 參數 | API 請求缺少驗簽 ts 參數。 |
7014 | 驗簽-缺少 sign 參數 | API 請求缺少驗簽 sign 參數。一般情況下是用戶端簽名資料失敗,導緻缺失 sign 參數。請檢查用戶端無線保镖圖檔是否正确。 |
(二)基本排查動作
1. 檢查 mPaaS 控制台設定的 Bundle ID 與 iOS 工程是否完全一緻,包括:
mPaaS 控制台(控制台 > 代碼配置 > iOS)上設定的 Bundle ID:
工程的 Bundle "Indentifier:
工程中 Info.plist 的 Bundle Indentifier:
2. 控制台下載下傳的 .config 檔案内容與項目中的 meta.config 是否完全一緻:
mPaaS 控制台下載下傳的 .config 檔案:
工程中的 meta.config 檔案:
3. 用戶端裝置的時間是否為目前時間,時間誤差必須小于 8 小時。
4. 如果上述檢查存在資訊不一緻,則檢查不通過,建議:
- 修改工程中的資訊,確定與 mPaaS 控制台一緻。
- 如果手機時間資訊不正确,請修正時間配置。
- 從控制台下載下傳最新 .config檔案,通過mPaaS Extension 插件重新導入:
- 确認所有資訊正确後,解除安裝已安裝的 App,重新打包編譯後進行調試,觀察 RPC 7XXX 類錯誤是否得到解決。
(三)檢查 H5 App 資訊和釋出狀态是否正确
用戶端需要主動拉取離線包資訊,在 RPC 請求正常傳回的前提下,如果服務端沒有傳回目标離線包的資訊,也會導緻加載失敗的錯誤,錯誤原因為離線包 AppNotExist 不存在。
基本檢查動作:
1.根據檢查RPC請求是否正常的說明,确認alipay.client.getUnionResource
RPC請求是否可以正常傳回。
2.在 Xcode 控制台搜尋錯誤關鍵字 AppNotExist,确認問題根因是否為找不到目标 H5 App,例如:
3.在 mPaaS 控制台和 iOS 工程中交叉确認如下資訊,包括:
- worksapceId、appId、mpaasapi 等中繼資料:控制台和 meta.config 中的相關配置要完全一緻,如果不一緻,需要重新下載下傳 .config 檔案并導入。
- 目标離線包 ID:離線包管理頁中的離線包 ID 要和工程代碼中要打開的離線包 ID 一緻;
- 檢視離線包釋出狀态,确認離線包是否存在一個處于釋出狀态的版本:
- 檢視離線包釋出狀态,确認離線包資源類型:必須為“普通資源包”;“全局資源包”不可直接打開;
- 檢視離線包釋出狀态,确認該釋出的離線包版本:必須 大于 用戶端已安裝的離線包版本;
- 檢視離線包釋出狀态,确認該釋出覆寫的用戶端版本範圍:必須覆寫測試 App 的目前版本号;注意:iOS 項目中,用戶端版本号依賴info.plist 中的 Produc Version 字段,而不是 Xcode 項目 version,這裡需要開發者手動同步。
工單協助
如果依然不能解決問題,請準備好相關問題的複現 Demo 工程,通過阿裡雲工單系統聯系 mPaaS 售後技術支援。
下期預告
mPaaS 小程式啟動一直 Loading 該如何排查?
撰文:滕宏才
- END -