ios - 根据 UUID 监控 iBeacon 区域时,何时会收到通知?

标签 ios ibeacon

我想要构建当它进入具有给定 UUID 的任何 iBeacon 范围时收到通知(即使在后台)。

我知道我可以监控每个信标的单个区域,但如果我理解正确的话,在 iOS 上,我只能监控 20 个区域。

因此,另一种选择是仅根据 UUID 来监视区域,但是我什么时候可以获得该区域的进入/退出通知?每当我进入或超出具有相同 UUID 的任何信标的范围时,或者仅当我进入第一个信标的范围并超出最后一个信标的范围时?

最佳答案

如果您基于仅包含 ProximityUUID 的通配符区域进行监控(保留主要和次要 nil),则:

  1. 第一次检测到第一个信标时,您只会收到一个 didEnter 回调。如果检测到第二个、第三个或其他信标与此通配符区域匹配,则您不会收到任何监控回调。

  2. 在匹配通配符区域的所有信标消失之前,您不会收到任何进一步的回调(这在前台至少需要 30 秒,在后台则需要更长的时间。)那时,您将收到对 didExit 的调用。收到 didExit 后,您将再次有资格获得上述 (1) 中的回调。

如果您想要有关各个信标的更精细的回调,有几种选择:

  1. 使用其他区域定义(最多允许 20 个)并监控所有区域。

  2. 当您收到 didEnter 时,动态更改您正在监视的区域。如果与特定通配符区域匹配的信标数量有限(例如少于 20 个),这可能会起作用。然后,您可以激活对每个子区域的监控。

  3. 使用测距 API。它们每秒为您提供一次回调,并提供与某个区域匹配的所有匹配信标的列表。诀窍在于,这通常限制在后台区域转换后的​​ 10 秒内。但可以根据要求将其延长至 180 秒,或者如果您在 Info.plist 中声明您的应用程序是后台位置应用程序,则可以无限期地延长它。 (如果您走这条路,有一些技巧可以使其正常工作。)

关于ios - 根据 UUID 监控 iBeacon 区域时,何时会收到通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57595258/

相关文章:

ios - CLBeacon : How can I get the distance from the IBeacons?

iOS/Beacons - 打开蓝牙时如何触发 didEnterRegion?

ios - Xcode 管理器控制台 : What is House Arrest

ios - 显示您关注的用户的帖子 - swift

ios - 如何在 xcode 项目中发布树结构?

dart - Flutter 中的 Beacon 通信插件

ios - 超过 20 个信标的 iBeacon 区域监控和接近度?

ios - 按日期获取最后 25 个 CoreData 条目

ios - 函数作为参数的未解析标识符

ios - 如何将数据发送到 iBeacon ?