iOS 9 Ionic Cordova 应用程序在 iPhone 上崩溃;在 iPad 上工作

Posted

技术标签:

【中文标题】iOS 9 Ionic Cordova 应用程序在 iPhone 上崩溃;在 iPad 上工作【英文标题】:iOS 9 Ionic Cordova App Crashes on iPhone; works on iPad 【发布时间】:2015-12-21 01:53:11 【问题描述】:

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

将我们的应用程序从 8.4 升级到 ios 9。该应用程序在 iPad/iPad mini 上构建和运行良好。但是,它在部署到 iPhone 时会崩溃。

下面是调试输出:

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] *** 终止 应用程序由于未捕获的异常“NSInternalInconsistencyException”, 原因:'访问_cachedSystemAnimationFence需要主 线程'

到目前为止,调试控制台是相同的。

【问题讨论】:

【参考方案1】:

我不知道真正的原因,但是当应用程序有 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


【讨论】:

在我们的例子中,我们没有使用任何 3rd 方键盘。 @Joey 你提到你没有使用任何 3rd 方键盘,但仍然接受了答案。无论键盘情况如何,这都有帮助吗?【参考方案2】:

这似乎是 3rd 方键盘和 WebView 之间的冲突。我还可以在 iOS 9 上使 Chrome(Cordova 之外)崩溃。我只是去一个流行的网站并专注于一些编辑字段几次。您可以在页面加载时执行此操作,以在启用某个自定义键盘并崩溃时调出键盘。

我创建了一个简单的 Cordova 插件,不允许任何键盘扩展与应用程序一起运行。这不是一个永久的解决方案,但它会暂时停止崩溃。只需添加插件,无需更改代码。

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

【讨论】:

以上是关于iOS 9 Ionic Cordova 应用程序在 iPhone 上崩溃;在 iPad 上工作的主要内容,如果未能解决你的问题,请参考以下文章

Ionic 应用程序未在 iOS 上检测到 iBeacons (cordova-plugin-estimote)

Cordova katzer 插件后台模式在 iOS-9 上不起作用

如何使用 Ionic / Cordova 在 iOS 上启用多任务处理?

Ionic Cordova 应用程序无法在 android 9 设备上运行

cordova-ionic 应用程序在后台进行地理定位 - android 和 ios

Cordova + Ionic - 将标头混合到 iOS 标头中