我有多个iBeacons,具有相同的UUID,但大小不同。它可以是大调和小调的不同组合,但UUID保持不变。比如说,
此外,这些iBeacons位于近距离,范围从1-50英尺.因此,它们的区域可以相互交叉。
在我的iOS应用程序中,我希望检测区域内具有相同UUID的所有iBeacons,然后遍历它们并读取每个iBeacons的大写和小调,以检测其中哪个已经被检测到。
我可以在我的UUID中使用init(proximityUUID: UUID, identifier: String),然后迭代它们吗?
发布于 2019-02-19 19:06:36
有两个不同的iOS CoreLocation API,您需要为此使用第一个API:
1. 测距信标(你想要什么)
您可以使用区域定义来调用locationManager.startRangingBeacons(in: region),该区域定义的大小为零。您向init(proximityUUID: UUID, identifier: String)展示的构造函数正是这样做的。
这将使您以每秒一次的方式对locationManager(_ manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], in region: CLBeaconRegion)进行回调,其中包含与区域定义匹配的所有CLBeacon对象的数组。您可以迭代这个数组来查看所有的数组。
2.信标监视(您不想要的)
您可以使用区域定义来调用locationManager.startMonitoring(region: region),该区域定义的大小为零。
这将使您在每次至少出现一个匹配区域定义的信标时,对locationManager(_ manager: CLLocationManager, didEnterRegion region: CLRegion)或等效的didExitRegion方法进行回调,或者所有匹配该区域的信标消失。
这不会让您迭代所有匹配的信标,因为回调只包括区域定义,而不是匹配信标的列表。
发布于 2019-02-19 18:34:57
是的你绝对可以!当检测到另一个iBeacon时,您将不会获得新的委托通知,除非您使用不同的in创建多个侦听器,但是一旦您处于给定UUID的区域,您就可以在范围内遍历所有信标,并获得它们的主要和次要信息。
https://stackoverflow.com/questions/54772738
复制相似问题