【发布时间】:2015-08-14 18:06:04
【问题描述】:
我正在构建一个 iOS 应用程序,我希望在其中处理 20 多个 iBeacon。基本上所有添加到门户网站的信标都必须由应用程序处理。由于 iOS 将要监视的区域数限制为 20,因此我无法为同一区域中的信标(具有相同的 UUID)提供不同的本地通知。
有什么办法可以解决这个问题吗?
【问题讨论】:
标签: ios core-bluetooth ibeacon estimote android-ibeacon
我正在构建一个 iOS 应用程序,我希望在其中处理 20 多个 iBeacon。基本上所有添加到门户网站的信标都必须由应用程序处理。由于 iOS 将要监视的区域数限制为 20,因此我无法为同一区域中的信标(具有相同的 UUID)提供不同的本地通知。
有什么办法可以解决这个问题吗?
【问题讨论】:
标签: ios core-bluetooth ibeacon estimote android-ibeacon
几点:
20 个区域的限制适用于单个应用程序可以注册的 CLRegion 对象的数量。 这并不意味着您只能检测到 20 个信标。由于每个 CLRegion 对象可以留下主要和/或次要 nil(使字段成为通配符),每个都可以匹配数十亿个信标。
信标应用通常使用本地通知,而不是推送通知。
您设置来自许多不同信标的许多不同通知的方式如下:
定义一个与所有信标匹配的通配符区域。 (如果需要后台触发,也可以选择几个区域)。
开始对每个区域进行和测距。
在didRangeBeacond:inRegion 回调中为每个单独的信标保留一个标志,以查看您之前是否发送过通知。如果不是,则将该标志设置为 true 并触发特定于该信标标识符的本地通知。
【讨论】:
CLBeaconRegion 是否为 nil 吗?
startMonitoringItem 保持循环时,它会阻止 UI 此外,我已在主线程上添加了它,不幸的是在 didRangeBeacons 中没有收到任何内容:(