刷新iBeacon状态

时间:2016-09-15 14:01:25

标签: ios ibeacon

我是iBeacon的新手,需要一些帮助。已经从其他主题中找到了一些有用的信息,但仍在寻找答案。

有没有办法在应用程序被杀或我打开蓝牙后立即接收有关我的状态的通知?现在我只在状态改变后收到通知。

示例:当我指向'A'时,我需要通知。但我到了那里,意识到我的蓝牙是关闭的。我打开蓝牙并没有得到任何东西,因为iBeacon从一开始就认为我是'INSIDE'。当app不是前台时(但不是100%次,有时iBeacon'重新扫描'并再次发送他的状态)会发生这种情况。

我需要以某种方式手动刷新iBeacon状态并获取方法didDetermineState或didRangeBeacons才能工作。我试图停止并在应用程序被杀后开始监视以强制通知,但似乎不起作用。我知道有一种方法可以在打开显示器后进行“刷新”,但在需要时也可以在其他情况下使用它。

1 个答案:

答案 0 :(得分:0)

许多位置和信标事件可以唤醒在后台运行的应用,但相对较少的事件会发送到通过任务切换器杀死的应用,或者自启动后从未启动过。

能够启动非运行应用程序的唯一蓝牙事件是:

  • didEnterRegion(对于CLBeaconRegions)
  • didExitRegion(对于CLBeaconRegions)

仅由前台/后台正在运行的应用收到的其他事件:

  • didDetermineStateForRegion
  • CoreBluetooth设备发现
  • CoreBluetooth电源状态更改

最后一个是您关心的事件,但它不会被发送到未运行的应用程序。一种替代方案可以是依赖于其他位置事件,例如重要位置变化,其在用户“显着”移动(例如,到下一个小区塔)时启动非运行的应用。您可以注册这些事件并在那时检查蓝牙状态。这可能是你能做的最好的事情。