Ios 如何安排和重复本地通知

Ios 如何安排和重复本地通知,ios,swift,notifications,local,Ios,Swift,Notifications,Local,我正在申请帮助戒烟 我需要用户输入他的第一支烟的时间,以及每支烟之间的时间,最后添加时间以增加每支烟之间的时间。在这个时候,我发送了一个本地通知 比如说他在早上7点抽第一支烟,他每1小时抽一支烟,他想多抽10分钟 所以第一支烟:7点 2:8:10/ 3:9:20/ 4:10:30。。等 我尝试了很多解决方案,但是我从选择器视图中得到的日期格式有一些问题,我需要它们像“hh:MM a” 有什么帮助吗?要获取不同格式的日期,可以从日期对象创建NSDate,然后使用NSDateFormatter格式化

我正在申请帮助戒烟

我需要用户输入他的第一支烟的时间,以及每支烟之间的时间,最后添加时间以增加每支烟之间的时间。在这个时候,我发送了一个本地通知

比如说他在早上7点抽第一支烟,他每1小时抽一支烟,他想多抽10分钟

所以第一支烟:7点 2:8:10/ 3:9:20/ 4:10:30。。等

我尝试了很多解决方案,但是我从选择器视图中得到的日期格式有一些问题,我需要它们像“hh:MM a”


有什么帮助吗?

要获取不同格式的日期,可以从日期对象创建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获取初始日期对象,也可以在该对象发生更改并在其委托中调用方法时获取初始日期对象

首先创建一个日期对象

要从日期组件创建触发器,请执行以下操作:

现在在UNCalendarNotificationTrigger中传递该日期,并重复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
如果是特定于语言环境的时间:


好吧,建议的解决方案不够优雅,因此您必须为每小时创建一个通知,而不是使用此触发器

let trigger = UNTimeIntervalNotificationTrigger(timeInterval: (60*60) + (10*60), repeats: true)
60*60是您提到的小时,10*60是10分钟,将“重复”设置为true和viola,您的通知现在每70分钟触发一次。

可能重复的
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")
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: (60*60) + (10*60), repeats: true)