我正在玩iBeacon,我觉得令人沮丧的是,每当我们进入一个灯塔区域然后我们走出去它可能需要15分钟,直到手机检测到“退出事件”。
为了克服这个问题,我考虑在我们进入后立即停止信标监控(通过在 CLLocationManager 上调用 stopMonitoringForRegion )。
但是我尝试了它似乎不起作用。
这就是我认为iOS的作用:
iOS region table:
App1: UUIDx1
App1: UUIDx2
..
App1: UUIDx20 (Maximum)
App2: UUIDy1
App3: UUIDz1
App3: UUIDz2
当我们停止监控iOS以外的区域时,从内部扫描表中删除相应的UUID。然而,这似乎并没有阻止iOS等待(最多15分钟)才意识到它确实退出了该地区。
之前有没有人处理过此事?
我们如何编程iOS和应用程序来创建后续的 didEnterRegion 事件(即使在15分钟内)?
答案 0 :(得分:0)
两个提示:
当您的应用位于前台时,可以在监控的同时加快您所在地区的区域进入和退出事件。当您的应用程序位于前台时,测距将确保蓝牙扫描持续进行。这将使得条目在信标检测的一秒内发生,并且在信标不再被看见的几秒钟内发生退出。
为了获得最佳效果,请安装尽可能少的信标应用,尽可能少地监控。虽然没有发布信息,但有证据表明iOS会尝试加速基于硬件的检测助攻。蓝牙芯片允许您为感兴趣的蓝牙数据包的字节模式设置硬件过滤器,但它们的插槽数量有限。要在iOS设备上注册以进行监控的第一个区域(30?)将获得这些硬件辅助插槽。稍后设置用于监视的区域可能无法获得这些插槽,从而迫使CoreLocation回退到完全蓝牙扫描。如果前景中的应用程序的范围处于活动状态,则这些扫描会持续进行,从而提供快速结果。如果测距未激活,则iOS将进行定期后台扫描,通常每15分钟一次。