安排每小时重复本地通知的问题
Posted
技术标签:
【中文标题】安排每小时重复本地通知的问题【英文标题】:Problem in scheduling repeating local notification every hour 【发布时间】:2019-09-15 18:59:39 【问题描述】:我正在尝试每小时安排一次本地通知。问题是我在如此不规则的时间内收到通知。有时在 10 分钟内,或以秒为单位,或在 30 分钟内。有时我会突然在同一秒内收到 10 条通知。我不知道我在这里犯了什么错误。我提前道歉,我刚开始学习swift。
这是我的代码。
@objc func LocalNotificationHour()
let user = UNUserNotificationCenter.current()
user.requestAuthorization(options: [.alert,.sound]) (granted, error) in
let content = UNMutableNotificationContent()
content.title = "Local Notification"
content.body = "Test."
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: (60*60), repeats: true)
let uuid = UUID().uuidString
let request = UNNotificationRequest(identifier: uuid, content: content, trigger: trigger)
user.add(request) (error) in print("Error")
【问题讨论】:
您好 Mustafa,欢迎来到 ***!没必要道歉。这是一个很好的问题,您附上了与此问题相关的代码的重要部分,并很好地解释了问题所在。完美的!我现在将查看您的代码并报告。乍一看,它似乎很正确。 你是在模拟器还是真机上试了代码?我现在正在模拟器中运行您的代码,timeInterval 设置为 60(每分钟一次),并且在 60 秒后通知进来。我很确定在真实设备上可能存在违规行为,例如当设备处于低功耗模式时。 @unixb0y 这就是奇怪的地方。我在我的实体手机上测试了代码,它确实工作了 2 天,之后我开始面临这个问题。在 60 秒内,我对此没有任何问题。当我将其设置为 60 秒时,它确实可以正常工作。但我试图只设置一个小时。或 2 小时,我有困难。 那么如果你再试一次,你可以重现它每小时工作2天然后停止可靠工作的问题? @unixb0y 是的。它只工作了 2 天,然后停止工作。你看到我的代码有什么问题吗?特别是 let trigger = UNTimeIntervalNotificationTrigger(timeInterval: (60*60), repeats: true) 【参考方案1】:您的函数是否可能多次运行,因此安排了多个通知重复?这将导致一次/有时在您不期望它们时收到多个通知。
如果是这种情况,请尝试在let user = UNUserNotificationCenter.current()
下添加行user.removeAllPendingNotificationRequests()
。这将删除您的应用在安排新通知之前可能已安排的所有待处理通知。
【讨论】:
【参考方案2】:这是因为您以一小时的逻辑运行一次代码。
然后您将逻辑更改为两个小时的逻辑。
所以基本上两个通知都在触发。
要么删除应用或之前安排的通知,要么更改标识符。
【讨论】:
以上是关于安排每小时重复本地通知的问题的主要内容,如果未能解决你的问题,请参考以下文章