带有开始和结束时间的每日本地通知
Posted
技术标签:
【中文标题】带有开始和结束时间的每日本地通知【英文标题】:Daily LocalNotification with Start & End Time 【发布时间】:2019-05-15 06:32:28 【问题描述】:我希望notification
每天重复,但要给出开始时间、结束时间和频率(固定)。
假设开始时间是上午 10 点,结束时间是下午 6 点,频率是每 3 小时一次,那么它应该分别在上午 10 点、下午 1 点、下午 4 点触发通知。
注意:- 应用程序有 3 个其他本地 notification
(具有不同的标题和正文),因此需要区分通知,因为用户可以随时停止这些通知。
尝试使用DLLocalNotification
,但它没有解决我的问题。
DLNotificationScheduler().repeatsFromToDate (identifier: String, alertTitle: String, alertBody: String, fromDate: Date, toDate: Date, interval: Double, repeats: RepeatingInterval, category: String = " ", sound: String = " ")
任何帮助将不胜感激
【问题讨论】:
【参考方案1】:要发布带有重复的本地通知,您可以使用以下代码:
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/
【讨论】:
它可能每天重复,但我需要每天重复 3-4 次,直到用户关闭通知(即,今天上午 10 点、下午 1 点、下午 4 点、下午 7 点、明天......) - 这是针对 1 个通知,同样,该应用程序有 2 个类似的通知(Notification2 可能在今天上午 9 点、中午 12 点、下午 3 点、今天下午 6 点、明天... Notification3-下午 4 点、今天晚上 10 点、明天...)为此我可以使用不同的标识符,但是如何在这些时间间隔之间每天重复它们?同样,用户无法更改频率,他可以更改每个通知的开始和结束时间或关闭。以上是关于带有开始和结束时间的每日本地通知的主要内容,如果未能解决你的问题,请参考以下文章