ITMS-90809:不推荐使用的 API - 不再接受使用 UIWebView 的新应用程序。相反,使用 WKWebView 来提高安全性和可靠性

Posted

技术标签:

【中文标题】ITMS-90809:不推荐使用的 API - 不再接受使用 UIWebView 的新应用程序。相反,使用 WKWebView 来提高安全性和可靠性【英文标题】:ITMS-90809: Deprecated API Usage - New apps that use UIWebView are no longer accepted. Instead, use WKWebView for improved security and reliability 【发布时间】:2020-10-18 22:27:27 【问题描述】:

我使用 phonegal 构建,但今天将 .ipa 上传到苹果商店时出现此错误

ITMS-90809:不推荐使用的 API - 不再接受使用 UIWebView 的新应用。相反,使用 WKWebView 来提高安全性和可靠性

然后我删除了 config.xml 中的所有 Cordova 插件,但仍然出现一些错误。我研究并找到了 monaca..在 monaca 配置选项中,我选择了 WKWebViewOnly 但仍然出现一些错误..这是我的 config.xml

 <?xml version="1.0" encoding="UTF-8"?>
<widget xmlns="http://www.w3.org/ns/widgets" id="com.demircode.bileteviniz" version="1.3.1">
  <name>BiletEviniz</name>
  <description>BiletEviniz</description>
  <author/>
  <content src="index.html"/>
  <allow-navigation href="*"/>
  <allow-intent href="itms:*"/>
  <allow-intent href="itms-apps:*"/>
  <preference name="Orientation" value="default"/>
  <preference name="loglevel" value="DEBUG"/>
  <preference name="androidLaunchMode" value="singleTop"/>
  <preference name="ErrorUrl" value=""/>
  <preference name="Fullscreen" value="false"/>
  <preference name="KeepRunning" value="true"/>
  <preference name="SplashScreen" value="screen"/>
  <preference name="SplashScreenDelay" value="1000"/>
  <preference name="AllowInlineMediaPlayback" value="false"/>
  <preference name="BackupWebStorage" value="cloud"/>
  <preference name="FadeSplashScreenDuration" value="250"/>
  <preference name="KeyboardDisplayRequiresUserAction" value="true"/>
  <preference name="MediaPlaybackRequiresUserAction" value="false"/>
  <preference name="SuppressesIncrementalRendering" value="false"/>
  <preference name="TopActivityIndicator" value="gray"/>
  <preference name="GapBetweenPages" value="0"/>
  <preference name="PageLength" value="0"/>
  <preference name="PaginationBreakingMode" value="page"/>
  <preference name="PaginationMode" value="unpaginated"/>
  <feature name="LocalStorage">
    <param name="ios-package" value="CDVLocalStorage"/>
  </feature>
  <preference name="UIWebViewDecelerationSpeed" value="normal"/>
  <preference name="monaca:AndroidIsPackageNameSeparate" value="false"/>
  <platform name="ios">
    <preference name="orientation" value="portrait"/>
    <icon src="lobbe.png"/>
    <icon platform="ios"  src="lobbe-76-76.png" />
    <icon platform="ios"  src="lobbe-120-120.png" />
    <icon platform="ios"  src="lobbe-152-152.png" />
    <icon platform="ios"  src="lobbe-1024-1024.png" />
    <icon platform="ios"  src="lobbe-40-40.png" />
    <icon platform="ios"  src="lobbe-167-167.png" />
    <splash src="/res/ios/screen/Default@2x~universal~anyany.png"/>
    <preference name="WKWebViewOnly" value="true"/>
    <preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine"/>
    <feature name="CDVWKWebViewEngine">
      <param name="ios-package" value="CDVWKWebViewEngine"/>
    </feature>
    <config-file platform="ios" parent="CFBundleLocalizations" target="*-Info.plist">
      <array>
        <string>tr</string>
        <string>en</string>
      </array>
    </config-file>
  </platform>
  <preference name="WindowsStorePublisherName" value="My Name"/>
  <preference name="WindowsStoreIdentityName" value="3e46a957-1e6e-2eb6-9380-b3b37c4dec02"/>
  <preference name="ios-XCBuildConfiguration-TARGETED_DEVICE_FAMILY" value="1,2"/>
  <preference name="AutoHideSplashScreen" value="true"/>
  <preference name="FadeSplashScreen" value="true"/>
  <preference name="ShowSplashScreenSpinner" value="false"/>
  <access origin="bileteviniz.com"/>
  <preference name="DisallowOverscroll" value="true"/>
  <preference name="EnableViewportScale" value="false"/>
</widget>

这是 package.json

 
      "name": "monaca-template-minimum",
      "version": "2.0.7",
      "displayName": "Monaca Template Minimum",
      "dependencies": 
        "cordova-custom-config": "5.1.0",
        "cordova-plugin-splashscreen": "5.0.2",
        "cordova-plugin-whitelist": "1.3.3",
        "monaca-plugin-monaca-core": "3.3.0"
      ,
      "scripts": 
        "monaca:preview": "npm run dev",
        "dev": "browser-sync start -s www/ --watch --port 8080 --ui-port 8081"
      ,
      "cordova": 
        "plugins": 
          "cordova-plugin-whitelist": ,
          "cordova-plugin-splashscreen": ,
          "cordova-custom-config": ,
          "monaca-plugin-monaca-core": 
        
      ,
      "devDependencies": 
        "browser-sync": "^2.26.7",
        "cordova": "^9.0.0"
      
    

【问题讨论】:

仅仅不使用 UIWebView 是不够的,你的代码根本没有任何参考。您可能需要更新版本的 monaca 插件 我删除了所有插件并添加了你可以在config.xml中看到的monaca 【参考方案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>
<plugin name="cordova-plugin-wkwebview-engine"/>
<plugin name="cordova-plugin-inappbrowser"/>

您的其他插件之一可能调用 UIWebView。您可能需要尝试将可疑插件排除在外,直到问题消失,然后查看是否有插件的更新版本。

(上面的config.xml代码来自VoltBuilder docs)

【讨论】:

以上是关于ITMS-90809:不推荐使用的 API - 不再接受使用 UIWebView 的新应用程序。相反,使用 WKWebView 来提高安全性和可靠性的主要内容,如果未能解决你的问题,请参考以下文章

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

ITMS-90809:不推荐使用的 API - 不再接受使用 UIWebView 的新应用程序。相反,使用 WKWebView 来提高安全性和可靠性

ITMS-90809:框架上的 UIWebView API 弃用

ITMS-90809:使用 react-native-html-to-pdf 时已弃用 API 使用警告

Apple 警告 ITMS-90809:收到已弃用的 API 使用情况

离子框架:ITMS-90809:UIWebView API 弃用(遵循所有说明,但我收到弃用消息)