ITMS-90809:弃用 API 用法 -- Apple 将停止接受使用 UIWebView APIs 的应用提交
ITMS-90809: Deprecated API Usage -- Apple will stop accepting submissions of apps that use UIWebView APIs
昨天,我将我的应用程序上传到 TestFlight,过了一会儿 Apple 向我发送了这个警告:
ITMS-90809: Deprecated API Usage - Apple will stop accepting submissions of apps that use UIWebView APIs . See https://developer.apple.com/documentation/uikit/uiwebview for more information.
问题是我没有在我的应用程序中使用 UIWebView 所以我尝试更新我的 pods 但仍然是相同的 thing.By 这是我在 TestFlight 上的第三次构建,这是苹果第一次给我发这个。有什么想法吗?
更新
这些是我的 pods:
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
所以现在我是否必须等待 google 修复它们并更新我的 pods?
检查您是否在代码中使用了 UIWebView class;如果是,请用 WKWebView 替换您的实现,否则需要检查您的 Pods.
使用终端进入您的项目文件夹并执行命令:
grep -r "UIWebView" .
必须更新所有匹配的广告连播。
现在我卡住了,因为我在 Google AdMob(7.49.0 版)中发现了 UIWebView,我正在等待 Google.
的新版本
您可以检查存档应用程序中的每个框架,看看是否有任何框架引用了 UIWebView
。从命令行 cd
到存档的应用程序,例如:
cd ~/Library/Developer/Xcode/Archives/<date>/myapp.xcarchive/Products/Applications/myapp.app
在那里,使用 nm
命令转储您的应用程序和每个应用程序框架的符号:
nm myapp | grep UIWeb
for framework in Frameworks/*.framework; do
fname=$(basename $framework .framework)
echo $fname
nm $framework/$fname | grep UIWeb
done
这至少会告诉您哪个框架是罪魁祸首。
我会回答我自己的问题,因为我有关于这封电子邮件的消息。 Google 告诉我有几张关于这个问题的工单,他们会尽快解决这个问题。
同样在今天,我的应用程序已获准在 AppStore 上架,所以它似乎暂时只是一个警告。
在我的例子中,Firebase/Auth
使用的是已弃用的 UIWebView API,而我使用的是旧版本。所以我刚刚使用命令
更新了 Firebase/Auth
pod
pod update 'Firebase/Auth'
注意:要找出正在使用此 api 的框架,只需搜索 "UIWebView" (cmd
+shift
+F
)
构建 Ionic 应用程序时,您可以选择 Cordova 或 Capacitor 来部署本机移动版本。虽然更新的版本自动使用 WKWebView,但 Cordova 仍然完全使用 UIWebView API 或包含对它们的引用(Capacitor 已更新以删除这些引用 - 见下文)。
提交应用后,Apple 会在应用代码中搜索“UIWebView”字符串,如果找到则生成提交警告。因此,将来需要发布 cordova-ios(Cordova iOS 库)以确保删除所有对 UIWebView API 的引用。
另一个想法。我不知道这是否有意义或技术上可行。
也将 UIWebView 移动到一个插件,并使 cordova-ios 使用这个或一些 WKWebView 插件。 cordova-ios 只包含加载 webview 的代码。默认情况下,下一个版本应该加载 Apache WKWebViewEngine(新应用程序默认安装的插件,旧应用程序的迁移说明)。需要 UIWebView、Ionic、fork 或其他的用户可以像现在这样指定自己的一个。
这样 UIWebView 就不会出现在 cordova-ios 中,而且它仍然像今天一样灵活。
使用最新的 firebase 版本
https://firebase.google.com/support/release-notes/ios
版本 6.8.1:删除了对 UIWebViewDelegate 的引用以符合 App Store 提交警告 (#3722)。
如果您使用 Unity 3D 进行构建,这是一个已知问题(已在变更日志中确认),目前已针对版本 2019.3 修复(正在测试和向后移植)。
我在 React 本机应用程序中遇到了同样的问题。检查以下内容:
1) 您正在使用 react-native-webview 模块,而不是直接从 react-native 导入它(社区 webview 在 v0.60 中被弃用为精简核心删除,并将在下一个稳定版本中删除)。 (check here)
2) 还请验证您是否正在使用任何使用 webview 的第三方库是最新的,如果不是,请要求库维护人员升级 react-native-webview。
3) 已经可以上传了,如果还有什么问题欢迎补充。
Check here the breaking changes in v0.60
消除此警告的另一种方法是:
开始传useWebKit={true},也就是说你用的是WKWebView,根本不是UIWebView。那么你可以通过以下方式解决问题 -- Deprecated API Usage.
- 去掉Libraries/RNCWebView.xcodeproj/RNCUIWebView.h、RNCUIWebView.m、RNCUIWebViewManager.h、RNCUIWebViewManager.m
- 去掉Libraries/React.xcodeproj/React/Views/RCTWebView.h、RCTWebView.m、RCTWebViewManager.h、RCTWebViewManager.m
现在我已经app.ipa成功上传到AppStore,没有任何权限警告。
<WebView
style={{flex: 1, backgroundColor: Colors.white}}
useWebKit={true}
startInLoadingState={true}
source={{uri: 'my http url'}}
/>```
这是一个漫长的过程,但我设法解决了上述问题。让我引导您完成整个过程并分享我的发现。
首先,对我有用的不一定对你也有用。你只是需要尝试所有可能的解决方案。
我遵循了各种线程中发布的一些解决方案。 (链接如下)。
- 当我在 RN 0.59 时,我发现这些文件评论 mentioned here。 没用
- 我升级到 RN 0.61,我没有找到这些文件。我尝试上传应用程序,但仍然收到警告。 没用
- 我将以下库更新到最新版本。 没用
反应本机设备信息
反应本机视图
我尝试了这个 grep 命令 mentioned here。出现了某些库,即 react-native-fbsdk、react-native-google-sign、react-native-gesture-handler。所以我升级了所有这些并上传了构建但仍然收到警告。 没成功
更新所有库的最后手段,我知道这会花费很多时间。所以我的第一个猜测是将 'react-native-firebase' 更新到最新的 v6 版本 issue. But it had some issues with Notification not being on so I couldn't use it. Also they mentioned that their v.5.5.6 is clean and doesn't have any UIWebViewIssues given you update your iOS sdk to 6.12.+ More info here。
所以这让我想到了我的第二个猜测,在我的例子中是 'react-native-ux-cam'。幸运的是,他们更新了他们的库以删除 UIWebView 的所有引用。我更新到最新版本和 BOOM,问题解决了。我将我的应用程序提交给了 Apple,到目前为止没有任何警告。更多信息 here 有效
希望这对某人有所帮助。
如果有人帮助我 运行 pod update
在终端上然后再次存档。这对我有用。
WKWebView
是 UIWebView
的替代品。如果您的代码中没有 UIWebView
用法,那么通过执行以下终端命令,您可以轻松了解哪个库仍在使用 UIWebView
引用(不要错过 .(点) ).
从命令行,cd 到存档的应用程序,例如
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
也看看这个 Medium Article
背景故事
在我的 ReactJS + Cordova 项目中,我将一个应用程序上传到应用程序商店并成功。在我收到一封引用 ITMS-90809: Deprecated API Usage
的电子邮件后不久。经过数小时(数天)的研究和多次上传失败后,我使用付费开发者令牌(50 美元)与 Apple 建立了联系;他们基本上回答说“检查你的节点模块文件夹”并退还了我的令牌,因为他们不会帮助我解决这个极其模棱两可的错误。
之前的尝试
- 更新了 cordova 以使用
wkwebview-engine
和 wkwebviewxhrfix
插件
- 使用
grep -r
档案、ios 源代码和整个项目源代码,我发现了很多注释,但没有任何帮助。
- 更新了所有
npm
个软件包
- 清理并更新了所有
cocoapod
pods
最后的尝试
删除所有“额外的”cordova 插件、npm 包和 pods 后,我只剩下一个 shell 的应用程序,但仍然面临苹果拒绝。再次使用 grep -r
仍然有对“facebook”的引用,这使我找到了 FBSDK
.
的旧副本
解决方案
FBSDK
已手动添加到 target > Build Phases > Link Binary With Libraries
。 target > Build Phases > Compile Sources
中还有一个关联的 cordovaFacebook.m
。删除这些旧的、未维护的文件后,我可以毫无问题地上传到 iTunes Connect。
对于使用 cocoapods 的项目:
grep -r UIWebView Pods/
对我来说,脚本没有帮助。我不得不手动浏览每个框架并查看发行说明,然后更新它们。
FB Sdk 7.16.1以上版本有此问题。实际上它在框架文件夹中没有文件。
当您使用 FBSDK v7.16.1 构建它时,此错误已删除,但 Appstore 拒绝了该应用程序,因为折旧 api usage(UIWebView)。
我用FBSDK v7.19.2解决了。
1) 当您为 xcode 构建项目时,它显示提及错误,未找到 shareKit。我通过将 facebookSDK 文件夹从我以前构建的框架文件夹(使用 fbsdk v7.16.1)复制到当前 xcode 文件夹(frameworks/FacebookSDK...)
2) 然后,打开您的 xcode 项目,将位于 Frameworks/FacebookSDK/Plugins/IOS/ (sharekit, corekit, loginkit) 的文件添加到 Xcode.
中的框架中
3) 将“$(PROJECT_DIR)/Frameworks/FacebookSDK/Plugins/iOS”添加到 Xcode 的构建设置中的框架搜索路径中。
4) 在终端中打开项目:输入 "grep -r "UIWebView" ." ,如果这显示与 UIWebView 有任何匹配,请通过打开文件将其删除。
5) 如果在FBSDKCoreKit的二进制文件中显示匹配。在 TextEdit 中打开位于 MAC 的文件并查找并将所有 "UIWebView" 替换为 "WKWebView"
6) 保存并再次将其添加到位于 Xcode 的框架中。构建并推送到应用商店。
我通过更新 ionic webview 插件并在配置中添加首选项解决了这个问题。
我遵循了以下步骤:
1.cordova 插件 rm cordova-plugin-ionic-webview
2.cordova 插件添加 cordova-plugin-ionic-webview@latest
3.Added ios 平台下配置文件中的首选项:
<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 步:
Search “UIWebView” in xcode project directory
第 2 步:
Right click (on RCTWebView.m) and select “Reveal In Project Navigator”
第 3 步:
Scroll down and delete the following four files only:
1. RCTWebView.h
2. RCTWebView.m
3. RCTWebViewManager.h
4. RCTWebViewManager.m
然后清理项目和存档。
N.B:如果您使用 'react-native-community/react-native-webview' 库,则更新为最新版本,否则就完成了。
您应该安装此 Cordova 插件:
https://github.com/apache/cordova-plugin-wkwebview-engine
然后在 config.xml 中的 iOS 部分下添加 <preference name="WKWebViewOnly" value="true" />
。
然后增加版本re-upload它。
为了找到您在哪里使用 UIWebView
,请在终端中转到您的项目根目录
并使用这个命令
grep -r -F "UIWebView" .
The '.' is very important.
它告诉系统在当前文件夹和子文件夹中搜索字符串"UIWebView"。
这将同时搜索 cocoapods 库
更新 ios
中弃用的 WebView
这成功解决了我的问题
CD platforms/ios
grep -r UIWebView Pods/
打开 Podfile 和 add/replace AFNetworking pod 作为
pod 'AFNetworking', '~> 4.0'
终于在终端 pod 更新
根据新的 Apple 政策,不再接受 new/old 使用 UIWebView 的应用程序。最好的解决方案是使用 WKWebView 来提高安全性。这个问题是因为一些过时的旧插件,如 GoogleAd 或 GoogleVR SDK。如果您想要快速解决方案,请将 UIWebView 替换为 WKWebView 框架。
在终端中,运行 您的 iOS 项目文件夹中的此命令:
grep -r "UIWebView"
然后您将找到所有使用 UIWebview 的文件的列表。更新任何文件以使用 WKWebView(或使用 gVim 将它们替换为 WKWebView)。如果你的 pod 库显示它有 UIWebView。同时更新 pods 文件。
在我的例子中,不受支持的插件是 GVR SDK,解决步骤是:
第一步:删除 UIWebView:
- 得到vim for mac.
- List item In Vim 打开 {Path to your build folder} \Pods\GVRSDK\Libraries\libGVRSDK.a
- 单击 ESC
- 键入“:”
- 粘贴“%s/UIWebView/WKWebView/g”
- 点击进入
第 2 步:将框架添加到您的 Xcode 项目
- Select项目左侧项目导航器中的项目文件window。
- Select 要在项目设置编辑器中添加框架的目标。
- Select“Build Phases”选项卡,然后单击“Link Binary With Libraries”旁边的小三角形以查看应用程序中的所有框架。
- 要添加框架,请单击框架列表下方的“+”。
- Select WebKit.framework
100% 工作解决方案 #ionic #wkwebview #webview
此处 Webview 已被 Apple 弃用,因此请替换为 WKWebview。
按照几个简单的步骤解决这个问题:-
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" />
完成所有这些步骤后,再次使用“ionic cordova build ios”命令进行构建,并再次将其提交到应用商店。
昨天,我将我的应用程序上传到 TestFlight,过了一会儿 Apple 向我发送了这个警告:
ITMS-90809: Deprecated API Usage - Apple will stop accepting submissions of apps that use UIWebView APIs . See https://developer.apple.com/documentation/uikit/uiwebview for more information.
问题是我没有在我的应用程序中使用 UIWebView 所以我尝试更新我的 pods 但仍然是相同的 thing.By 这是我在 TestFlight 上的第三次构建,这是苹果第一次给我发这个。有什么想法吗?
更新
这些是我的 pods:
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
所以现在我是否必须等待 google 修复它们并更新我的 pods?
检查您是否在代码中使用了 UIWebView class;如果是,请用 WKWebView 替换您的实现,否则需要检查您的 Pods.
使用终端进入您的项目文件夹并执行命令:
grep -r "UIWebView" .
必须更新所有匹配的广告连播。 现在我卡住了,因为我在 Google AdMob(7.49.0 版)中发现了 UIWebView,我正在等待 Google.
的新版本您可以检查存档应用程序中的每个框架,看看是否有任何框架引用了 UIWebView
。从命令行 cd
到存档的应用程序,例如:
cd ~/Library/Developer/Xcode/Archives/<date>/myapp.xcarchive/Products/Applications/myapp.app
在那里,使用 nm
命令转储您的应用程序和每个应用程序框架的符号:
nm myapp | grep UIWeb
for framework in Frameworks/*.framework; do
fname=$(basename $framework .framework)
echo $fname
nm $framework/$fname | grep UIWeb
done
这至少会告诉您哪个框架是罪魁祸首。
我会回答我自己的问题,因为我有关于这封电子邮件的消息。 Google 告诉我有几张关于这个问题的工单,他们会尽快解决这个问题。 同样在今天,我的应用程序已获准在 AppStore 上架,所以它似乎暂时只是一个警告。
在我的例子中,Firebase/Auth
使用的是已弃用的 UIWebView API,而我使用的是旧版本。所以我刚刚使用命令
Firebase/Auth
pod
pod update 'Firebase/Auth'
注意:要找出正在使用此 api 的框架,只需搜索 "UIWebView" (cmd
+shift
+F
)
构建 Ionic 应用程序时,您可以选择 Cordova 或 Capacitor 来部署本机移动版本。虽然更新的版本自动使用 WKWebView,但 Cordova 仍然完全使用 UIWebView API 或包含对它们的引用(Capacitor 已更新以删除这些引用 - 见下文)。
提交应用后,Apple 会在应用代码中搜索“UIWebView”字符串,如果找到则生成提交警告。因此,将来需要发布 cordova-ios(Cordova iOS 库)以确保删除所有对 UIWebView API 的引用。
另一个想法。我不知道这是否有意义或技术上可行。
也将 UIWebView 移动到一个插件,并使 cordova-ios 使用这个或一些 WKWebView 插件。 cordova-ios 只包含加载 webview 的代码。默认情况下,下一个版本应该加载 Apache WKWebViewEngine(新应用程序默认安装的插件,旧应用程序的迁移说明)。需要 UIWebView、Ionic、fork 或其他的用户可以像现在这样指定自己的一个。
这样 UIWebView 就不会出现在 cordova-ios 中,而且它仍然像今天一样灵活。
使用最新的 firebase 版本
https://firebase.google.com/support/release-notes/ios
版本 6.8.1:删除了对 UIWebViewDelegate 的引用以符合 App Store 提交警告 (#3722)。
如果您使用 Unity 3D 进行构建,这是一个已知问题(已在变更日志中确认),目前已针对版本 2019.3 修复(正在测试和向后移植)。
我在 React 本机应用程序中遇到了同样的问题。检查以下内容:
1) 您正在使用 react-native-webview 模块,而不是直接从 react-native 导入它(社区 webview 在 v0.60 中被弃用为精简核心删除,并将在下一个稳定版本中删除)。 (check here)
2) 还请验证您是否正在使用任何使用 webview 的第三方库是最新的,如果不是,请要求库维护人员升级 react-native-webview。
3) 已经可以上传了,如果还有什么问题欢迎补充。
Check here the breaking changes in v0.60
消除此警告的另一种方法是: 开始传useWebKit={true},也就是说你用的是WKWebView,根本不是UIWebView。那么你可以通过以下方式解决问题 -- Deprecated API Usage.
- 去掉Libraries/RNCWebView.xcodeproj/RNCUIWebView.h、RNCUIWebView.m、RNCUIWebViewManager.h、RNCUIWebViewManager.m
- 去掉Libraries/React.xcodeproj/React/Views/RCTWebView.h、RCTWebView.m、RCTWebViewManager.h、RCTWebViewManager.m
现在我已经app.ipa成功上传到AppStore,没有任何权限警告。
<WebView
style={{flex: 1, backgroundColor: Colors.white}}
useWebKit={true}
startInLoadingState={true}
source={{uri: 'my http url'}}
/>```
这是一个漫长的过程,但我设法解决了上述问题。让我引导您完成整个过程并分享我的发现。 首先,对我有用的不一定对你也有用。你只是需要尝试所有可能的解决方案。 我遵循了各种线程中发布的一些解决方案。 (链接如下)。
- 当我在 RN 0.59 时,我发现这些文件评论 mentioned here。 没用
- 我升级到 RN 0.61,我没有找到这些文件。我尝试上传应用程序,但仍然收到警告。 没用
- 我将以下库更新到最新版本。 没用 反应本机设备信息 反应本机视图
我尝试了这个 grep 命令 mentioned here。出现了某些库,即 react-native-fbsdk、react-native-google-sign、react-native-gesture-handler。所以我升级了所有这些并上传了构建但仍然收到警告。 没成功
更新所有库的最后手段,我知道这会花费很多时间。所以我的第一个猜测是将 'react-native-firebase' 更新到最新的 v6 版本 issue. But it had some issues with Notification not being on so I couldn't use it. Also they mentioned that their v.5.5.6 is clean and doesn't have any UIWebViewIssues given you update your iOS sdk to 6.12.+ More info here。 所以这让我想到了我的第二个猜测,在我的例子中是 'react-native-ux-cam'。幸运的是,他们更新了他们的库以删除 UIWebView 的所有引用。我更新到最新版本和 BOOM,问题解决了。我将我的应用程序提交给了 Apple,到目前为止没有任何警告。更多信息 here 有效
希望这对某人有所帮助。
如果有人帮助我 运行 pod update
在终端上然后再次存档。这对我有用。
WKWebView
是 UIWebView
的替代品。如果您的代码中没有 UIWebView
用法,那么通过执行以下终端命令,您可以轻松了解哪个库仍在使用 UIWebView
引用(不要错过 .(点) ).
从命令行,cd 到存档的应用程序,例如
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
也看看这个 Medium Article
背景故事
在我的 ReactJS + Cordova 项目中,我将一个应用程序上传到应用程序商店并成功。在我收到一封引用 ITMS-90809: Deprecated API Usage
的电子邮件后不久。经过数小时(数天)的研究和多次上传失败后,我使用付费开发者令牌(50 美元)与 Apple 建立了联系;他们基本上回答说“检查你的节点模块文件夹”并退还了我的令牌,因为他们不会帮助我解决这个极其模棱两可的错误。
之前的尝试
- 更新了 cordova 以使用
wkwebview-engine
和wkwebviewxhrfix
插件 - 使用
grep -r
档案、ios 源代码和整个项目源代码,我发现了很多注释,但没有任何帮助。 - 更新了所有
npm
个软件包 - 清理并更新了所有
cocoapod
pods
最后的尝试
删除所有“额外的”cordova 插件、npm 包和 pods 后,我只剩下一个 shell 的应用程序,但仍然面临苹果拒绝。再次使用 grep -r
仍然有对“facebook”的引用,这使我找到了 FBSDK
.
解决方案
FBSDK
已手动添加到 target > Build Phases > Link Binary With Libraries
。 target > Build Phases > Compile Sources
中还有一个关联的 cordovaFacebook.m
。删除这些旧的、未维护的文件后,我可以毫无问题地上传到 iTunes Connect。
对于使用 cocoapods 的项目:
grep -r UIWebView Pods/
对我来说,脚本没有帮助。我不得不手动浏览每个框架并查看发行说明,然后更新它们。
FB Sdk 7.16.1以上版本有此问题。实际上它在框架文件夹中没有文件。
当您使用 FBSDK v7.16.1 构建它时,此错误已删除,但 Appstore 拒绝了该应用程序,因为折旧 api usage(UIWebView)。
我用FBSDK v7.19.2解决了。
1) 当您为 xcode 构建项目时,它显示提及错误,未找到 shareKit。我通过将 facebookSDK 文件夹从我以前构建的框架文件夹(使用 fbsdk v7.16.1)复制到当前 xcode 文件夹(frameworks/FacebookSDK...)
2) 然后,打开您的 xcode 项目,将位于 Frameworks/FacebookSDK/Plugins/IOS/ (sharekit, corekit, loginkit) 的文件添加到 Xcode.
中的框架中3) 将“$(PROJECT_DIR)/Frameworks/FacebookSDK/Plugins/iOS”添加到 Xcode 的构建设置中的框架搜索路径中。
4) 在终端中打开项目:输入 "grep -r "UIWebView" ." ,如果这显示与 UIWebView 有任何匹配,请通过打开文件将其删除。
5) 如果在FBSDKCoreKit的二进制文件中显示匹配。在 TextEdit 中打开位于 MAC 的文件并查找并将所有 "UIWebView" 替换为 "WKWebView"
6) 保存并再次将其添加到位于 Xcode 的框架中。构建并推送到应用商店。
我通过更新 ionic webview 插件并在配置中添加首选项解决了这个问题。
我遵循了以下步骤:
1.cordova 插件 rm cordova-plugin-ionic-webview
2.cordova 插件添加 cordova-plugin-ionic-webview@latest
3.Added ios 平台下配置文件中的首选项:
<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 步:
Search “UIWebView” in xcode project directory
第 2 步:
Right click (on RCTWebView.m) and select “Reveal In Project Navigator”
第 3 步:
Scroll down and delete the following four files only:
1. RCTWebView.h
2. RCTWebView.m
3. RCTWebViewManager.h
4. RCTWebViewManager.m
然后清理项目和存档。
N.B:如果您使用 'react-native-community/react-native-webview' 库,则更新为最新版本,否则就完成了。
您应该安装此 Cordova 插件:
https://github.com/apache/cordova-plugin-wkwebview-engine
然后在 config.xml 中的 iOS 部分下添加 <preference name="WKWebViewOnly" value="true" />
。
然后增加版本re-upload它。
为了找到您在哪里使用 UIWebView
,请在终端中转到您的项目根目录
并使用这个命令
grep -r -F "UIWebView" .
The '.' is very important.
它告诉系统在当前文件夹和子文件夹中搜索字符串"UIWebView"。 这将同时搜索 cocoapods 库
更新 ios
中弃用的 WebView这成功解决了我的问题
CD platforms/ios grep -r UIWebView Pods/
打开 Podfile 和 add/replace AFNetworking pod 作为
pod 'AFNetworking', '~> 4.0'
终于在终端 pod 更新
根据新的 Apple 政策,不再接受 new/old 使用 UIWebView 的应用程序。最好的解决方案是使用 WKWebView 来提高安全性。这个问题是因为一些过时的旧插件,如 GoogleAd 或 GoogleVR SDK。如果您想要快速解决方案,请将 UIWebView 替换为 WKWebView 框架。
在终端中,运行 您的 iOS 项目文件夹中的此命令:
grep -r "UIWebView"
然后您将找到所有使用 UIWebview 的文件的列表。更新任何文件以使用 WKWebView(或使用 gVim 将它们替换为 WKWebView)。如果你的 pod 库显示它有 UIWebView。同时更新 pods 文件。
在我的例子中,不受支持的插件是 GVR SDK,解决步骤是:
第一步:删除 UIWebView:
- 得到vim for mac.
- List item In Vim 打开 {Path to your build folder} \Pods\GVRSDK\Libraries\libGVRSDK.a
- 单击 ESC
- 键入“:”
- 粘贴“%s/UIWebView/WKWebView/g”
- 点击进入
第 2 步:将框架添加到您的 Xcode 项目
- Select项目左侧项目导航器中的项目文件window。
- Select 要在项目设置编辑器中添加框架的目标。
- Select“Build Phases”选项卡,然后单击“Link Binary With Libraries”旁边的小三角形以查看应用程序中的所有框架。
- 要添加框架,请单击框架列表下方的“+”。
- Select WebKit.framework
100% 工作解决方案 #ionic #wkwebview #webview
此处 Webview 已被 Apple 弃用,因此请替换为 WKWebview。
按照几个简单的步骤解决这个问题:-
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" />
完成所有这些步骤后,再次使用“ionic cordova build ios”命令进行构建,并再次将其提交到应用商店。