EXC_BREAKPOINT 使用 onesignal 时

EXC_BREAKPOINT when using onesignal

我正在尝试使用 onesignal 将推送通知从一个用户发送到另一个用户。他们的文档使用起来非常简单,所以我不确定我的问题是否出在我做错了什么。下面是我用来从 testDevice1testDevice2 发送通知的代码,其中 af59f188-583b-blah-blah-player_ID 是我的 testDevice2 playerID

- (IBAction)save:(UIBarButtonItem *)sender {
    NSDictionary *dict = @{@"contents" : @{@"en": @"New Task!"},
                           @"include_player_ids": @[@"af59f188-583b-blah-blah-player_ID"]
                           };

    [oneSignal postNotification:dict];
}

这是我得到的错误 http://i.imgur.com/h9YCR8v.jpg

EXC_BREAKPOINT (code=1, subcode=0x1830f510c)

我的google fu 在搜索该子代码时没有得到任何结果

代码触发了异常断点,这意味着某些代码失败并引发了异常 - 可能在 sendAsynchronousRequest 中,它可能是从 oneSignal 调用的。

线程在 CFRelease 处结束,因此可能发送了一个 Core Foundation 对象以供释放。

鉴于您进入崩溃,这可能与该 Dict 的嵌套结构不符合 Onesignal 规范以及 Onesignal 未正确处理该情况有关。因此,请仔细检查他们的文档以了解该通知字典规范。

此外,您可能希望用变量替换所有这些裸文字,以帮助使其更清晰 - 文字很棒,但如果您将它们的使用限制为没有嵌套的 kv 对,它会容易得多。

HTH

这是我解决这个问题的方法

根据@jkasten 的评论

Make sure you only create one OneSignal instance in your code. Creating multiple can create unexpected errors.

嗯,好的。我把我的 google 搞砸了,遇到了这个

- (AppDelegate *)appDelegate {
    return (AppDelegate *)[[UIApplication sharedApplication] delegate];
}

因为我在启动注册时在我的 appdelegate 中有一个信号,所以我决定始终使用这个 oneSignal 实例

我用 [[self appDelegate] oneSignal]

调用 oneSignal