如何安排和重复本地通知

问题描述 投票:0回答:3

我正在尝试申请帮助戒烟,

我需要用户输入他的第一支香烟时间,以及每支香烟之间的时间,最后输入增加的时间以增加每支香烟之间的时间。然后我发送本地通知。

例如:假设他的第一支香烟是在7:00 AM,他每1小时吸1支香烟,并且他想再增加10分钟。

第1支香烟:7:002nd:8:10 /3日:9:20 /4th:10:3​​0 .. etc

我尝试了很多解决方案,但从选择器视图中获取的日期格式存在一些问题,我需要使它们像“ hh:MM a”]

有帮助吗?

ios swift notifications local
3个回答
0
投票

要获取其他格式的日期,可以从Date对象创建NSDate,然后使用NSDateFormatter格式化:

let date=NSDate(timeInterval: 0, since: yourDate)
let dateFormatter=DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US")
dateFormatter.setLocalizedDateFormatFromTemplate("hh:mm a")
String dateString=dateFormatter.string(from: date)

您可以从UIDatePicker中获取初始日期对象,或者当它发生更改并在其委托中调用一个方法时。


0
投票

首先使用创建日期对象

let date = Date(timeIntervalSinceNow: 3600) // it may be any date whatever you want 

要从日期组件创建触发器:

let triggerDaily = Calendar.current.dateComponents([hour,.minute,.second,], from: date)

现在在UNCalendarNotificationTrigger中传递该日期,并重复一次true

let trigger = UNCalendarNotificationTrigger(dateMatching: triggerDaily, repeats: true)

使用时间创建日期:

let formatter = DateFormatter()
formatter.dateFormat = "yyyy/MM/dd HH:mm"
let someDateTime = formatter.date(from: "2016/10/08 22:31") // put your date and time here

如果是特定于语言环境的时间:

 formatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")

0
投票

建议的解决方案还不够完善,因此您必须每小时创建一个通知,而使用此触发器

let trigger = UNTimeIntervalNotificationTrigger(timeInterval: (60*60) + (10*60), repeats: true)

60 * 60是您提到的小时,10 * 60是10分钟,将重复设置为true和viola,现在每70分钟触发一次通知。

© www.soinside.com 2019 - 2024. All rights reserved.