我希望notification
每天重复一次,但要提供开始时间,结束时间和频率(固定)。
说,开始时间是10am,结束时间是6pm,频率是每3小时,那么它应该分别在10 am、1pm和4pm触发通知。
注意:-该应用程序还有3个其他本地notification
(标题和正文不同),因此需要区分通知,因为用户可以随时停止任何这些通知。>
尝试过DLLocalNotification
,但不能解决我的问题。
DLNotificationScheduler().repeatsFromToDate (identifier: String, alertTitle: String, alertBody: String, fromDate: Date, toDate: Date, interval: Double, repeats: RepeatingInterval, category: String = " ", sound: String = " ")
任何帮助将不胜感激
答案 0 :(得分:0)
要重复发送本地通知,可以使用以下代码:
let content = UNMutableNotificationContent()
content.title = "Pizza Time!!"
content.body = "Monday is Pizza Day"
content.categoryIdentifier = "pizza.reminder.category"
//Date component trigger
var dateComponents = DateComponents()
//example for Gregorian calendar. Every Monday at 11:30AM
dateComponents.hour = 11
dateComponents.minute = 30
dateComponents.weekday = 2
// for testing, notification at the top of the minute.
dateComponents.second = 0
let trigger = UNCalendarNotificationTrigger(
dateMatching: dateComponents,
repeats: true)
let request = UNNotificationRequest(identifier: "pizza.reminder", content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request) { (error) in
if let error = error {
print("error in pizza reminder: \(error.localizedDescription)")
}
}
您可以通过为每种通知定义不同的标识符来添加多种通知。
要停止本地通知,
UNUserNotificationCenter.current().removePendingNotificationRequests(withIdentifiers: ["pizza.reminder"])
要获取尚待发布的本地通知的通知,可以使用以下代码
UNUserNotificationCenter.current().getPendingNotificationRequests {
(requests) in
displayString += "count:\(requests.count)\t"
for request in requests{
displayString += request.identifier + "\t"
}
print(displayString)
}
这些东西足以添加一些逻辑并满足您的要求。 有关更多信息,请遵循:
https://makeapppie.com/2017/01/31/how-to-repeat-local-notifications/