离子框架:ITMS-90809:UIWebView API 弃用(遵循所有说明,但我收到弃用消息)

Posted

技术标签:

【中文标题】离子框架:ITMS-90809:UIWebView API 弃用(遵循所有说明,但我收到弃用消息)【英文标题】:Ionic Framework: ITMS-90809: UIWebView API Deprecation (followed all instructions, however I'm getting the deprecation message) 【发布时间】:2020-03-26 12:43:56 【问题描述】:

我正在使用 Ionic 框架来构建 ios 应用程序。当我将构建上传到 AppStoreConnect(例如通过 TestFlight 对其进行测试)时,我收到了众所周知的弃用消息:

ITMS-90809:已弃用的 API 使用 - 从 2020 年 4 月开始,Apple 将停止接受使用 UIWebView API 的新应用提交。有关详细信息,请参阅https://developer.apple.com/documentation/uikit/uiwebview。

但是我已经按照所有说明(例如来自官方 Ionic Blog)并且不知道我可能错过了什么。

我做了什么:

    将所有 cordova 插件更新到最新版本(例如,cordova-plugin-ionic-webview 现在在 v4.1.3 上;cordova-plugin-inappbrowser 在 v3.2.0 上) 已检查 Cordova 平台(它是 ios 5.1.1) 确保我的 config.xml 中有 <preference name="WKWebViewOnly" value="true"/>ionic cordova prepare iosionic cordova build ios

我仍然收到弃用消息,我已经尝试删除整个 ios 平台并在之后再次添加它,但没有帮助。

我正在使用的 cordova 插件列表:

card.io.cordova.mobilesdk 2.1.0 "CardIO"
com-badrit-base64 0.2.0 "Base64"
com.paypal.cordova.mobilesdk 3.5.0 "PayPalMobile"
cordova-plugin-add-swift-support 2.0.2 "AddSwiftSupport"
cordova-plugin-app-version 0.1.9 "AppVersion"
cordova-plugin-camera-with-exif 1.3.1 "cordova-plugin-camera-with-exif"
cordova-plugin-device 2.0.2 "Device"
cordova-plugin-file 6.0.2 "File"
cordova-plugin-file-opener2 2.2.1 "File Opener2"
cordova-plugin-file-transfer 1.7.1 "File Transfer"
cordova-plugin-filepath 1.5.6 "cordova-plugin-filepath"
cordova-plugin-ftp 1.1.1 "Ftp"
cordova-plugin-google-analytics 1.8.6 "Google Universal Analytics Plugin"
cordova-plugin-inappbrowser 3.2.0 "InAppBrowser"
cordova-plugin-ionic-keyboard 2.2.0 "cordova-plugin-ionic-keyboard"
cordova-plugin-ionic-webview 4.1.3 "cordova-plugin-ionic-webview"
cordova-plugin-nativegeocoder 3.2.2 "NativeGeocoder"
cordova-plugin-splashscreen 5.0.2 "Splashscreen"
cordova-plugin-statusbar 2.4.2 "StatusBar"
cordova-plugin-taptic-engine 2.1.0 "Taptic Engine"
cordova-plugin-vibration 3.1.1 "Vibration"
cordova-plugin-whitelist 1.3.3 "Whitelist"
cordova-sqlite-storage 3.4.0 "Cordova sqlite storage plugin - cordova-sqlite-storage plugin version"
cordova.plugins.diagnostic 5.0.1 "Diagnostic"

离子信息:

Ionic:

   Ionic CLI                     : 5.4.16 (/usr/local/lib/node_modules/ionic)
   Ionic Framework               : @ionic/angular 4.11.10
   @angular-devkit/build-angular : 0.803.21
   @angular-devkit/schematics    : 8.1.3
   @angular/cli                  : 8.1.3
   @ionic/angular-toolkit        : 2.0.0

Cordova:

   Cordova CLI       : 9.0.0 (cordova-lib@9.0.1)
   Cordova Platforms : ios 5.1.1
   Cordova Plugins   : cordova-plugin-ionic-keyboard 2.2.0, cordova-plugin-ionic-webview 4.1.3, (and 17 other plugins)

Utility:

   cordova-res (update available: 0.11.0) : 0.8.1
   native-run                             : 0.3.0

System:

   ios-deploy : 1.9.4
   ios-sim    : 8.0.2
   NodeJS     : v10.16.3 (/usr/local/bin/node)
   npm        : 6.14.4
   OS         : macOS Mojave
   Xcode      : Xcode 11.2.1 Build version 11B500

有人知道是什么原因导致了这个问题吗? 我即将在接下来的几天/几周内发布一款应用。

非常感谢您!

【问题讨论】:

我在同一条船上,只是了解这个烂摊子。如果您在 Xcode 项目中搜索 UIWebview,理想情况下会给您一些提示。我相信您可以忽略CordovaLib.xcodeproj 中的实例,因为理想情况下这些实例由您的cordova-ios 5.1.1 升级处理。就我而言,我有来自 codepush 插件的其他参考资料......这可能会或可能不会被修复。希望这会为您指出导致拒绝的其他插件? 我怎么知道它来自插件?我检查了我的 Xcode 项目的 UIWebview 并找到了一些参考资料。他们中的大多数都在CordovaLib.xcodeproj,但你提到这是由cordova-ios处理的。其他参考是:swiper-bundle-ccaac54-js.jsMainViewController.mCDVWKWebViewEngine.m 如果您选择了有问题的文件,您应该能够在Plugins 目录中看到它以确认它是一个插件...并且它位于/Plugins 下的文件夹应该会告诉您哪个插件。这是第一步——您可能仍然需要查看它是如何引用 UIWebview 的。例如,有时它可能只是一个评论。这只会提示您要调查哪些插件可能导致此问题 - 并转到他们的 github 存储库以查看其他人是否在抱怨,或者是否有更新的版本。 再次感谢。我发现问题来自 PayPal 集成 (com.paypal.cordova.mobilesdk)。我删除了这个 cordova 插件,现在 Apple 接受了该应用程序。虽然我的应用程序中需要 PayPal,否则无法使用。我试图在myappname/Plugins/ 下的Xcode 中找到对UIWebView 的引用,尽管我找不到任何匹配项。这真的很奇怪,因为这意味着 PayPal 插件没有使用 UIWebView? 我不确定 - 我从未使用过那个插件。听起来要么是这样,要么是您在上次提交中也进行了其他调整,或者 Apple 在他们的审查过程中并不一致。很难说。 【参考方案1】:

你应该有一个二进制文件中对 UIWebView 的引用,你可以在你的项目上运行以下命令来找到它并删除插件或更新它。

grep -r "UIWebView" platform/ios

来源:https://cordova.apache.org/howto/2020/03/18/wkwebviewonly.html#comment-4855730838

【讨论】:

以上是关于离子框架:ITMS-90809:UIWebView API 弃用(遵循所有说明,但我收到弃用消息)的主要内容,如果未能解决你的问题,请参考以下文章

ITMS-90809:不推荐使用的 API 使用——Apple 将停止接受使用 UIWebView API 的应用程序提交

ITMS-90809:不推荐使用的 API 使用 - Apple 将停止接受使用 UIWebView API 的应用程序的提交

ITMS-90809:不推荐使用的 API - 不再接受使用 UIWebView 的新应用程序。相反,使用 WKWebView 来提高安全性和可靠性

Flutter: How to fix ITMS-90809: Deprecated API Usage - Apple 将停止接受使用 UIWebView API 的应用程序提交

ITMS-90809:不推荐使用的 API 使用 (UIWeb) - Xcode

ITMS-90809:使用 react-native-html-to-pdf 时已弃用 API 使用警告