【问题标题】:Can you apply time restrictions for ibeacon notifications when exiting a region?您可以在退出区域时对 ibeacon 通知应用时间限制吗?
【发布时间】:2020-03-09 14:50:56
【问题描述】:

我已将 iBeacon 实施到应用程序中,以便它可以将应用程序从暂停或终止状态短暂唤醒。发送推送通知,提示用户如果愿意打开应用程序。

问题是,当用户退出然后再次进入区域时,会发送另一个通知。例如,在购物中心,用户可以走过许多信标(进入和退出区域)。他们可能不想要的是烦人的大量通知。

有没有一种方法可以控制或限制用户收到的通知数量?例如时间限制?一旦收到通知,那么用户在 15 分钟或 30 分钟内不会收到另一个通知?

必须有一个解决方案,因为我确信 Apple 不希望用户收到很多用户不想要的通知。

【问题讨论】:

  • 这篇文章中没有足够的信息让你得到一个好的答案。我们需要查看您尝试过的方法、有效的方法、无效的方法以及您遇到的任何错误。请参阅Link,了解如何提出一个好问题,以便获得更好的答案。

标签: notifications ibeacon clbeaconregion


【解决方案1】:

iOS SDK 没有内置工具来防止在特定时间段内发送多个通知。但你是对的,这是一个非常普遍的问题。解决方案就是添加一点编程逻辑。

这是一个典型的方法:

  1. 每次发送通知时,记录下发送时间的时间戳。将其存储在手机的永久存储中,因此即使用户重新启动应用程序或重新启动手机,您也会记录最后一次发送通知的时间。

    UserDefaults.standard.set(Date().timeIntervalSince1970, 
                              forKey: "lastNotificationSentTime")
    
  2. 在您发送通知之前,请查看您上次发送通知的时间。如果它太新,请禁止发送新通知。

    let lastNotificationTime = UserDefaults.standard.value(forKey: "last") as? Double ?? 0.0
    if Date().timeIntervalSince1970 - lastNotificationTime < 60.0 {
      print("Not sending notification because I just sent one in the last 60 seconds.")
    }
    else {
      // TODO: Send notification here
    }
    

【讨论】:

  • 为什么要感谢您的建议,我会尝试这种方法。我本以为这可能是很多人遇到的问题。我会让你知道我是怎么过的:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-07
  • 2017-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多