如何安排和重复本地通知

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

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

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

所以第一支香烟:7:00 2nd:8:10 / 3rd:9:20 / 4th:10:3​​0 ..等等

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

有帮助吗?

linus2wan 回答:如何安排和重复本地通知

要获取其他格式的日期,可以从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中获取初始日期对象,或者在其发生更改并在其委托中调用方法时获取它。

,
  

首先使用创建一个日期对象

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")
,

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

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

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

本文链接:https://www.f2er.com/3130565.html

大家都在问