【问题标题】: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,欢迎来到 StackOverflow!没必要道歉。这是一个很好的问题,您附上了与此问题相关的代码的重要部分,并很好地解释了问题所在。完美的!我现在将查看您的代码并报告。乍一看,它似乎很正确。
  • 你是在模拟器还是真机上试了代码?我现在正在模拟器中运行您的代码,timeInterval 设置为 60(每分钟一次),并且在 60 秒后通知进来。我很确定在真实设备上可能存在违规行为,例如当设备处于低功耗模式时。
  • @unixb0y 这就是奇怪的地方。我在我的实体手机上测试了代码,它确实工作了 2 天,之后我开始面临这个问题。在 60 秒内,我对此没有任何问题。当我将其设置为 60 秒时,它确实可以正常工作。但我试图只设置一个小时。或 2 小时,我有困难。
  • 那么如果你再试一次,你可以重现它每小时工作2天然后停止可靠工作的问题?
  • @unixb0y 是的。它只工作了 2 天,然后停止工作。你看到我的代码有什么问题吗?特别是 let trigger = UNTimeIntervalNotificationTrigger(timeInterval: (60*60), repeats: true)

标签: ios swift localnotification


【解决方案1】:

您的函数是否可能多次运行,因此安排了多个通知重复?这将导致一次/有时在您不期望它们时收到多个通知。

如果是这种情况,请尝试在let user = UNUserNotificationCenter.current() 下添加行user.removeAllPendingNotificationRequests()。这将删除您的应用在安排新通知之前可能已安排的所有待处理通知。

【讨论】:

    【解决方案2】:

    这是因为您以一小时的逻辑运行一次代码。

    然后您将逻辑更改为两个小时的逻辑。

    所以基本上两个通知都在触发。

    要么删除应用或之前安排的通知,要么更改标识符。

    【讨论】:

      猜你喜欢
      • 2019-04-16
      • 1970-01-01
      • 1970-01-01
      • 2020-03-06
      • 1970-01-01
      • 1970-01-01
      • 2021-08-12
      • 2017-12-05
      • 1970-01-01
      相关资源
      最近更新 更多