无法快速将特定日期和时间添加到 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的主要内容,如果未能解决你的问题,请参考以下文章

将字符串中的时间快速添加到日期对象中

PHP,Codeigniter:如何在Web应用程序中根据用户时区/位置设置日期/时间?

在moment.js日历中将事件添加到特定日期?

将名称添加到日期范围搜索。微软访问 VBA

将持续时间添加到日期mongodb中

有没有办法知道在特定日期和时间之后添加到 SQL 数据库中的记录数