我一直致力于在我正在处理的这个应用上收集本地通知。我已经使用标题中的一些文本设置了通知内容,正文蚀刻然后设置了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秒后安排通知。这适用于模拟器和我的设备。
我想知道是否有一些奇怪的时间在发生?或者模拟器处理通知的方式与设备略有不同。无论哪种方式,我都不知道发生了什么。
答案 0 :(得分:0)
我不确定为什么会这样,但是减少触发器中匹配的日期组件的数量"修复它"。我仍然不知道问题的根本原因,但是将数据组件部分更改为
[cal components:NSCalendarUnitHour|NSCalendarUnitMinute fromDate:tenSecondsFromNow]
修正了问题。