iBeacon案例 - 使用距离限制触发didEnterRegion事件

3
针对特定的业务需求,我想利用iBeacon技术触发基于接近距离的通知(推送或UILocalNotification)。此功能旨在在应用程序处于后台/锁屏状态下运行。
我有一些具体的限制:
- 产品必须在一定的规模上扩展,因此不可能范围内20个区域。我们将仅范围一个UUID(如果开发新的功能集可能会有2或3个,但我们不会为每个物理信标注册一个区域)。 - 我们将使用major和minor来调用Web服务。 - 关于这一点,我知道我将不得不使用以下方法:首先didEnterRegion:没有关于major / minor / distance的先前信息,然后didRangeBeacon:执行更高级的操作。我已经使用本地存储机制超时信标,考虑到信标的快速发射速率。
* 主要限制:我们必须根据信标的距离进行区域事件(例如,仅在CLProximityImmediate时触发通知)。
现在我看到一个主要限制。由于我的应用程序只会在进入区域后在后台范围内几秒钟,如果我基于距离/接近度有限制,很可能应用程序会:
- 在用户足够靠近物理信标以触发事件之前返回到后台状态 - 再也不会被触发,因为它必须重新进入区域进行范围,这可能不会发生
你有任何想法/解决方法吗?
1个回答

3
在这种情况下,您对CoreLocation应用的局限性非常正确。如果您按照您描述的设置它,通常的行为是,应用程序将在后台检测到不知名距离(通常是最大范围约50米)的信标,在后台进行约5秒钟的范围设置,然后iOS将暂停应用程序。这五秒钟的范围时间通常不足以让用户靠近信标以触发您的使用情况。
不幸的是,在标准信标和CoreLocation中没有简单的解决方法。 CLBeaconRegion对象没有像CLCircularRegion一样的距离字段适用于地理围栏。
您可以尝试两种更极端的方法:
1.一旦检测到设备太远,立即关闭一个区域的监视,然后在应用程序在applicationWillResignActive:回调中自我挂起之前重新启用它。 您可能会获得新的进入事件和更多的背景范围时间。
2.使用定期停止其传输以触发强制退出/进入事件的非标准信标。

感谢确认我的观点。 我将探索第一个看起来有趣的选项! - Romain Dorange

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接