我有多个iBeacon,它们具有相同的UUID,但主要和次要编号不同。对于主要和次要,它可以是不同的组合,但是UUID保持不变。例如,
此外,这些iBeacon距离很近,范围从1到50英尺。因此,它们的区域可以彼此相交。
在我的iOS应用中,我想检测该区域中所有具有相同UUID的iBeacon,然后对其进行迭代,并读取每个的主要和次要内容,以检测出已检测到其中一个。
我可以使用
1515914400000
和我的UUID,然后遍历它们?
答案 0 :(得分:1)
是的,您绝对可以!当检测到另一个iBeacon时,除非创建多个具有不同ID的侦听器,否则您将不会收到新的委托通知,但是一旦进入给定UUID的Region,您就可以遍历范围内的所有信标并获取其主要和次要
答案 1 :(得分:1)
有两种不同的iOS CoreLocation API,您需要使用第一个API:
1。信标测距(您想要的)
您使用区域定义来调用locationManager.startRangingBeacons(in: region)
,该区域定义保留大写和次要nil。您显示的init(proximityUUID: UUID,
identifier: String)
构造函数可以做到这一点。
这将使您每秒一次locationManager(_ manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], in region: CLBeaconRegion)
的回调,其中包含与您的区域定义匹配的所有CLBeacon
对象的数组。您可以遍历此数组以查看所有数组。
2。信标监控(您不需要的内容)
您使用区域定义来调用locationManager.startMonitoring(region: region)
,而该区域定义的主要和次要为零。
每次至少出现一个与区域定义匹配的一个信标,或者 all 个信标,这将为您回调locationManager(_ manager: CLLocationManager, didEnterRegion region: CLRegion)
或等效的didExitRegion方法匹配区域消失。
这不会让您遍历所有匹配的信标,因为回调仅包括区域定义,而不包括匹配的信标列表。