Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios ITMS-90809:不推荐的API使用——苹果将停止接受使用UIWebView API的应用提交_Ios_Swift_Xcode_Uiwebview_Wkwebview - Fatal编程技术网

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

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

昨天,我将我的应用程序上传到TestFlight,过了一会儿,苹果向我发送了以下警告:

ITMS-90809:不推荐的API使用-苹果将停止接受使用UIWebView API的应用提交。有关更多信息,请参阅

问题是我在我的应用程序中没有使用UIWebView,所以我尝试更新我的播客,但仍然是一样的。顺便说一下,这是我在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'
更新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

  • 删除库/RNCWebView.xcodeproj/RNCUIWebView.h、RNCUIWebView.m、RNCUIWebViewManager.h、RNCUIWebViewManager.m
  • 删除库/React.xcodeproj/React/Views/RCTWebView.h、RCTWebView.m、RCTWebView.manager.h、RCTWebView.m
  • 现在我已经成功地将app.ipa上传到AppStore,没有任何权限警告

    <WebView
     style={{flex: 1, backgroundColor: Colors.white}}
     useWebKit={true}
     startInLoadingState={true}
     source={{uri: 'my http url'}}
    />```
    
    ```
    
    这是一个漫长的过程,但我设法解决了上述问题。让我带你走过这个过程,并分享我的发现。 首先,没必要,对我有用的东西对你也有用。你需要尝试所有可能的解决方案。 我在不同的帖子中发布了一些解决方案。(链接如下)

  • 当我在RN 0.59上时,我发现了这些文件不起作用
  • 我升级到RN 0.61,没有找到这些文件。我尝试上传应用程序,但仍然收到警告不起作用
  • 我将以下库更新为其最新版本不起作用 反应本机设备信息 反应本机视图
  • 我尝试
    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" />