【发布时间】:2020-02-04 09:04:50
【问题描述】:
我一直在尝试在特定时区的 IOS 上安排UILocalNotification,而不管用户当前所在的位置。我需要介绍的三个场景是
- 能够在指定的时间和时区显示一次性通知
- 在指定时间和时区显示每日通知
- 在一周中的指定日期显示每周通知(即 星期日、星期一等)在指定的时间和时区
我尝试处理第一种情况,但安排在两分钟后出现通知,时区设置为太平洋/奥克兰。作为背景,我在悉尼,奥克兰提前两个小时。因此,假设悉尼的当前日期和时间是 2020 年 2 月 4 日晚上 8 点,我将使用 NSDateFormatter 解析一个字符串,即“2020-04-02T22:02”,并将格式化程序的时区也指定为 Pacific/Auckland。然后将该日期传递给UILocalNotification 的fireDate 属性,并且还指定了timeZone 属性。我可以看到这是 UTC 的正确时间。但是,我发现通知不会在两分钟后触发。我是否遗漏了某些东西,或者对于使用旧的 UILocalNotification API 可以完成的操作是否存在错误/限制?我发现,如果我在通行证后一分钟安排通知,但在奥克兰时间,它会立即触发。
【问题讨论】:
-
你做对了,可能还有其他问题
-
谢谢,但我意识到我忘了提到我已经设置了通知的
timeZone。据说这会根据文档 (developer.apple.com/documentation/uikit/uilocalnotification/…) 改变行为。如果我将timeZone保留为 nil,那么它的行为与预期一样,但我怀疑我需要指定时区,因为我需要能够处理定期通知。我一直无法找到有关将其设置为非本地时区或默认时区满足我需要的示例