本地通知适用于 ios 模拟器但不适用于设备
Posted
技术标签:
【中文标题】本地通知适用于 ios 模拟器但不适用于设备【英文标题】:Local notifications working on ios simulator but not on device 【发布时间】:2018-03-07 08:29:54 【问题描述】:我一直致力于在我正在开发的这个应用上获取本地通知。我已经在标题、正文蚀刻中设置了带有一些文本的通知内容,然后设置了 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】:我不完全确定为什么会这样,但减少了触发器“修复”中匹配的日期组件的数量。还是不知道问题的根本原因,但是把数据组件部分改成
[cal components:NSCalendarUnitHour|NSCalendarUnitMinute fromDate:tenSecondsFromNow]
解决了这个问题。
【讨论】:
如果答案解决了您的问题,您应该接受答案。 我只能在 9 小时内接受我自己的答案,我计划在有能力的时候这样做。以上是关于本地通知适用于 ios 模拟器但不适用于设备的主要内容,如果未能解决你的问题,请参考以下文章
Adobe ANE 适用于 iOS 和 Android 设备,但不适用于 AIR 模拟器
IOS中的Facebook登录适用于模拟器,但不适用于安装了本机应用程序的设备
PHP 图片上传适用于本地主机,但不适用于 GoDaddy 服务器
Socket.io 适用于桌面 safari 和 chrome,但不适用于移动设备