【问题标题】:iOS: beacons detection taking a long timeiOS:信标检测需要很长时间
【发布时间】:2016-09-27 01:00:08
【问题描述】:

我有一个应用程序正在扫描信标(我知道 UIID)并显示它们。在我运行它的前几次,我几乎立即找到了信标。但是现在每次我运行它,似乎需要越来越长的时间来检测它们。即使我将信标放在设备旁边的桌子上。

我尝试过更换电池,从 iPhone 换成 iPad,检查 Mac 上的信标扫描应用程序,重建应用程序等。我也有来自不同制造商的一系列不同信标,它们似乎都有同样的问题。似乎没有什么可以解决这个问题。

我的代码基本上是这样的:

let locationManager = CLLocationManager()
locationManager.delegate = self
let region = CLBeaconRegion(proximityUUID: UUID(uuidString:"61687109-905F-4436-91F8-E602F514C96D")!, identifier: "BlueCat beacon")
locationManager.startMonitoring(for: region)

然后我可以等待 5 分钟或更长时间,然后才能调用任何委托方法。

这是我第一次尝试使用信标。这是正常的吗?设备看到信标是否需要很长时间?

【问题讨论】:

    标签: ios bluetooth-lowenergy beacon


    【解决方案1】:

    在理想条件下,iOS 上的didEnterRegion 回调会在信标进入范围后的几秒钟内发生。在不太理想的条件下,这些回调可能需要 15 分钟或更长时间。

    有很多事情会导致在监控时检测信标出现延迟,如果不确切知道您是如何测试的,就很难确定。两个提示:

    1. iOS 设备上的硬件过滤器插槽数量有限,并且按照先到先得的原则。如果您安装了一堆已占用这些插槽的信标应用程序(或者如果您的应用程序已注册了一堆区域),则所有这些插槽可能已被占用。一旦硬件过滤器插槽消失,检测就会退回到大约每 15 分钟发生一次的软件扫描。卸载所有可能占用这些插槽的应用(包括您的应用),然后仅重新安装您的应用。

    2. 当您将应用置于后台时,请确保您不在“区域内”。如果 iOS 认为它在该区域内,您将不会收到新的 @987654322 @callback 直到它意识到它离开了该区域然后再次进入。 iOS 意识到它退出该区域的时间比它意识到它进入的时间要长得多。为确保它意识到它已退出该区域,您应该始终在应用程序处于前台时对信标进行范围,并让应用程序在前台范围内大约一分钟以确保 iOS 意识到它不再在区域中(通常需要 30几秒钟的测距触发退出。)只有这样你才能把它放在后台并打开信标来测量检测时间。

    【讨论】:

      猜你喜欢
      • 2019-09-02
      • 2014-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-07
      • 2020-08-26
      相关资源
      最近更新 更多