无法快速将特定日期和时间添加到 UserNotifications
Posted
技术标签:
【中文标题】无法快速将特定日期和时间添加到 UserNotifications【英文标题】:unable to add specific date and time to UserNotifications in swift 【发布时间】:2020-12-13 19:54:08 【问题描述】:我正在从 Datepicker 获取日期和时间到文本字段.. 我需要设置通知的日期和时间.. 我在应用程序委托中添加了 requestAuthorization
通知代码:我尝试将 datepicker 日期提供给 dateComponents 然后 yourFireDate
时间不正确,我的意思是
如果我给出日期和时间 8/25/20, 1:03 PM
那么 yourFireDate 总是会像 2020-08-24 18:30:00 +0000
一样出现,其余的也不会出现
func displayReminderLocalNotification(body: String)
components = dtPicker.calendar.dateComponents([.day, .month, .year], from: dtPicker.date)
day = components?.day
month = components?.month
year = components?.year
hrs = components?.hour
mins = components?.minute
guard let yourFireDate = Calendar.current.date(from: components!) else return
print("ihwdeiwqjheiq \(yourFireDate)")
let content = UNMutableNotificationContent()
content.title = NSString.localizedUserNotificationString(forKey:
"Your notification title", arguments: nil)
content.body = body
content.categoryIdentifier = "Your notification category"
content.sound = UNNotificationSound.default
content.badge = 1
let dateComponents = Calendar.current.dateComponents(Set(arrayLiteral: Calendar.Component.year, Calendar.Component.month, Calendar.Component.day, Calendar.Component.hour, Calendar.Component.minute), from: yourFireDate)
let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: false)
let request = UNNotificationRequest(identifier: "notification identifier", content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)
像这样我正在使用日期选择器:
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = DateFormatter.Style.short
dateFormatter.timeStyle = DateFormatter.Style.short
let strDate = dateFormatter.string(from: dtPicker.date)
dateLabel.text = strDate
如何设置从日期选择器到文本字段的特定日期和时间的通知。请帮我写代码
【问题讨论】:
【参考方案1】:您的代码似乎没问题。
您如何测试通知(提醒)?如果您只是手动将设备日期更改为所需日期,但距离准确时间超过 15 分钟 -> 您将看不到通知!尝试跳到预期通知时间之前的一分钟,然后移动到下一分钟(或等待:))。如果您不将小时/分钟设置为 00:00,这可能会很棘手。
另外,如果你想确定,你可以明确设置DateComponents
:
var dateComponents = DateComponents()
dateComponents.year = ...
dateComponents.month = ...
dateComponents.day = ...
dateComponents.hour = ...
dateComponents.minute = ...
【讨论】:
谢谢,我已经添加了小时和分钟.. 但是这里yourFireDate
来错了.. 为什么
这里 datepicker 日期未正确添加到日历中
我在 API 服务中像这样调用displayReminderLocalNotification(body: "remainder for an event on \(Fromdate!) \(FromTime!)
body
是一个字符串,您只需将其设置为内容,所以这并不重要。您的 UIDatePicker 时区或语言环境是否有可能不是您所期望的?以上是关于无法快速将特定日期和时间添加到 UserNotifications的主要内容,如果未能解决你的问题,请参考以下文章