无法通过 UNUserNotificationCenter 获得重复的每日通知以显示

Posted

技术标签:

【中文标题】无法通过 UNUserNotificationCenter 获得重复的每日通知以显示【英文标题】:Unable to get repeating daily notification to show with UNUserNotificationCenter 【发布时间】:2020-07-19 20:49:02 【问题描述】:

我的目标是设置一个重复的每日提醒通知。尽管在代码中设置了repeat: true,但以下代码始终成功显示通知一次,但不会重复。

整个通知代码如下:

    let notificationID = "daily_sleep_alarm"
    let title = "Rest your weary eyes"
    let body = "It's bedtime. The comfort of your blanket beckons you."

    UNUserNotificationCenter.current().removePendingNotificationRequests(withIdentifiers: [notificationID])
    
    let center = UNUserNotificationCenter.current()
    let content = UNMutableNotificationContent()
    content.title = title
    content.body = body
    content.categoryIdentifier = "daily_sleep_alarm"
    content.userInfo = ["customData": "fizzbuzz"]
    content.sound = nil

    var dateComponents = DateComponents()
    dateComponents.hour = hourSelected
    dateComponents.minute = minuteSelected
    let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: true)
    let request = UNNotificationRequest(identifier: notificationID, content: content, trigger: trigger)
    center.add(request)

如上所述,此代码在一次之后没有成功显示通知。我没有其他代码可以清除带有此特定 notificationID 的待处理通知。

在应用启动时,我还会查看center.getPendingNotificationRequests 提供的待处理通知,它始终显示为无。

非常感谢任何关于我需要做什么来正确设置每日重复通知的见解。

【问题讨论】:

在此之前您是否检查过用户的通知访问权限? @KaylaGalway 感谢您的意见。我确实在检查权限。这也是我的测试设备上的问题,它们都具有允许的权限。 【参考方案1】:

我只是在日常使用这些简单的代码行

    func setNotifications(with interval: TimeInterval) 
    let content = UNMutableNotificationContent()
    content.title = "Tittle"
    content.subtitle = "Subtle"
    content.body = "Don't forget yourself!"
    content.badge = 1
    
    let trigger = UNTimeIntervalNotificationTrigger(timeInterval: interval,
                                                    repeats: true)
    
    let requestIdentifier = "demoNotification"
    let request = UNNotificationRequest(identifier: requestIdentifier,
                                        content: content, trigger: trigger)
    
    UNUserNotificationCenter.current().add(request,
                                           withCompletionHandler:  (error) in
                                            // Handle error
    )

【讨论】:

谢谢格里高利。您在代码中设置的时间间隔是多少,这是如何填充的? 只是秒双值

以上是关于无法通过 UNUserNotificationCenter 获得重复的每日通知以显示的主要内容,如果未能解决你的问题,请参考以下文章

为啥我在 Swift 中没有收到来自 Firebase 的推送通知?

mac无法通过触摸版无法通过鼠标拖曳文件?

mac无法通过触摸版无法通过鼠标拖曳文件?

oracle 关于无法通过128 表无法扩展

无法通过 PancakeSwap 路由器移除流动性。通过“写”合约成功添加,但无法删除LiquidityETH

为啥 charles 无法通过 c++ 捕获 http 请求?