iOS 9上Ionic Cordova应用在iPhone上崩溃;在iPad上可以运行

7

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

我们将应用程序从iOS 8.4升级到iOS 9。该应用在iPad/iPad mini上构建和运行正常,但在iPhone上部署后崩溃。

以下是调试输出:

2015-09-23 11:17:09.920 AnApplicaiton[6490:1359695] *** Assertion failure in -[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] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'accessing _cachedSystemAnimationFence requires the main thread'

调试控制台在这一点上是相同的。

2个回答

6

我不知道真正的原因,但当应用程序具有WebView和第三方键盘(例如Swype)时,程序会崩溃。我已经多次重现了这个问题。因此,如果您的应用程序使用像Cordova,iAd,Admob这样的WebView,您将看到这些奇怪的崩溃。我不知道如何防止这个问题。它只发生在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

}

在我们的情况下,我们没有使用任何第三方键盘。 - Joey
@Joey,你提到你没有使用任何第三方键盘,但仍然接受了答案。不管键盘的情况如何,这个答案有帮助吗? - jmknoll

5
这似乎是第三方键盘和WebView之间的冲突。我也能在iOS 9上使Chrome(Cordova以外)崩溃。只需打开一个流行网站,然后聚焦于一些编辑字段几次。你可以在页面加载时执行此操作,启用某个自定义键盘时,它会崩溃。
我创建了一个简单的Cordova插件,不允许任何键盘扩展在应用程序中运行。尽管不是永久性的解决方案,但现在将停止崩溃。只需添加插件即可,不需要进行代码更改。 https://github.com/kurtisf/cordova-plugin-restrict-keyboard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接