【问题标题】:ITMS-90809: Deprecated API Usage - existing app that use UIWebView are no longer acceptedITMS-90809:不推荐使用的 API 使用 - 不再接受使用 UIWebView 的现有应用程序
【发布时间】:2020-08-30 14:02:57
【问题描述】:

ITMS-90809:API 使用已弃用 - 自 2020 年 4 月 30 日起,Apple 将不再接受提交使用 UIWebView 的新应用程序以及自 2020 年 12 月起使用 UIWebView 的应用程序更新。相反,使用 WKWebView 来提高安全性和可靠性。

我正在尝试更新现有应用,而不是新应用。我仍然无法上传应用程序。我通过电子邮件收到此错误:


We identified one or more issues with a recent delivery for your app, "App Name" 20202.421.1 (6). Please correct the following issues, then upload again.
ITMS-90809: Deprecated API Usage - New apps that use UIWebView are no longer accepted. Instead, use WKWebView for improved security and reliability. Learn more (https://developer.apple.com/documentation/uikit/uiwebview).

Apple 改变了它的政策还是什么?还是需要换UIWebView

【问题讨论】:

  • @TylerTheCompiler 不。似乎但不是...请先阅读...我知道 UIWebView 正在被贬低但对于新应用程序的事实。对于旧应用,他们提到了 2020 年 12 月的最后期限。我仍然不能更新我现有的应用程序
  • 您是否曾在 App Store 上发布过带有此捆绑包 ID 的此应用的构建版本?
  • 是的..我做到了...我的应用程序现在在应用商店上线...我想更新它
  • 我现有的应用程序(在 App Store 上使用了 2 年以上)也遇到了同样的问题。我确实有一个组件仍在使用 UIWebView,并且必须将其迁移到 WKWebView。奇怪的是,现有的应用程序在 2020 年 12 月之前仍然不应该被拒绝。我也是在 5 月初开始随机发生的。 5 月份工作了几天,所以 4 月 30 日的最后期限没有导致这个问题,这很奇怪。

标签: ios uiwebview app-store app-store-connect wkwebview


【解决方案1】:

我遇到了同样的问题并通过以下步骤解决了:

  1. 更新 webview 插件
cordova plugin add cordova-plugin-ionic-webview@latest
npm install @ionic-native/ionic-webview
  1. config.xml文件中添加一些配置
<allow-navigation href="http://localhost:8080/*" />
<preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />
<platform name="ios">
    <resource-file src="GoogleService-Info.plist" />
    <preference name="StatusBarOverlaysWebView" value="false" />
    <preference name="AutoHideSplashScreen" value="true" />
    <allow-intent href="itms:*" />
    <preference name="WKWebViewOnly" value="true" />
    <preference name="InAppBrowserStatusBarStyle" value="lightcontent" />
    <feature name="CDVWKWebViewEngine">
        <param name="ios-package" value="CDVWKWebViewEngine" />
    </feature>
    <preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />
  1. 删除或更新社交分享插件(如果您使用它)
ionic cordova plugin add cordova-plugin-x-socialsharing@latest --save 
npm install @ionic-native/social-sharing@latest --save
  1. 再次移除并添加 iOS 平台

【讨论】:

    【解决方案2】:

    更新您的软件包(例如 react-native-device-info)。

    它的工作原理

     in package.json update device-info to latest
    "react-native-device-info": "^8.0.8",
    
    run this command in terminal
    
    grep -r UIWebView node_modules/*
    
    
    
    ignored for contexts returned by UIWebView. */
    node_modules/react-addons-shallow-compare/node_modules/fbjs/lib/UserAgent.js.flow:   * - UIWebView
    node_modules/react-addons-shallow-compare/node_modules/fbjs/lib/UserAgent.js:   * - UIWebView
    node_modules/recyclerlistview/node_modules/fbjs/lib/UserAgent.js.flow:   * - UIWebView
    node_modules/recyclerlistview/node_modules/fbjs/lib/UserAgent.js:   * - UIWebView
    node_modules/ua-parser-js/test/browser-test.json:        "ua"      : "Mozilla/5.0 (iPhone; CPU iPhone OS 10_0_2 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Mobile/14A456 QQ/6.5.3.410 V1_IPH_SQ_6.5.3_1_APP_A Pixel/1080 Core/UIWebView NetType/WIFI Mem/26",
    DT-67iMac-2:IGPSYARD stigasoft$ 
    
    
    yarn upgrade react-addons-shallow-compare recyclerlistview ua-parser-jss
    
    cd ios
    
      rm -rf Pods # probably not needed.  (delete pods and podfile.lock file and again pod install)
    
    pod install
    

    more details

    构建我的项目,测试一切仍然有效并提交给 Apple。 这次没有关于使用已弃用 API 的消息。

    【讨论】:

      【解决方案3】:

      here的答案解决了我的问题

      cordova prepare ios
      npm install -g cordova-check-plugins
      npm install -g npm
      cordova-check-plugins --update=auto
      npm update -g cordova
      ionic cordova platform rm android
      ionic cordova platform rm ios
      npm i -g @ionic/cli
      cordova plugin remove cordova-plugin-inappbrowser
      cordova plugin add cordova-plugin-inappbrowser@3.2.0
      ionic cordova platform remove ios && ionic cordova platform add ios@latest && ionic cordova build ios
      

      【讨论】:

        【解决方案4】:

        就我而言,我的项目中没有UIWebView,但苹果仍然显示上述错误。然后我使用以下步骤找出包含 UIWebView 的文件。

        步骤 1.打开终端 步骤 2. cd 然后按回车键。 步骤 3. 粘贴此命令 grep -r "UIWebView" . 然后你会找到文件列表。

        就我而言。我从项目中删除了 GoogleAdMobSDK 并使用 pod 再次安装它。 https://developers.google.com/admob/ios/quick-start

        如果您从未使用过 pod,请在 youtube 上学习“如何使用 pod”。

        安装 pod 后。 Apple 接受了我的项目。

        嗯。终于解决了。

        【讨论】:

          【解决方案5】:

          对于 Xamarin Form 项目,修复方法如下:

          转到您的 iOS 项目,打开项目属性并在附加的 mtouch 参数字段中添加此标志:--optimize=experimental-xforms-product-type 此标志与设置为 SDK Only 或 All 的 Linker Behavior 一起使用。

          阅读来自 Microsoft 的更多信息:https://devblogs.microsoft.com/xamarin/uiwebview-deprecation-xamarin-forms/

          【讨论】:

            【解决方案6】:

            我通过以下步骤摆脱了这个问题(在 react-native 项目中)-

            第 1 步:

            在xcode项目目录中搜索“UIWebView”

            第 2 步:

            右键单击(在 RCTWebView.m 上)并选择“Reveal In Project Navigator”

            第 3 步:

            向下滚动并仅删除以下四个文件:

             1. RCTWebView.h
             2. RCTWebView.m
             3. RCTWebViewManager.h
             4. RCTWebViewManager.m
            

            然后清理项目和存档。

            注意:如果您使用 'react-native-community/react-native-webview' 库,则使用最新版本更新,否则就完成了。

            【讨论】:

              【解决方案7】:

              在终端中,在您的 iOS 项目文件夹中运行此命令:

              grep -r "UIWebView" .
              

              它将显示所有使用 UIWebview 的文件。更新任何文件以使用 WKWebView。如果您的 pod 库显示它具有 UIWebView。同时更新 pods 文件。

              仅供参考,我花了 6 个小时来修复我的项目以使用 WKWebView,因为我必须更新 pod 文件并且必须修复大量代码。

              【讨论】:

              • 别忘了 . (点)在 [grep -r "UIWebView" .] 的末尾,就像我做的那样......
              • 很好的解决方案。谢谢。
              • 嗨@user1733372,你能告诉我如何更新pod吗?我对豆荚一无所知。
              • 使用了您的解决方案,事实证明 UIWebView 正在其中一个依赖项中使用。所以,我将该库更新到了最新版本,它就像一个魅力!
              【解决方案8】:

              是的,Apple 确实改变了政策 你用的是离子的吗?如果是这样,请安装这些:

              1. cordova plugin add cordova-plugin-ionic-webview@latest
              2. npm install @ionic-native/ionic-webview

              然后把这个添加到你ios平台下的config.xml中:

              <preference name="WKWebViewOnly" value="true" />
              <feature name="CDVWKWebViewEngine">`
              <param name="ios-package" value="CDVWKWebViewEngine" />
              </feature>
              <preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />
              

              最后运行ionic cordova prepare ios 以反映更改 然后运行ionic cordova build ios --prod

              PS:请确保您只安装了一个 webview 插件。无论是这个还是“cordova-webviewengine”。但上述方法对我有用,我的应用现在在应用商店中

              【讨论】:

              • 在 Ionic v5 上验证。谢谢@Sireesha!
              • 我不知道你是否能帮助解决这个问题,但在这样做之后,我遇到了一些新错误。之前,它启动了我的应用程序,我能够登录,但现在,它仍然启动它,但我收到了 Access-Control-Allow-Origin cannot contain more than one origin.XMLHttpRequest cannot load due to access control checks。唯一改变的是您的帖子所做的更改。
              • @J.Do,看起来问题在于您正在调用的 API。您是否尝试查看所有请求是否都得到正确处理?
              【解决方案9】:

              facebook4、googleplus、fcm 这些cordova 插件的旧版本也使用UIWebView。需要使用最新版本

              【讨论】:

                【解决方案10】:

                我在 Ionic 4 中遇到了同样的问题。

                解决问题所遵循的步骤列表

                请更新您的 IOS 平台。和应用浏览器。

                cordova plugin add cordova-plugin-wkwebview-engine
                
                run cordova plugin add cordova-plugin-wkwebview-engine
                
                detele node_modules , then reinstall by run yarn or npm install
                
                run ionic cordova platform rm ios
                
                run ionic cordova platform add ios@5.1.1
                
                npm i cordova-plugin-inappbrowser@3.2.0
                
                cordova plugin add cordova-plugin-inappbrowser@3.2.0
                
                ionic cordova prepare ios.
                
                ionic cordova build ios
                

                【讨论】:

                  【解决方案11】:

                  几天前,我的 IONIC 4 项目也遇到了同样的问题。 当我上传我的 IPA 时,我从 App Store Connect 收到了这个警告。

                  我通过以下步骤修复了“UIWebView”问题。希望它也对你有用。

                  按照以下步骤:

                  1. 运行以下命令删除现有平台。

                    ionic cordova platform rm ios

                  2. 删除现有的网络视图插件并安装最新的。

                    ionic cordova plugin rm cordova-plugin-ionic-webview

                    ionic cordova plugin add cordova-plugin-ionic-webview@latest

                  3. 也安装这个。

                    npm install @ionic-native/ionic-webview@latest

                  4. 将此添加到 ios 部分下的 config.xml 文件中。

                    &lt;preference name="WKWebViewOnly" value="true" /&gt; &lt;feature name="CDVWKWebViewEngine"&gt; &lt;param name="ios-package" value="CDVWKWebViewEngine" /&gt; &lt;/feature&gt; &lt;preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" /&gt;

                  5. 检查您的"cordova-ios": "^5.1.1" 版本。它应该是5.1.x 或更大。

                  6. 然后运行此命令再次构建。

                    ionic cordova platform add ios

                    ionic cordova prepare ios

                    ionic cordova build ios

                  就是这样。它对我有用。


                  我的 Package.json 文件:

                  也分享我的 config.xml:

                  点击此链接了解更多信息:

                  https://ionicframework.com/blog/understanding-itms-90809-uiwebview-api-deprecation/

                  谢谢。

                  【讨论】:

                  • 您好,我在更新 config.xml 后面临“收到内存压力事件 2 vm 压力 0”我的应用程序将再次重新加载。怎么了?
                  猜你喜欢
                  • 2020-11-19
                  • 2021-08-10
                  • 2020-09-16
                  • 2020-01-03
                  • 2020-01-03
                  • 2020-12-12
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多