Ios ITMS-90809:不推荐的API使用——苹果将停止接受使用UIWebView API的应用提交
昨天,我将我的应用程序上传到TestFlight,过了一会儿,苹果向我发送了以下警告: ITMS-90809:不推荐的API使用-苹果将停止接受使用UIWebView API的应用提交。有关更多信息,请参阅 问题是我在我的应用程序中没有使用UIWebView,所以我尝试更新我的播客,但仍然是一样的。顺便说一下,这是我在TestFlight上的第三次构建,这是苹果第一次给我发送这个。有什么想法吗 更新 这些是我的豆荚:Ios ITMS-90809:不推荐的API使用——苹果将停止接受使用UIWebView API的应用提交,ios,swift,xcode,uiwebview,wkwebview,Ios,Swift,Xcode,Uiwebview,Wkwebview,昨天,我将我的应用程序上传到TestFlight,过了一会儿,苹果向我发送了以下警告: ITMS-90809:不推荐的API使用-苹果将停止接受使用UIWebView API的应用提交。有关更多信息,请参阅 问题是我在我的应用程序中没有使用UIWebView,所以我尝试更新我的播客,但仍然是一样的。顺便说一下,这是我在TestFlight上的第三次构建,这是苹果第一次给我发送这个。有什么想法吗 更新 这些是我的豆荚: pod 'Firebase/Core' pod 'Firebase/Fires
pod 'Firebase/Core'
pod 'Firebase/Firestore'
pod 'Firebase/MLVision'
pod 'Firebase/MLVisionTextModel'
pod 'SVProgressHUD'
pod 'SPPermission/Camera'
pod 'SPPermission/PhotoLibrary'
pod 'Mantis'
pod 'SwiftKeychainWrapper'
pod 'SwiftyOnboard'
pod 'Fabric'
pod 'Crashlytics'
更新2
似乎我找到了解决这个问题的框架
Binary file ./Pods/FirebaseMLCommon/Frameworks/FirebaseMLCommon.framework/FirebaseMLCommon matches
Binary file ./Pods/Crashlytics/iOS/Crashlytics.framework/Crashlytics matches
Binary file ./Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision matches
那么现在我必须等待谷歌修复它们并更新我的pods吗?检查您的代码中是否使用UIWebView类;如果是,请使用WKWebView替换您的实现,否则需要检查您的Pods 使用terminal进入项目文件夹并执行以下命令:
grep-r“UIWebView”。
必须更新所有匹配的pod。
现在我被卡住了,因为我在Google AdMob(7.49.0版)中找到了UIWebView,我正在等待Google的新版本。你可以检查存档应用程序中的每个框架,看看它们是否引用了
UIWebView
。从命令行,cd
到存档的应用程序,例如:
cd~/Library/Developer/Xcode/Archives//myapp.xarchive/Products/Applications/myapp.app
到达后,使用nm
命令转储应用程序和每个应用程序框架的符号:
nm myapp | grep UIWeb
框架中的框架/*.framework;做
fname=$(basename$framework.framework)
echo$fname
nm$framework/$fname | grep UIWeb
完成
这至少会告诉你哪个框架是罪魁祸首。我会回答我自己的问题,因为我有关于这封电子邮件的消息。谷歌告诉我,关于这个问题有好几张罚单,他们将尽快解决这个问题。
另外,今天我的应用程序已被AppStore批准,因此目前似乎只是一个警告。在我的情况下,
Firebase/Auth
使用的是不推荐的UIWebView API,我使用的版本是旧版本。所以我刚刚用命令更新了Firebase/Auth
pod
pod更新'Firebase/Auth'
注意:要找出使用此api的框架,只需搜索“UIWebView”(
cmd
+shift
+F
)构建Ionic应用程序时,您可以选择Cordova或Capactor来部署本机移动版本。虽然较新版本自动使用WKWebView,但Cordova仍然直接使用UIWebView API或包含对它们的引用(Capactor已更新以删除这些引用–见下文)
提交应用程序时,苹果会在应用程序代码中搜索“UIWebView”字符串,如果找到,则会生成提交警告。因此,需要cordova ios的未来版本(cordova ios库),以确保删除对UIWebView API的所有引用
另一个想法。我不知道这是否有意义,或者在技术上是否可行
将UIWebView移动到插件,并使cordova ios使用此插件或某些WKWebView插件。cordova ios只包含加载webview的代码。默认情况下,下一个版本应加载Apache WKWebViewEngine(默认情况下新应用上安装的插件,旧应用的迁移说明)。需要UIWebView、Ionic视图、fork或其他视图的用户可以像现在一样指定自己的视图
这样一来,cordova ios中就不会有UIWebView,而且它仍然像今天这样灵活。使用最新的firebase版本
版本6.8.1:删除对UIWebViewDelegate的引用,以符合应用商店提交警告(#3722)。如果您使用Unity 3D构建,这是一个已知问题(在变更日志中确认),目前已针对版本2019.3进行了修复(正在测试和后端口)
在这里查看罚单我在React native应用程序中也遇到了同样的问题。检查以下事项: 1) 您使用的是react-native webview模块,而不是直接从react-native导入它(community webview在v0.60中不推荐作为精简核心删除,并将在下一个稳定版本中删除)。() 2) 还请验证您使用的任何使用webview的第三方库是否是最新的,如果不是,请要求库维护人员升级react native webview 3) 你很好去上传,请添加评论,如果有人发现一些更多的困难 消除此警告的另一种方法是: 开始传递useWebKit={true},也就是说,您使用的是WKWebView而不是UIWebView。然后,您可以执行以下操作来解决此问题--不推荐使用API
<WebView
style={{flex: 1, backgroundColor: Colors.white}}
useWebKit={true}
startInLoadingState={true}
source={{uri: 'my http url'}}
/>```
```
这是一个漫长的过程,但我设法解决了上述问题。让我带你走过这个过程,并分享我的发现。
首先,没必要,对我有用的东西对你也有用。你需要尝试所有可能的解决方案。
我在不同的帖子中发布了一些解决方案。(链接如下)
cd ~/Library/Developer/Xcode/Archives/<date>/myapp.xcarchive/Products/Applications/myapp.app
grep -r UIWebView
grep -r UIWebView /Path/To/Project/*
./<ANY>.framework/Headers/ANY.h:#define ANYUseUIWebView ANY_NAME_PASTE(ANY_PREFIX_NAME, ANYUseUIWebView)
Binary file ./<FRAMEWORK-NAME>.framework/<LIB-FILE>.a matches
pod update
grep -r UIWebView Pods/
<preference name="WKWebViewOnly" value="true" />
<feature name="CDVWKWebViewEngine">
<param name="ios-package" value="CDVWKWebViewEngine" />
</feature>
<preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />
brew install ripgrep
cd Pods
rg UIWebView
YoutubePlayer-in-WKWebView/README.md
10:- using WKWebView instead of UIWebView.
TTTAttributedLabel/TTTAttributedLabel/TTTAttributedLabel.h
166: to emulate the link detection behaviour of UIWebView.
TwitterKit/iOS/TwitterKit.framework/Headers/Twitter.h
28: * either UIWebView or SFSafariViewController depending on iOS
TwitterKit/iOS/TwitterKit.framework/Headers/TWTRTweet.h
84: * Suitable for loading in a `UIWebView`, `WKWebView` or passing to Safari:
1. RCTWebView.h
2. RCTWebView.m
3. RCTWebViewManager.h
4. RCTWebViewManager.m
grep -r -F "UIWebView" .
grep -r "UIWebView"
1.Open Terminal and go to project path
2.cordova plugin rm cordova-plugin-ionic-webview
3.cordova plugin add cordova-plugin-ionic-webview@latest
4.open config.xml file and put below code inside <platform name="ios"> section.
<preference name="WKWebViewOnly" value="true" />
<feature name="CDVWKWebViewEngine">
<param name="ios-package" value="CDVWKWebViewEngine" />
</feature>
<preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />