WebView2 應用程式的開發最佳做法
我們建議使用下列最佳做法來開發生產 WebView2 應用程式。
使用 Evergreen WebView2 運行時間
建議您針對大部分的 WebView2 應用程式使用 Evergreen WebView2 運行時間,而不是使用固定版本運行時間。
Evergreen 運行時間會在用戶端上自動更新,讓 WebView2 應用程式可以使用最新的功能和安全性修補程式。 比起固定版本運行時間,Evergreen 運行時間在磁碟上也需要較少的儲存空間。 只有具有嚴格相容性需求的應用程式才建議使用固定版本運行時間發佈。
如需 Evergreen 執行時間優點的詳細資訊,請參閱散發您的應用程式和 WebView2 運行時間中的 Evergreen 運行時間發布模式的詳細數據。
若要協助確保 WebView2 應用程式與 Evergreen WebView2 運行時間搭配運作良好,請使用下列小節中的建議做法:
檢查以確定已安裝 WebView2 運行時間
使用 Evergreen WebView2 運行時間時,在您的應用程式使用 WebView2 控制件之前,請以程式設計方式檢查以確定用戶端上已安裝 Evergreen WebView2 Runtime。
請參閱散發您的應用程式和 WebView2 執行時間中偵測 WebView2 執行時間是否已安裝。
處理 WebView2 運行時間的更新
使用 Evergreen WebView2 運行時間時,請處理 Evergreen WebView2 運行時間更新。 Evergreen WebView2 運行時間的更新會自動下載,但執行中的 WebView2 應用程式會繼續使用其目前的 WebView2 運行時間版本,可能遺失安全性更新。 若要採用新版本,應用程式必須釋放先前 WebView2 物件的所有參考,或重新啟動。 實作 NewBrowserVersionAvailable
事件處理程式可能會提示使用者重新啟動應用程式以進行更新,並建議您先儲存用戶狀態,再結束順暢轉換。
請參閱散發您的應用程式和 WebView2 執行時間中的處理 Evergreen WebView2 運行時間更新。
使用 Edge 預覽通道進行順向相容性測試
使用 Evergreen WebView2 運行時間時,請使用 Microsoft Edge (Beta、Dev 或 Canary) 的預覽通道來執行順向相容性測試。
由於 Evergreen 執行時間會自動更新,因此您應該定期執行相容性測試,以確保 WebView2 應用程式會在新的運行時間版本上繼續如預期般運作。 這可藉由在 WebView2 控制件中針對 Microsoft Edge 預覽通道測試您的 Web 內容來完成。
藉由部署預覽通道,遵循 使用預覽通道 和 自我主機進行發行前測試中的指引。
針對較新的 API 使用功能偵測
使用 Evergreen WebView2 運行時間時,請使用功能偵測來測試已安裝的運行時間是否支援最近新增的 API。 若要執行以特定版本的 Webview2 SDK 開發的 WebView2 應用程式,客戶端必須安裝相容版本的 WebView2 運行時間。
使用 Evergreen WebView2 運行時間時,在某些情況下,用戶端上的運行時間尚未自動更新為最新版本。 此外,某些組策略會暫停更新運行時間。 因此,當您將更新推送至 WebView2 應用程式時,如果應用程式嘗試呼叫用戶端已安裝運行時間中無法使用的較新 API,應用程式可能無法運作。 因此,您應該使用功能偵測來確定安裝在用戶端上的 WebView2 運行時間支援 WebView2 應用程式所使用的較新 API。
請參閱 功能偵測,以測試已安裝的運行時間是否支援WebView2 發行前版本和發行 SDK 中最近新增的 API。
如果使用固定版本運行時間,請定期更新
如果您使用固定版本 WebView2 運行時間,請確定您定期更新已封裝在應用程式中的 WebView2 運行時間,以降低安全性風險。 若要判斷更新固定版本運行時間的頻率,您應該考慮應用程式的威脅模型。 例如,在 Webview2 應用程式中使用第三方內容時,請一律將內容視為不受信任。
請參閱散發您的應用程式和 WebView2 執行時間中的固定版本運行時間發佈模式的詳細數據。
管理使用者資料資料夾的存留期
WebView2 應用程式會建立用戶數據資料夾來儲存 Cookie、認證和許可權等數據。 建立使用者資料資料夾之後,您的應用程式會負責管理使用者資料資料夾的存留期。 例如,卸載應用程式時,您的應用程式必須執行清除。
如需管理 用戶數據資料夾 的進一步指引,請參閱管理用戶數據資料夾。
處理運行時間進程失敗或結束
WebView2 應用程式是由與應用程式程式一起執行的運行時間進程集合所支援。 這些支援的運行時間進程可能會因為各種原因而失敗,例如記憶體不足或用戶終止。 您的 WebView2 應用程式應該處理這些程式相關的事件,以確保應用程式可以從失敗中復原,並繼續順暢地執行。
如需如何處理 WebView2 應用程式中進程相關事件的詳細資訊,請參閱在 WebView2 中處理程式相關事件。
環境物件上的事件處理程式
如果 環境物件 上任何應用程式的事件處理程式持有環境對象的參考,而且應用程式只會釋放環境和事件處理程序的參考,而不會移除事件處理程式,則環境對象和處理程式對象之間可能會有循環參考,這會流失記憶體。
若要防止這類記憶體流失:
對於任何新增的事件處理程式,請先移除事件處理程式,再釋放環境物件。
避免在事件處理程式中保留環境對象的參考。 相反地,事件處理程式可以從
sender
「event completed」 回呼的 自變數存取環境物件。如果您想要應用程式保存 WebView2 對象的參考,請盡可能使用弱式參考。
遵循安全性最佳做法
WebView2 可讓您在原生應用程式中裝載 Web 內容,提供使用 Web 型 UI、存取 Web 平臺功能,以及跨平臺共用程式代碼等優點。
不過,裝載 Web 內容也可能造成弱點。 若要避免在原生應用程式內裝載 Web 內容時可能發生的弱點,請務必設計您的 WebView2 應用程式,以密切監視 Web 內容與主應用程式之間的互動。
請遵循 開發安全 WebView2 應用程式中的指引。