当前位置: 首页 > 知识库问答 >
问题:

通过iBeacon监控检测信标

赖渊
2023-03-14

对于iOS对希望扫描BLE信标\外围设备的应用程序所应用的限制,存在很多困惑。在阅读了几个博客和堆栈溢出的答案之后,我想看看我是否正确理解了所有问题。如果我有什么误解或遗漏,请纠正我。我只提到iOS 7及以上版本,重点是检测而不是连接(您可以使用iBeacon监控连接到CLBeacon吗

信标的选项是明确的-使用通用BLE外围设备或使用iBeacon格式播发的BLE外围设备(此外,非标准外围设备可以在adv数据包中以iBeacon格式播发,在扫描响应数据包中以其他格式播发)。

一般限制

  • iBeacon测距会让你知道你周围有哪些信标。您必须事先指定信标通告的ProximityUUID(没有常规扫描)。didRangeBeacons将使用最近发现的CLBeacon对象数组每秒调用一次。与信标的距离及其准确性由iOS使用一些只有苹果开发人员真正知道的机密算法计算(该算法基于信标广告的rssi值和rssi-at-1米校准字节)。您还可以使用iBeacon监控在每次进入或退出区域时调用委托-同样,您必须指定您正在寻找的ProximityUUID(您也可以指定主要

在前台运行-限制较少的用例:

  • iBeacon测距和监控-无进一步限制
  • CoreBluetooth-通过scanForPeripheralsWithServicesserviceUUIDs中的nil将扫描所有外围设备。在选项中将CBCentralManagerScanOptionAllowDuplicatesKey作为YES传递,将使didDiscoveryPeripheral为同一外设\信标多次调用(我假设使用计时器检测广告有一段时间没有收到,并假设用户退出“区域”)

在后台运行-更受限制的用例:

  • iBeacon测距无法直接工作。iBeacon Monitoring将调用didEnterRegion,并为应用程序提供6秒的运行时间-在此时间内,您可以开始测距(例如,检测主要故障)

在应用程序被终止后运行

  • iBeacon监控-工作!即使用户已关闭应用程序或设备已重新启动

有人对这些限制有更多的经验吗?在某些用例中,可以将scanForperipheralsAnd Services用作iBeacon监控的更好替代方案吗?

谢谢!

共有1个答案

屈翰飞
2023-03-14

你的描述基本上是对的。只有两项澄清:

>

  • 20区域限制不是每个设备,它是特定于应用的。无论其他应用程序在移动设备上做什么,您的应用程序仍然允许iOS监视多达20个区域。也就是说,有可能存在特定于设备的硬件限制,即有多少区域可以在后台通过硬件辅助进行监控。这些限制没有记录在案。如果超过这些未记录的限制,可能需要更长的时间才能在后台检测到信标。尽管如此,操作系统并不能保证检测何时到来。)

    无法使用监视和测距API连接到CLBeacon。这些API仅适用于无连接的可扩展广告包。

    是的,可以使用scan for peripheralswithservices作为替代方案。这就是常平架信标为实现专有系统所做的工作。然而,在背景检测时间和可靠性方面存在实际的缺点。

  •  类似资料:
    • 我知道这听起来很奇怪,但是配备蓝牙LE的苹果电脑能使用区域监控来监控周围的iBeacons吗?例如,我会用我的苹果手机广播一个信号,苹果电脑就能看到它。 这可能吗?我这样做的原因是当iPhone靠近Mac时,能够在Mac上执行任务。也许有更好的办法?

    • 我有一个android应用程序。我的目的是使用AltBeacon库检测Ibeacons。我使用了来自AltBeacon Library站点链接的监视示例代码:(http://AltBeacon.github.io/android-beacon-library/samples.html)。但我检测不到任何Ibeacon。也无法获得任何关于检测到任何信标的日志。 我的清单文件如下所示:

    • 我是这个论坛的新成员,也是Ganglia的新成员——我们正试图通过Ganglia获取JVM指标——我已经通过这个链接按照步骤操作了——https://github.com/ganglia/jmxetric 解压存档将以下内容添加到您的JVM 演示/快速入门 此示例适用于和1.0.6版。 > 确保在localhost:8649上运行gmond < code>$ git克隆与上面相同的链接 将、和全部

    • 在 v1.1 及更高版本的 TiDB Operator 中,我们可以通过简单的 CR 文件(即 TidbMonitor)来快速建立对 Kubernetes 集群上的 TiDB 集群的监控。 快速上手 前置条件 已经安装了 Operator v1.1.0 及以上版本,并且已经更新了相关版本的 CRD 文件 已经设置了默认的 storageClass,并保证其有足够的 PV(默认情况下需要 6 个 P

    • 我有一个关于使用AltBeacon库用Eddystone信标监视多个区域的问题。 例如,假设我有3个信标,每个信标被分配给另一个区域,并且这些区域是基于信标的实例值定义的,即(“region1”,null,“instanceValueOfBeacon”,null)并且我对每个didenterregion有不同的操作。

    • null null null 在两个平台上使用相同的UUID,当从iOS传输iBeacon信号时,使用CLLocationManager委托方法在另一个iOS设备上检测到该信号 使用相同的UUID从使用Android Beacon库的Android传输iBeacon信号,IOS上的上述CLLocationManager委托方法不会检测到该Beacon。 为了增加检测的机会,我取消了iOS端对主值和