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

Nic*_*dis 28 xcode ios swift

昨天,我将我的应用程序上传到TestFlight,一段时间后,Apple向我发送了此警告:

ITMS-90809:不推荐使用的API-Apple将停止接受使用UIWebView API的应用程序的提交。有关更多信息,请参见https://developer.apple.com/documentation/uikit/uiwebview

问题是我没有在应用程序中使用UIWebView,所以我尝试更新Pod,但还是一样。通过这种方式,这是我在TestFlight上的第三个构建,这是苹果第一次向我发送此消息。有任何想法吗?

更新资料

这些是我的豆荚:

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'
Run Code Online (Sandbox Code Playgroud)

更新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
Run Code Online (Sandbox Code Playgroud)

所以,现在我必须等待谷歌修复它们并更新我的吊舱吗?

Wil*_*rdo 17

检查是否在代码中使用UIWebView类;如果是,请用WKWebView替换您的实现,否则需要检查Pod。

与终端一起进入您的项目文件夹并执行命令: grep -r "UIWebView" .

所有匹配的广告连播都必须更新。现在,我被困住了,因为我在Google AdMob(版本7.49.0)中找到了UIWebView,并且正在等待Google的新版本。

  • @DuraiAmuthan.H 检查您在 grep 命令末尾添加了句点/句号 (.)。我最初也犯过同样的错误 (19认同)
  • 您错过了最后一个点!要执行的命令是:grep -r“ UIWebView”。 (6认同)
  • 当我在终端中输入命令时,出现以下警告“ grep:warning:stdin的递归搜索”,即使30分钟后它也不会返回任何响应。 (4认同)
  • 你还明白这个@WilliamNardo吗?尽管我已经更新了预期的版本来修复它:“7.55.0 删除了对 UIWebView 的所有引用。不再支持 UIWebView。”,“安装 Google-Mobile-Ads-SDK 7.56.0(是 7.53.0)”。 1)` ,我仍然得到`二进制文件 Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAdsFramework-Current/GoogleMobileAds.framework/GoogleMobileAds matches` (3认同)

Rud*_*dog 17

您可以检查已存档应用程序中的每个框架,以查看是否引用了这些框架UIWebView。从命令行cd到存档的应用程序,例如:

cd ~/Library/Developer/Xcode/Archives/<date>/myapp.xcarchive/Products/Applications/myapp.app
Run Code Online (Sandbox Code Playgroud)

nm到达那里后,使用命令转储应用程序和每个应用程序框架的符号:

nm myapp | grep UIWeb
for framework in Frameworks/*.framework; do
  fname=$(basename $framework .framework)
  echo $fname
  nm $framework/$fname | grep UIWeb
done
Run Code Online (Sandbox Code Playgroud)

这至少会告诉您是哪个框架。

  • 是的,您需要等待(或自行修复它们并提交拉取请求)。我不确定删除所有“UIWebView”使用的确切截止日期是多少,但我非常怀疑它会在今年秋天发布 iOS 13 之前。 (2认同)
  • @johnny,您必须克隆每个存储库并找出它们在哪里使用 UIWebView,删除或替换使用它的代码,如果您希望更改返回到主存储库,则可能需要提交拉取请求。或者,您可以等待维护人员自行修复。正如我之前提到的,现在苹果只是警告开发人员这一点,而不是真正拒绝二进制文件,所以你有一些时间等待上游维护人员修复问题。 (2认同)

Nic*_*dis 7

当我收到有关此电子邮件的新闻时,我将回答我自己的问题。Google告诉我,有几张有关此问题的票证,他们将尽快解决。也是今天,我的应用已获得AppStore的批准,因此暂时只是警告。


use*_*632 7

WKWebView是 的替代品UIWebView。如果您UIWebView的代码中没有使用,则通过执行以下终端命令,您可以轻松了解哪个库仍在使用UIWebView引用(不要错过 .(点))。

从命令行, cd 到存档的应用程序,例如

cd ~/Library/Developer/Xcode/Archives/<date>/myapp.xcarchive/Products/Applications/myapp.app
Run Code Online (Sandbox Code Playgroud)

然后运行

grep -r UIWebView
Run Code Online (Sandbox Code Playgroud)

致电

 grep -r UIWebView /Path/To/Project/*
Run Code Online (Sandbox Code Playgroud)

这将为您提供框架匹配的输出

./<ANY>.framework/Headers/ANY.h:#define ANYUseUIWebView ANY_NAME_PASTE(ANY_PREFIX_NAME, ANYUseUIWebView)
Run Code Online (Sandbox Code Playgroud)

库匹配的输出

Binary file ./<FRAMEWORK-NAME>.framework/<LIB-FILE>.a matches
Run Code Online (Sandbox Code Playgroud)

更新这些库

pod update
Run Code Online (Sandbox Code Playgroud)

还可以查看这篇中等文章


hst*_*tdt 7

对于带有 cocoapods 的项目:

grep -r UIWebView Pods/ 
Run Code Online (Sandbox Code Playgroud)