【问题标题】:ionic 3 ITMS-90809: Deprecated API Usage - iOS 5.1.1ionic 3 ITMS-90809:不推荐使用的 API - iOS 5.1.1
【发布时间】:2020-08-16 16:01:14
【问题描述】:
  1. 当我将构建上传到 AppStoreConnect 时(通过
    例如 TestFlight),我得到了众所周知的弃用
    留言:

    ITMS-90809:不推荐使用的 API 使用 - 使用的新应用
    UIWebView 不再被接受。相反,使用 WKWebView 提高了安全性和可靠性。了解更多
    (https://developer.apple.com/documentation/uikit/uiwebview)。

我做了什么: 1) 移除ios平台,增加V5.1.0 ios平台。

2) 在 config.xml 中添加如下

3) Ran ionic cordova build ios

我正在使用的cordova插件列表:

cordova-plugin-add-swift-support 2.0.2 "AddSwiftSupport"

cordova-plugin-camera 4.1.0“相机”

cordova-plugin-chooser 1.2.6“选择器”

cordova-plugin-contacts 3.0.1“联系人”

cordova-plugin-device 2.0.2“设备”

cordova-plugin-file 6.0.2“文件”

cordova-plugin-file-transfer 1.7.1“文件传输”

cordova-plugin-filepath 1.5.8 "cordova-plugin-filepath"

cordova-plugin-googleplus 5.2.1 "Google SignIn"   

cordova-plugin-ionic-keyboard 2.2.0 "cordova-plugin-ionic-keyboard" 

cordova-plugin-ionic-webview 4.2.1 "cordova-plugin-ionic-webview"   

cordova-plugin-media-capture 3.0.3 "Capture"   

cordova-plugin-splashscreen 5.0.2 "Splashscreen"   

cordova-plugin-statusbar 2.4.2 "StatusBar" 

cordova-plugin-stripe 1.5.3 "cordova-plugin-stripe" 

cordova-plugin-telerik-imagepicker 2.3.3 "ImagePicker" 

cordova-plugin-video-editor 1.1.3 "VideoEditor" 

cordova-plugin-whitelist 1.3.3 "Whitelist" 

ionic-plugin-deeplinks 1.0.20 "Ionic Deeplink Plugin"

离子信息: 离子: 离子(离子 CLI):4.10.3(/usr/local/lib/node_modules/ionic)离子框架: 在此处输入代码 离子角 3.9.9 @ionic/app-scripts : 3.2.4

       Cordova:
      cordova (Cordova CLI) : 8.1.2 (cordova-lib@8.1.1)    

科尔多瓦

平台:ios 5.1.0

Cordova 插件:
cordova-plugin-ionic-keyboard 2.2.0,cordova-plugin-ionic-webview 4.2.1,(和其他 17 个插件)

系统: ios-deploy : 1.9.4 ios-sim : 8.0.2

NodeJS : v10.15.1 (/usr/local/bin/node)
npm:6.4.1

操作系统:macOS Mojave

Xcode:Xcode 11.3.1 构建版本 11C504

有没有人知道是什么导致了这个问题?

非常感谢您!

【问题讨论】:

  • 面临同样的问题。我已经卸载了所有 3rd 方库,更新了所有本地 ionic 库,并按照他们博客文章中的所有步骤来使用 WKWebView,但没有成功。似乎还有很多其他人有同样的问题。你用 ionic 开过票吗?
  • 是的,在 ionic 论坛上创建了票证,但正在审核中。
  • 对我来说,admob 使用 UIwebview。每个人都在等待他们的更新。使用此命令找出它的使用位置:grep -r "UIWebView" .
  • 显示应用内浏览器和 google-plus 插件。所以我必须做什么。
  • 我已经更新了 google plus 插件 v8.4.0,但是当 Ifatal 错误 'googlesignin/googlesignin.h' 文件未找到 #import googlesignin/googlesignin.h 构建应用程序时,它返回以下错误:

标签: ios uiwebview ionic3 wkwebview


【解决方案1】:

正如他们在Understanding ITMS-90809: UIWebView API Deprecation中所说的:

  • 添加cordova plugin add cordova-plugin-ionic-webview@latest
  • 检查所有插件。更新使用(例如InAppBrowser 3.2.0)或删除未使用的插件。

另外,使用Cordova iOS 5.1.1

此补丁版本中最值得注意的修复是准备 步骤等待平台添加步骤完成。 这解决了 在添加之前设置 WKWebViewOnly 标志时出现的错误 平台

ionic cordova platform remove ios
ionic cordova platform add ios@5.1.1

config.xml中添加:

<platform name="ios">
    <preference name="WKWebViewOnly" value="true" />

    <feature name="CDVWKWebViewEngine">
        <param name="ios-package" value="CDVWKWebViewEngine" />
    </feature>

    <preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />
</platform>

您可以在文章How To Use 'WKWebViewOnly' 中找到更多相关信息。

上面的例子使用了cordova-plugin-wkwebview-engine插件:

  • 添加插件cordova-plugin-wkwebview-engine,最好是最新版1.2.1
  • preference 属性CordovaWebViewEngine 添加到config.xml
  • feature 属性CDVWKWebViewEngine 添加到config.xml
  • preference WKWebViewOnly 添加到config.xml

最后但同样重要的是:

 ionic cordova prepare ios

我希望这会有所帮助。我已按照这些步骤操作,并且对 App Store 的更新没有任何问题。

【讨论】:

  • 更新ios平台后,xcode每次都构建失败。对我需要做什么有什么建议吗?
  • 是的,xcodebuild: Command failed with exit code 65 [ERROR] An error occurred while running subprocess cordova.
  • @tacticalmovephase 你找到解决办法了吗?
  • 是的,我降级到了之前的ios版本。从那里开始,我必须一个接一个地查看我的每个插件。
【解决方案2】:

检查项目的 CordovaLib 目标 -> 构建设置 -> 用户定义(最底部)。在那里你会发现WK_WEB_VIEW_ONLY = 0 将此设置为WK_WEB_VIEW_ONLY = 1 通过 GCC_PREPROCESSOR_DEFINITIONS 设置宏不起作用。你也可以用Xcode搜索WK_WEB_VIEW_ONLY,如果Flag设置为0就会快速显示。

只有当 configure.xml 包含&lt;preference name="WKWebViewOnly" value="true" /&gt;在您创建新的 ios 项目时,Cordova 才会更改此标志。因此,除了添加首选项之外,在 XCode 中手动将其更改为 1 是有意义的。

【讨论】:

    【解决方案3】:

    随着最新更新,苹果删除了 UIWebView 的使用,因此使用此 UIWebView 提交的应用程序将被拒绝,他们希望使用 WKWebView 构建应用程序以提高安全性和可靠性。

    注意:如果您知道如何添加此插件“cordova-plugin-wkwebview-engine”并运行“npm i cordova-plugin-wkwebview-engine”,请撤消这些步骤,即(删除插件和npm 卸载它)。因为这将导致构建 ios 步骤失败并出现错误 65。

    要在我们现有的项目中实现这一点,我们需要按顺序执行这些步骤,以便我们的应用在 App Store 中部署。

    1). ionic cordova platform remove ios
    
    2). ionic cordova plugin remove cordova-plugin-ionic-webview
    
    3). ionic cordova plugin add cordova-plugin-ionic-webview@latest
    
    4). npm install @ionic-native/ionic-webview@latest
    
    5). Add following XML code in config.xml file under platform ios
            // These preferences and feature will automatically replace UIWebView to WKWebView in all the places of code during compile time.
            <preference name="WKWebViewOnly" value="true" />
            <feature name="CDVWKWebViewEngine">
                <param name="ios-package" value="CDVWKWebViewEngine" />
            </feature>
            <preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />
    
    6). Check in package.json file under dependencies key "cordova-ios": "5.1.1" should exist, if not exist then add "cordova-ios": "5.1.1"
    
    7). ionic cordova platform add ios
    
    8). ionic cordova prepare ios
    
    9). ionic cordova build ios
    

    现在这些步骤将成功构建 ios 应用程序并准备好部署。

    注意:我在 ionic 3 和 ionic 4 中测试了这些步骤。

    希望这会对您或其他人有所帮助!

    谢谢!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 2020-12-12
      • 2020-11-09
      • 2020-09-16
      • 2020-11-03
      • 2021-08-10
      • 2020-11-19
      相关资源
      最近更新 更多