WebView2 應用程式的開發最佳做法

我們建議使用下列開發生產型 WebView2 應用程式的最佳做法。

使用 Evergreen WebView2 執行階段

我們建議對大部分的 WebView2 應用程式使用 Evergreen WebView2 執行階段,而不是使用固定版本執行階段。

Evergreen 執行階段會在用戶端上自動更新,讓最新的功能和安全性修補程式可供您的 WebView2 應用程式使用。 Evergreen 執行階段在磁碟上也需要比固定版本執行階段更少的儲存空間。 只建議針對具有嚴格相容性需求的應用程式使用固定版本執行階段發佈。

請參閱 Evergreen 與 WebView2 執行階段修正版本的比較。

為了協助確保您的 WebView2 應用程式能與 Evergreen WebView2 Runtime 順利運作,請使用下列小節中的建議做法:

檢查以確保已安裝 WebView2 執行階段

使用 Evergreen WebView2 執行階段時,在應用程式使用 WebView2 控制項之前,請以程式設計方式檢查以確保用戶端上已安裝 Evergreen WebView2 執行階段。

請參閱發佈您的應用程式和 WebView2 Runtime 中的偵測是否已安裝 WebView2 Runtime。

處理 WebView2 執行階段的更新

使用 Evergreen WebView2 執行階段時,請處理 Evergreen WebView2 執行階段更新。 系統會自動下載 Evergreen WebView2 Runtime 的匯報,但執行中的 WebView2 應用程式將繼續使用其目前的 WebView2 Runtime 版本,可能會遺失安全性更新。 若要採用新版本,應用程式必須釋放先前 WebView2 物件的所有參照或重新啟動。 實作 NewBrowserVersionAvailable 事件處理常式可以提示使用者重新啟動應用程式以進行更新,並建議在結束之前儲存使用者狀態以進行無縫轉換。

請參閱發佈您的應用程式和 WebView2 執行階段中的處理常青 WebView2 執行階段更新。

使用 Microsoft Edge 預覽通道進行回溯相容性測試

使用 Evergreen WebView2 執行階段時,請使用 Microsoft Edge (Beta、Dev 或 Canary) 的預覽通道執行回溯相容性測試。

由於 Evergreen Runtime 會自動更新,因此您應該定期執行相容性測試,以確保您的 WebView2 應用程式能繼續在新的 Runtime 版本上如預期運作。 這可以透過在 WebView2 控制項中針對 Microsoft Edge 預覽通道測試您的 Web 內容來完成。

請部署預覽通道,以遵循使用 Microsoft Edge 和自我裝載的預覽通道進行預發行測試中的指導方針。

針對較新的 API 使用功能偵測

使用 Evergreen WebView2 執行階段時,請使用功能偵測來測試已安裝的執行階段是否支援最近新增的 API。 若要執行使用特定版本的 Webview2 SDK 開發的 WebView2 應用程式,用戶端必須安裝相容版本的 WebView2 Runtime。

使用 Evergreen WebView2 執行階段時,在某些情況下,用戶端上的執行階段尚未自動更新為最新版本。 此外,某些群組原則會暫停執行階段的更新。 因此,當您將更新推送至 WebView2 應用程式時,如果應用程式嘗試呼叫用戶端已安裝執行階段中無法使用的較新 API,該應用程式可能無法運作。 因此,您應該使用功能偵測來確定用戶端上安裝的 WebView2 執行階段支援 WebView2 應用程式所使用的較新 API。

請參閱 功能偵測,以測試已安裝的執行階段是否支援最近在WebView2 發行前版本和發行 SDK 中新增的 API。

如果使用固定版本執行階段,請定期更新

如果您使用固定版本的 WebView2 Runtime,請務必定期更新隨應用程式封裝的 WebView2 Runtime,以降低安全性風險。 若要判斷應該多久更新一次固定版本執行階段,您應該考慮應用程式的威脅模型。 例如,在 Webview2 應用程式中使用協力廠商內容時,請始終考慮內容不受信任。

請參閱:

管理 [使用者資料] 資料夾的存留期

WebView2 應用程式會建立使用者資料資料夾來儲存 Cookie、認證和權限等資料。 建立 [使用者資料] 資料夾之後,您的應用程式就負責管理 [使用者資料] 資料夾的存留期。 例如,您的應用程式必須在解除安裝應用程式時執行清理。

請參閱:

處理執行階段程序失敗或結束

WebView2 應用程式是由與應用程式處理程序一起執行的執行階段處理程序集合所支援。 這些支援的運行時進程可能會因各種原因而失敗,例如記憶體不足或被使用者終止。 您的 WebView2 應用程式應該處理這些與程序相關的事件,以確保應用程式可以從失敗中復原並繼續順暢地執行。

請參閱 處理 WebView2 中的程序相關事件。

環境物件上的事件處理常式

如果物件上 CoreWebView2Environment 任何應用程式的事件處理常式持有環境物件的參考,且應用程式只是釋放環境和事件處理常式的參考,而不移除事件處理常式,則環境物件與處理常式物件之間可能會有循環參考,這會流失記憶體。

若要防止這類記憶體流失:

  • 針對任何新增的事件處理常式,請先移除事件處理常式,再釋放環境物件。

  • 避免在事件處理常式中保留環境物件的參照。 相反地,事件處理常式可以從 “event completed” 回呼的引數存取 sender 環境物件。

  • 如果您希望應用程式保留 WebView2 物件的參考,請盡可能使用弱式參考。

遵循安全性最佳作法

WebView2 可讓您在原生應用程式中託管 Web 內容,提供例如使用 Web 型 UI、存取 Web 平台的功能,以及跨平台共用程式碼等優點。

不過,託管網頁內容也可能帶來弱點。 若要避免在原生應用程式內託管 Web 內容而可能產生的弱點,請務必在設計 WebView2 應用程式時密切監視 Web 內容與主應用程式之間的互動。

請 遵循開發安全的 WebView2 應用程式中的指導方針。

另請參閱

WebView2 參考:

Microsoft Edge 企業版文件: