前言
使用WKWebView
可打開H5頁面;但是可以有兩種方式加載H5
- 鏈接方式:H5的代碼部署到服務器環境中,WKWebView通過部署的鏈接地址加載H5頁面
- 本地資源:把H5的代碼,當成本地資源的方式,引入到項目中,WKWebView直接加載本地的資源;
但是二者都有各自的優缺點:
鏈接的方式
:
優點:可進行熱更新,H5的代碼發生了變化,只需要重新部署到服務器環境中,APP中的頁面可自動刷新,不需要通過版本更新;
缺點:加載慢,每一次打開H5頁面,都需要下載頁面資源(包括js
、css
、圖片等)可通過緩存進行優化
本地資源
優點:H5頁面的所有資源都保存在了本地,不需要通過網絡去獲取,加載速度快;
缺點:不能熱更新,若H5頁面有改動,需要重新更新APP的版本,才能更新頁面;
一、本地資源加載的優化
基于本地資源加載方式
不能熱更新的缺點,提出了一些嘗試,是否可通過把H5的包,通過網絡的方式,直接下載到APP中,然后通過WKWebView去加載本地的包呢
1、H5打包,并網絡下載到本地
使用vue
的項目打包為dist
文件夾,并進行壓縮dist.zip
下載到本地
2、把下載下來的dist.zip
// 通過SSZipArchive進行解壓
SSZipArchive.unzipFile(atPath: savePath, toDestination: resultPath)
3、WKWebView加載解壓后的dist
let loginPath = path.appending("/dist/index.html")
let url = URL(fileURLWithPath: loginPath)
let request = URLRequest(url: url)
let documentPath = NSHomeDirectory().appending("/Documents")
if #available(iOS 15.0, *) {
self.webview.loadFileRequest(request, allowingReadAccessTo: URL(fileURLWithPath: documentPath))
} else {
self.webview.loadFileURL(url, allowingReadAccessTo: URL(fileURLWithPath: documentPath))
}
通過上述的嘗試,說明是可行的;至于何時下載
dist
包,可通過接口的方式進行檢測;