iBeacon监视具有相同UUID和不同主,次要的多个信标

时间:2019-02-19 18:28:11

标签: ios iphone mobile bluetooth ibeacon

我有多个iBeacon,它们具有相同的UUID,但主要和次要编号不同。对于主要和次要,它可以是不同的组合,但是UUID保持不变。例如,

  • 设备#1-UUID xyz,大写1,小写1
  • 设备#2-UUID xyz,主要1,次要2
  • 设备#3-UUID xyz,主要2,次要1
  • .....
  • 设备#n-UUID xyz,主要10,次要1

此外,这些iBeacon距离很近,范围从1到50英尺。因此,它们的区域可以彼此相交。

在我的iOS应用中,我想检测该区域中所有具有相同UUID的iBeacon,然后对其进行迭代,并读取每个的主要和次要内容,以检测出已检测到其中一个。

我可以使用 1515914400000和我的UUID,然后遍历它们?

2 个答案:

答案 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方法匹配区域消失。

这不会让您遍历所有匹配的信标,因为回调仅包括区域定义,而不包括匹配的信标列表。