【问题标题】:Local notification app crashes simulator本地通知应用程序崩溃模拟器
【发布时间】:2014-10-19 11:32:09
【问题描述】:

我将本地通知插件 (https://github.com/katzer/cordova-plugin-local-notifications/) 与 ng-cordova 一起用于离子项目:

这是我的控制器:

.controller('DashCtrl', function($scope, $state, $cordovaLocalNotification) {
    $scope.addNotification = function() {
        $cordovaLocalNotification.add({
            id: 'some_notification_id'
                // parameter documentation:
                // https://github.com/katzer/cordova-plugin-local-notifications#further-informations-1
        }).then(function() {
            console.log('callback for adding background notification');
        });
    };
    $scope.checkIfIsTriggered = function() {
        $cordovaLocalNotification.isTriggered('some_notification_id').then(
            function(isTriggered) {
                alert('isTriggered');
            });
    };
})

我在默认视图上有一个按钮,当应用程序以 ng-click 启动时加载,如下所示:

  <button ng-click="addNotification();" class="button button-stable">button-stable</button>

但是当我在模拟器中运行应用程序并点击按钮时,应用程序崩溃并显示以下错误消息:

: *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-     [__NSCFString stringValue]: unrecognized selector sent to instance 0x7a840850'
*** First throw call stack:
(
0 CoreFoundation 0x002cc1e4 __exceptionPreprocess + 180
1 libobjc.A.dylib 0x023848e5 objc_exception_throw + 44
2 CoreFoundation 0x00369243 -[NSObject(NSObject) doesNotRecognizeSelector:] + 275
3 CoreFoundation 0x002bc50b forwarding + 1019
4 CoreFoundation 0x002bc0ee CFforwarding_prep_0 + 14
5 new 0x0011f917 -[APPLocalNotification notificationWithId:] + 503
6 new 0x0011f6a6 -[APPLocalNotification isNotificationScheduledWithId:] + 86
7 new 0x0011bccf __28-[APPLocalNotification add:]blockinvoke + 207
8 libdispatch.dylib 0x0293d7b8 dispatchcall_block_and_release + 15
9 libdispatch.dylib 0x029524d0 dispatchclient_callout + 14
10 libdispatch.dylib 0x02940eb7 dispatchroot_queue_drain + 291
 11 libdispatch.dylib 0x02941127 dispatchworker_thread2 + 39
12 libsystem_pthread.dylib 0x02c89dab pthreadwqthread + 336
13 libsystem_pthread.dylib 0x02c8dcce start_wqthread + 30
)
 Oct 19 11:54:21 xxxx-MacBook-Air.local backboardd[27466] : Application    'UIKitApplication:com.ionicframework.new903016[0xde04]' exited abnormally with signal 6: Abort trap: 6"

有没有人按照 ng-cordova 文档让它工作,或者我应该尝试另一种方法。

谢谢!

【问题讨论】:

  • 您使用的是什么版本的 Cordova?如果您有旧的 3.5.0 - 安装新的
  • 嗨,我使用的是 4.0。我现在在 ios8(在 ios7 之前)中尝试它,并且应用程序不再崩溃(即使它不工作)。我会继续挖掘。谢谢!
  • 我在 cordova 4.1.2 上遇到了类似的问题,@werbelow 的回答帮助了我。

标签: ios cordova plugins ionic-framework


【解决方案1】:

如果你仍然有这个问题,我今天也遇到了这个问题。

进入插件代码,Xcode 中的 APPLocalNotifications.m 并将这一行更改为底部:

NSString* notId = [[notification.userInfo objectForKey:@"id"] stringValue];

并将其替换为:

NSString* notId = [notification.userInfo objectForKey:@"id"];

今天这对我有用。

【讨论】:

  • 为我工作,谢谢!也许在插件站点上记录一个问题,或者提出修复请求?
  • @werbelow 你在哪里改的?我已经更新了文件 /plugins/de.appplant.cordova.plugin.local-notification/APPLocalNotification.m 但是当我通过 xcode 在手机上运行应用程序时,会出现相同的错误,并且代码行在调试器中显示不变。
  • @Will 我会在 xcode 中的 Plugins -> APPLocalNotification.m 下的第 514 行更改此设置。不确定它是否是相同的行号,但它位于通过 ID 检索本地通知的注释下方.希望对您有所帮助。
  • @werbelow - 确实如此,谢谢。经过大量的追尾,一些其他错误和 ngcordova 插件问题,我终于收到了响应表单通知。耶。
  • @Will 太棒了,很高兴听到它!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-20
  • 2015-11-14
  • 1970-01-01
  • 2011-10-01
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多