在ios模拟器上工作但不在设备上的本地通知

时间:2018-03-07 08:29:54

标签: ios objective-c unusernotificationcenter

我一直致力于在我正在处理的这个应用上收集本地通知。我已经使用标题中的一些文本设置了通知内容,正文蚀刻然后设置了UNCalendarNotificationTrigger

NSDate *tenSecondsFromNow = [cal dateByAddingUnit:NSCalendarUnitSecond value:10 toDate:[NSDate date] options:NSCalendarMatchFirst]
UNCalendarNotificationTrigger* trigger = [UNCalendarNotificationTrigger
                                          triggerWithDateMatchingComponents:[cal components:NSCalendarUnitYear |
                                                                             NSCalendarUnitMonth|
                                                                             NSCalendarUnitDay|
                                                                             NSCalendarUnitWeekday |
                                                                             NSCalendarUnitHour|
                                                                             NSCalendarUnitMinute|
                                                                                   NSCalendarUnitSecond fromDate:tenSecondsFromNow] repeats:NO];

我计划在运行此

后10秒运行通知
    // Schedule the notification.
[_notificationCentre addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) {
    if (error != nil) {
        DDLogError(@"%@", error.localizedDescription);
        DDLogError(@"%@", @"couldn't create chore reminder notification");
    }
}];

我挣扎的是,当我在模拟器上运行此代码时,通知完全符合我的预期,在我在前台运行这段代码10秒后向我显示通知背景。但是,当我在我的设备上运行此功能时,通知不会显示。但是当我将触发器更改为UNTimeIntervalNotificationTrigger设置时

UNTimeIntervalNotificationTrigger *trigger = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:10 repeats:NO];

基本上做同样的事情,在调用addNotificationRequest函数10秒后安排通知。这适用于模拟器和我的设备。

我想知道是否有一些奇怪的时间在发生?或者模拟器处理通知的方式与设备略有不同。无论哪种方式,我都不知道发生了什么。

1 个答案:

答案 0 :(得分:0)

我不确定为什么会这样,但是减少触发器中匹配的日期组件的数量"修复它"。我仍然不知道问题的根本原因,但是将数据组件部分更改为

[cal components:NSCalendarUnitHour|NSCalendarUnitMinute fromDate:tenSecondsFromNow]

修正了问题。