首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在特定时区调度UILocalNotification

在特定时区调度UILocalNotification
EN

Stack Overflow用户
提问于 2020-02-04 09:04:50
回答 1查看 29关注 0票数 0

我一直试图在一个特定的时区在IOS上安排一个UILocalNotification,而不管用户当前的位置在哪里。我需要介绍的三种情况是

  1. 能够在指定时间显示一次性通知,而时区
  2. 在指定时间显示每日通知,而时区
  3. 在指定时间和时区

上显示一周一次的通知(即星期日、星期一等)。

我尝试解决第一种情况,但将通知安排在两分钟后出现,时区设置为Pacific/Auckland。作为背景,我在悉尼,奥克兰在两个小时前。因此,假设悉尼的当前日期和时间是2020年2月4日下午8:00,我将使用NSDateFormatter解析一个字符串,即" 2020 -04-02T22:02“,并将格式化程序的时区也指定为Pacific/Auckland。然后,将该日期传递给UILocalNotificationfireDate属性,并指定timeZone属性。我可以看到,在UTC中,这是正确的时间。然而,我发现通知不会在两分钟后启动。我是遗漏了什么,还是在使用旧的UILocalNotification API可以做什么方面存在缺陷/限制?我发现,如果我安排了一个通知,即在传递前一分钟,但在奥克兰时间,它会立即开火。

EN

Stack Overflow用户

发布于 2020-02-04 09:35:23

尝试这一次,以便在一天中的特定时间安排本地通知

代码语言:javascript
运行
复制
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        // Override point for customization after application launch.
        let settings = UIUserNotificationSettings(forTypes: .Badge, categories: nil)
        UIApplication.sharedApplication().registerUserNotificationSettings(settings)

        let localNotification1 = UILocalNotification()
        localNotification1.alertBody = "Your message"
        localNotification1.timeZone = NSTimeZone.defaultTimeZone()
        localNotification1.fireDate = self.getEightAMDate()
        UIApplication.sharedApplication().scheduleLocalNotification(localNotification1)

        let localNotification2 = UILocalNotification()
        localNotification2.alertBody = "Your message"
        localNotification2.timeZone = NSTimeZone.defaultTimeZone()
        localNotification2.fireDate = self.getSevenPMDate()
        UIApplication.sharedApplication().scheduleLocalNotification(localNotification2)
        return true
    }

    func getEightAMDate() -> NSDate? {
        let calendar: NSCalendar! = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)
        let now: NSDate! = NSDate()

        let date10h = calendar.dateBySettingHour(8, minute: 0, second: 0, ofDate: now, options: NSCalendarOptions.MatchFirst)!
        return date10h
    }

    func getSevenPMDate() -> NSDate? {
        let calendar: NSCalendar! = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)
        let now: NSDate! = NSDate()

        let date19h = calendar.dateBySettingHour(19, minute: 0, second: 0, ofDate: now, options: NSCalendarOptions.MatchFirst)!
        return date19h
    }
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60053867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档