iOS 本地通知测试
Posted
技术标签:
【中文标题】iOS 本地通知测试【英文标题】:iOS Local Notifications Testing 【发布时间】:2014-03-11 19:10:27 【问题描述】:在测试我的本地通知时,由于某种原因,在我的 ios 设备上设置日期和时间不会触发我的本地通知出现。我的通知的触发日期设置为未来几天。如果我确实等了几天,那么我会看到我的本地通知。
为什么我在设备上设置日期和时间后看不到本地通知?
下面是一个示例:
playNotification.FireDate = DateTime.Now.AddHours(71.67f);
playNotification.AlertAction = "Alert text";
playNotification.AlertBody = "Alert body";
playNotification.SoundName = UILocalNotification.DefaultSoundName;
playNotification.ApplicationIconBadgeNumber = badgeCount;
UIApplication.SharedApplication.ScheduleLocalNotification(playNotification);
我应该提到我将“AddHours”更改为“AddSeconds”并通过等待指定的秒数进行了测试,并且通知按预期触发。但是以某种方式更改我设备上的日期和时间并没有。
【问题讨论】:
这很奇怪。我使用相同的方法来测试本地通知,如果我更改设备上的日期,它就可以工作。能否提供一些代码给我们? 好的,我已经编辑了我的问题以添加示例代码。DateTime.Now.AddHours(71.67f)
返回什么?无论如何...试试这个playNotification.FireDate = [[NSDate date] dateByAddingTimeInterval:10];
(在 10 秒内转到主屏幕以确保您收到本地通知)
我尝试了类似的方法,将“AddHours”更改为“AddSeconds”,等待指定的秒数,这会按预期触发我的通知。 AddHours(71.67) 返回从现在起 3 天减去 20 分钟的日期时间。我对此进行了测试,它确实给了我预期的价值。
请 NSLog DateTime.Now.AddHours(71.67f)
并将其添加到问题中,因为 NSDate
的某些内容可能有问题
【参考方案1】:
您需要设置通知的timeZone
。默认情况下,timeZone
是根据您的位置设置的,因此如果您手动更改日期和时间,它不会影响。为此,您需要将timeZone
设置为systemTimeZone()
。
像这样:
notification.timeZone = NSTimeZone.systemTimeZone()
我知道这很快,但我对objective-c知之甚少。 希望这可以帮助。 :)
【讨论】:
这个问题与改变时区没有任何关系。 是的。我在测试我的应用程序时遇到了同样的问题,更改手机上的时间和日期时通知不会触发。将时区从默认更改为系统后,在手机上手动设置时间时会触发通知。请在投反对票之前尝试测试代码并理解我想说的话。以上是关于iOS 本地通知测试的主要内容,如果未能解决你的问题,请参考以下文章