首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iBeacon监控同一UUID和不同主次、小信标的多个信标

iBeacon监控同一UUID和不同主次、小信标的多个信标
EN

Stack Overflow用户
提问于 2019-02-19 18:28:10
回答 2查看 1.3K关注 0票数 0

我有多个iBeacons,具有相同的UUID,但大小不同。它可以是大调和小调的不同组合,但UUID保持不变。比如说,

  • 设备#1 - UUID,主修1,小调1
  • 设备#2 - UUID,主修1,小调2
  • 设备#3 - UUID,主修2,小调1
  • .
  • 设备#n - UUID xyz,主修10,小调1

此外,这些iBeacons位于近距离,范围从1-50英尺.因此,它们的区域可以相互交叉。

在我的iOS应用程序中,我希望检测区域内具有相同UUID的所有iBeacons,然后遍历它们并读取每个iBeacons的大写和小调,以检测其中哪个已经被检测到。

我可以在我的UUID中使用init(proximityUUID: UUID, identifier: String),然后迭代它们吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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方法进行回调,或者所有匹配该区域的信标消失。

这不会让您迭代所有匹配的信标,因为回调只包括区域定义,而不是匹配信标的列表。

票数 2
EN

Stack Overflow用户

发布于 2019-02-19 18:34:57

是的你绝对可以!当检测到另一个iBeacon时,您将不会获得新的委托通知,除非您使用不同的in创建多个侦听器,但是一旦您处于给定UUID的区域,您就可以在范围内遍历所有信标,并获得它们的主要和次要信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54772738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档