本地通知适用于 ios 模拟器但不适用于设备
Local notifications working on ios simulator but not on device
我一直在努力让本地通知在我正在开发的这个应用程序上运行。我在标题中设置了带有一些文本的通知内容,body 蚀刻然后设置 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 秒安排通知。这适用于模拟器和我的设备。
我想知道是否发生了一些奇怪的事情?或者模拟器处理通知的方式与设备略有不同。无论哪种方式,我都不知道发生了什么。
我不太清楚为什么会这样,但减少了触发器中要匹配的日期组件的数量 "fixed it"。还是不知道问题的根本原因,只是把数据组成部分改成
[cal components:NSCalendarUnitHour|NSCalendarUnitMinute fromDate:tenSecondsFromNow]
已解决问题。
我一直在努力让本地通知在我正在开发的这个应用程序上运行。我在标题中设置了带有一些文本的通知内容,body 蚀刻然后设置 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 秒安排通知。这适用于模拟器和我的设备。
我想知道是否发生了一些奇怪的事情?或者模拟器处理通知的方式与设备略有不同。无论哪种方式,我都不知道发生了什么。
我不太清楚为什么会这样,但减少了触发器中要匹配的日期组件的数量 "fixed it"。还是不知道问题的根本原因,只是把数据组成部分改成
[cal components:NSCalendarUnitHour|NSCalendarUnitMinute fromDate:tenSecondsFromNow]
已解决问题。