iOS 9 Ionic Cordova App在iPhone上崩溃; 在iPad上工作

Cordova v5.3.1 / Ionic v1.1.0(library v1.6.4)

将我们的应用程序从8.4升级到iOS 9。 应用程序在iPad / iPad mini上build立并运行良好。 但是,在部署到iPhone时会崩溃。

以下是debugging输出:

2015-09-23 11:17:09.920 AnApplicaiton [6490:1359695] ***声明失败 – [UIApplication _cachedSystemAnimationFenceCreatingIfNecessary:],/BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3505.16/ UIApplication.m:1697

2015-09-23 11:17:09.926 AnApplication [6490:1359695] ***由于未捕获exception'NSInternalInconsistencyException',原因:'正在访问_cachedSystemAnimationFence需要主线程'

debugging控制台到目前为止是相同的。

我不知道真正的原因,但当应用程序有WebView和第三方键盘,如Swype,程序崩溃。 我多次复制了这个问题。 因此,如果您的应用程序使用WebView,如Cordova,iAd,Admob,您将看到这些奇怪的崩溃。 我不知道如何防止这个问题。 它只发生在iOS上,只发生在iPhone上。 我的崩溃报告显示iPhone 5s,iPhone 6,iPhone 6 Plus。

编辑:我认为由@ Kurt.F给出的代码现在可以解决这个问题。 将以下代码添加到您的AppDelegate.swift文件。 所有学分都转到@ Kurt.F

 func application(application: UIApplication, shouldAllowExtensionPointIdentifier extensionPointIdentifier: String) -> Bool { if extensionPointIdentifier == UIApplicationKeyboardExtensionPointIdentifier { return false } return true } 

这似乎是第三方键盘和WebView之间的冲突。 我也能够在iOS 9上崩溃Chrome(Cordova以外)。我只是去了一个受欢迎的网站,几次专注于一些编辑领域。 你可以在页面加载的时候做一些事情,当启用某个自定义的键盘时,它会popup键盘并且崩溃。

我创build了一个简单的Cordova插件,不允许任何键盘扩展与应用程序一起运行。 不是一个永久性的解决scheme,但现在会停止崩溃。 只需添加插件,不需要更改代码。

https://github.com/kurtisf/cordova-plugin-restrict-keyboard