您可以在退出区域时对 ibeacon 通知应用时间限制吗?

Posted

技术标签:

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

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

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

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

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

【问题讨论】:

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

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

这是一个典型的方法:

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

    UserDefaults.standard.set(Date().timeIntervalSince1970, 
                              forKey: "lastNotificationSentTime")
    

    在您发送通知之前,请查看您上次发送通知的时间。如果它太新,请禁止发送新通知。

    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
    
    

【讨论】:

为什么要感谢您的建议,我会尝试这种方法。我本以为这可能是很多人遇到的问题。我会让你知道我是怎么过的:)

以上是关于您可以在退出区域时对 ibeacon 通知应用时间限制吗?的主要内容,如果未能解决你的问题,请参考以下文章

退出信标时获取通知

ibeacons 通知警报未显示

应用关闭时的 iBeacon 通知

iBeacon 每 1 分钟不断进出区域

基于 UUID 监控 iBeacon 区域时,何时收到通知?

ibeacons 和地理围栏结合 swift