部落格 RSS Feed

已更新:上傳至 App Store 時如何處理「已棄用 API 使用 - UIWebView」警告
作者:Niklas Merz
2020 年 7 月 18 日

我們最近發布了說明,說明如何更新您的應用程式以移除所有 UIWebView 參考,因為 Apple 現在會拒絕所有使用 UIWebView 的應用程式。

我們正在討論這個警告

ITMS-90809:已棄用 API 使用 - Apple 將停止接受使用 UIWebView API 的應用程式提交。

自上次發布以來,有些事情發生了變化,並且發布了新版本的 cordova-ios。

將 cordova-ios 更新至 6.0.0 或更新版本

請更新至最新的 cordova-ios 版本,以獲得與最近 iOS 變更的最佳相容性。截至撰寫本文時,目前版本為 6.1.0。cordova-ios 的 6.0.0 版本將 WKWebView 支援移至 cordova-ios 中,並移除了 UIWebView 程式碼。由於此變更,cordova-plugin-wkwebview-engine 外掛程式已過時,且無法在此版本中使用。如果您已安裝此外掛程式,可以安全地使用 cordova plugin remove cordova-plugin-wkwebview-engine 移除它。

此外,此版本還引入了 WKURLSchemeHandler 支援。透過自訂協定提供您的應用程式內容可解決由於 WKWebViewfile 協定套用的嚴格安全性原則而存在的 CORS 問題。您可以在 config.xml 檔案中設定偏好設定選項 schemehostname,輕鬆設定您的 Cordova 專案使用自訂協定。請注意,使用自訂 URL 協定執行您的應用程式會變更您的網頁程式碼的來源,您將無法存取網頁儲存空間,例如本機儲存空間、索引資料庫等。

<preference name="scheme" value="app" />
<preference name="hostname" value="localhost" />

重要的是要知道,隨著 WKURLSchemeHandler 的引入,已不再支援 iOS 10。

仍然收到警告?

如果您仍然收到警告,很可能是您專案中的一個或多個外掛程式仍然參考 UIWebView。您需要找出哪些外掛程式包含 UIWebView 程式碼,並透過其支援管道(例如外掛程式的儲存庫)聯絡這些外掛程式的開發人員。他們需要透過移除參考或使用新的標記來修正其外掛程式。

使用其他 WKWebView 外掛程式

這些 cordova-ios 版本不再需要官方 Apache WKWebView 外掛程式,因為已整合 WKWebView 並且已移除 UIWebView。可以使用其他 WKWebView 外掛程式。請確保它們已更新並使用最新版本。如果您對它們的外掛程式有任何問題或使用上的疑問,請閱讀它們的文件並透過其支援管道請求協助。

CORS 問題

如果您遇到任何 CORS 問題,Cordova PMC 成員 Norman Breau 在他的部落格文章中對 CORS 提供了很好的解釋。

Weview 問題

如果使用自訂協定,WKWebView 將不允許在 img/video 標籤中載入檔案 URL(也不會擷取它們或任何其他內容)。cordova-ios 新增了一個輔助方法,可將檔案 URL 轉換為具有協定的 URL,並且 WKWebView 可以理解。

window.WkWebView.convertFilePath('您的/檔案/路徑');