离子框架: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 ios
和ionic 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.js
、MainViewController.m
和 CDVWKWebViewEngine.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 的应用程序提交