Ionic 4 iOS-WKWebViewConfiguration setURLSchemeHandler:forURLScheme:]:无法识别的选择器已发送到实例

时间:2019-07-12 07:06:59

标签: ios xcode cordova ionic-framework

我已将Ionic应用程序移植到Ionic4。为此,我创建了一个新的Ionic应用程序,并一个接一个地重新添加了代码,程序包和插件,以便所有内容都保持最新。

我快到了,但是在iOS上运行时遇到了问题。当我启动该应用程序时,我只是停留在启动屏幕上。在Xcode中运行时,出现标题中的错误。

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[WKWebViewConfiguration setURLSchemeHandler:forURLScheme:]: unrecognized selector sent to instance 0x165b62a0'

发生这种情况时,xcode中的完整调用堆栈为

2019-07-15 12:29:01.202982+0800 my app[470:518203] DiskCookieStorage changing policy from 2 to 0, cookie file: file:///private/var/mobile/Containers/Data/Application/0E2D25B3-DCDE-4773-8714-650B03D0778D/Library/Cookies/Cookies.binarycookies
  2019-07-15 12:29:01.359887+0800 my app[470:518203] Apache Cordova native platform version 5.0.1 is starting.
  2019-07-15 12:29:01.361263+0800 my app[470:518203] Multi-tasking -> Device: YES, App: YES
  2019-07-15 12:29:01.406496+0800 my app[470:518203] CDVWKWebViewEngine: trying to inject XHR polyfill
  2019-07-15 12:29:01.438223+0800 my app[470:518203] -[WKWebViewConfiguration setURLSchemeHandler:forURLScheme:]: unrecognized selector sent to instance 0x1656cea0
  2019-07-15 12:29:01.438835+0800 my app[470:518203] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[WKWebViewConfiguration setURLSchemeHandler:forURLScheme:]: unrecognized selector sent to instance 0x1656cea0'
  *** First throw call stack:
  (0x1ceafb3d 0x1c137067 0x1ceb4fd1 0x1ceb30c3 0x1cddbdc8 0x1077a3 0x1d08ef 0x1d008f 0x1d052d 0x1cdba1 0xf186b 0x220e1eb7 0x220e1ad9 0x220e805b 0x220e55bb 0x22155159 0x1c3985 0xf1641 0x221515c5 0x22352a4b 0x22357c1d 0x2236a7c5 0x2235535b 0x1e790c13 0x1e790acd 0x1e790db7 0x1ce6bfdd 0x1ce6bb05 0x1ce69f51 0x1cdbd1af 0x1cdbcfd1 0x2214ae2d 0x22145a53 0xf153b 0x1c5aa4eb)
  libc++abi.dylib: terminating with uncaught exception of type NSException

离子信息..

  Dev-Mac-mini:myapp Development$ ionic info

  Ionic:

    ionic (Ionic CLI)             : 4.12.0 (/usr/local/lib/node_modules/ionic)
    Ionic Framework               : @ionic/angular 4.4.0
    @angular-devkit/build-angular : 0.13.8
    @angular-devkit/schematics    : 7.2.4
    @angular/cli                  : 7.3.8
    @ionic/angular-toolkit        : 1.4.1

  Cordova:

    cordova (Cordova CLI) : 9.0.0 (cordova-lib@9.0.1)
    Cordova Platforms     : ios 5.0.1
    Cordova Plugins       : cordova-plugin-ionic-keyboard 2.1.3, cordova-plugin-ionic-webview 3.1.2, (and 11 other plugins)

  System:

    Android SDK Tools : 26.1.1 (/Users/Development/.android-sdk-macosx/)
    ios-deploy        : 1.9.4
    ios-sim           : 8.0.1
    NodeJS            : v10.15.3 (/usr/local/bin/node)
    npm               : 6.4.1
    OS                : macOS High Sierra
    Xcode             : Xcode 9.4.1 Build version 9F2000

有些挖掘,似乎与网络视图有关。我尝试了here的建议,但<allow-navigation href="http://localhost:CUSTOM_PORT_NUMBER/*"/>

除外

在我的Ionic 3版本中,我已经安装了cordova-plugin-wkwebview-engine,但是到目前为止,我还没有将其安装到Ionic 4中,并且据我所知,该Web视图现在默认包括在内。

所以我现在在config.xml中没有以下内容...

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

我当前的config.xml内容如下...

 ?xml version='1.0' encoding='utf-8'?>
  <widget android-versionCode="16" id="com.company.myapp" ios-CFBundleVersion="15" version="1.3.0.4" windows-packageVersion="1.2.6.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
      <name>myapp</name>
      <description></description>
      <author email="support@mycompany.com" href="www.mycompany.com"></author>
      <content src="index.html" />
      <access origin="*" />
      <allow-intent href="http://*/*" />
      <allow-intent href="https://*/*" />
      <allow-intent href="tel:*" />
      <allow-intent href="sms:*" />
      <allow-intent href="mailto:*" />
      <allow-intent href="geo:*" />
      <preference name="ScrollEnabled" value="false" />
      <preference name="android-minSdkVersion" value="19" />
      <preference name="deployment-target" value="10.0" />
      <preference name="WKSuspendInBackground" value="false" />
      <preference name="BackupWebStorage" value="none" />
      <preference name="SplashMaintainAspectRatio" value="true" />
      <preference name="FadeSplashScreenDuration" value="300" />
      <preference name="SplashShowOnlyFirstTime" value="false" />
      <preference name="SplashScreen" value="screen" />
      <preference name="SplashScreenDelay" value="3000" />
      <platform name="android">
          <allow-intent href="market:*" />
          <icon density="ldpi" src="resources/android/icon/drawable-ldpi-icon.png" />
          <icon density="mdpi" src="resources/android/icon/drawable-mdpi-icon.png" />
          <icon density="hdpi" src="resources/android/icon/drawable-hdpi-icon.png" />
          <icon density="xhdpi" src="resources/android/icon/drawable-xhdpi-icon.png" />
          <icon density="xxhdpi" src="resources/android/icon/drawable-xxhdpi-icon.png" />
          <icon density="xxxhdpi" src="resources/android/icon/drawable-xxxhdpi-icon.png" />
          <splash density="land-ldpi" src="resources/android/splash/drawable-land-ldpi-screen.png" />
          <splash density="land-mdpi" src="resources/android/splash/drawable-land-mdpi-screen.png" />
          <splash density="land-hdpi" src="resources/android/splash/drawable-land-hdpi-screen.png" />
          <splash density="land-xhdpi" src="resources/android/splash/drawable-land-xhdpi-screen.png" />
          <splash density="land-xxhdpi" src="resources/android/splash/drawable-land-xxhdpi-screen.png" />
          <splash density="land-xxxhdpi" src="resources/android/splash/drawable-land-xxxhdpi-screen.png" />
          <splash density="port-ldpi" src="resources/android/splash/drawable-port-ldpi-screen.png" />
          <splash density="port-mdpi" src="resources/android/splash/drawable-port-mdpi-screen.png" />
          <splash density="port-hdpi" src="resources/android/splash/drawable-port-hdpi-screen.png" />
          <splash density="port-xhdpi" src="resources/android/splash/drawable-port-xhdpi-screen.png" />
          <splash density="port-xxhdpi" src="resources/android/splash/drawable-port-xxhdpi-screen.png" />
          <splash density="port-xxxhdpi" src="resources/android/splash/drawable-port-xxxhdpi-screen.png" />
      </platform>
      <platform name="ios">
          <allow-intent href="itms:*" />
          <allow-intent href="itms-apps:*" />
          <icon height="57" src="resources/ios/icon/icon.png" width="57" />
          <icon height="114" src="resources/ios/icon/icon@2x.png" width="114" />
          <icon height="40" src="resources/ios/icon/icon-40.png" width="40" />
          <icon height="80" src="resources/ios/icon/icon-40@2x.png" width="80" />
          <icon height="120" src="resources/ios/icon/icon-40@3x.png" width="120" />
          <icon height="50" src="resources/ios/icon/icon-50.png" width="50" />
          <icon height="100" src="resources/ios/icon/icon-50@2x.png" width="100" />
          <icon height="60" src="resources/ios/icon/icon-60.png" width="60" />
          <icon height="120" src="resources/ios/icon/icon-60@2x.png" width="120" />
          <icon height="180" src="resources/ios/icon/icon-60@3x.png" width="180" />
          <icon height="72" src="resources/ios/icon/icon-72.png" width="72" />
          <icon height="144" src="resources/ios/icon/icon-72@2x.png" width="144" />
          <icon height="76" src="resources/ios/icon/icon-76.png" width="76" />
          <icon height="152" src="resources/ios/icon/icon-76@2x.png" width="152" />
          <icon height="167" src="resources/ios/icon/icon-83.5@2x.png" width="167" />
          <icon height="29" src="resources/ios/icon/icon-small.png" width="29" />
          <icon height="58" src="resources/ios/icon/icon-small@2x.png" width="58" />
          <icon height="87" src="resources/ios/icon/icon-small@3x.png" width="87" />
          <icon height="1024" src="resources/ios/icon/icon-1024.png" width="1024" />
          <splash height="1136" src="resources/ios/splash/Default-568h@2x~iphone.png" width="640" />
          <splash height="1334" src="resources/ios/splash/Default-667h.png" width="750" />
          <splash height="2208" src="resources/ios/splash/Default-736h.png" width="1242" />
          <splash height="1242" src="resources/ios/splash/Default-Landscape-736h.png" width="2208" />
          <splash height="1536" src="resources/ios/splash/Default-Landscape@2x~ipad.png" width="2048" />
          <splash height="2048" src="resources/ios/splash/Default-Landscape@~ipadpro.png" width="2732" />
          <splash height="768" src="resources/ios/splash/Default-Landscape~ipad.png" width="1024" />
          <splash height="2048" src="resources/ios/splash/Default-Portrait@2x~ipad.png" width="1536" />
          <splash height="2732" src="resources/ios/splash/Default-Portrait@~ipadpro.png" width="2048" />
          <splash height="1024" src="resources/ios/splash/Default-Portrait~ipad.png" width="768" />
          <splash height="960" src="resources/ios/splash/Default@2x~iphone.png" width="640" />
          <splash height="480" src="resources/ios/splash/Default~iphone.png" width="320" />
          <splash height="2732" src="resources/ios/splash/Default@2x~universal~anyany.png" width="2732" />
      </platform>
      <plugin name="cordova-plugin-whitelist" spec="1.3.3" />
      <plugin name="cordova-plugin-statusbar" spec="2.4.2" />
      <plugin name="cordova-plugin-device" spec="2.0.2" />
      <plugin name="cordova-plugin-splashscreen" spec="5.0.2" />
      <plugin name="cordova-plugin-ionic-webview" spec="^3.0.0" />
      <plugin name="cordova-plugin-ionic-keyboard" spec="^2.0.5" />
  </widget>

我这里没有<allow-navigation href="http://localhost:CUSTOM_PORT_NUMBER/*"/>,因为这给我造成了窗口存储问题。.它一直被拒绝,直到我将其删除(也许可以安全地放在<platform name="ios">部分中,如果需要的话)

那么,有人对我可以解决此问题有任何想法吗?

我能正确安装Ionic 4的cordova-plugin-wkwebview-engine吗?

在此先感谢您的帮助!

[EDIT1]

更多信息。让xcode打破异常,我可以看看是否来自这里。...

enter image description here

我已将部署目标设置为10.0 例如,在config.xml中,我尝试使用似乎只能更新到ios 10.3的旧版iPhone时设置了<preference name="deployment-target" value="10.0" />

是不是ios 11.0现在是我们可以支持的最低版本?

0 个答案:

没有答案