当设备已经在 Beacon 范围内时无法检测到 Beacon 然后我们打开蓝牙 & 应用程序被杀死

Posted

技术标签:

【中文标题】当设备已经在 Beacon 范围内时无法检测到 Beacon 然后我们打开蓝牙 & 应用程序被杀死【英文标题】:Unable to detect Beacon when Device already in Beacon range & then we turn on Bluetooth & application is killed 【发布时间】:2016-07-22 07:45:39 【问题描述】:

我已经实现了带有本地通知的 Beacon。 当蓝牙打开然后设备进入信标范围并且应用程序处于“未运行”状态时,一切正常。 但是,当设备已经在信标范围内并且蓝牙打开时,不会调用任何代表。是限制还是我遗漏了什么?

【问题讨论】:

在这种情况下,您为什么会期待回电?区域状态没有改变。 那么当用户在信标范围内打开蓝牙时,我将如何显示该信标的通知? 对于您的设备“已经在 Beacon 范围内,然后蓝牙已打开,没有调用任何代理”的场景 - 这是在应用程序处于终止(强制退出)状态时吗? 需要代码...在哪个方法应用程序被杀死? “但是,当设备已经在 Beacon 范围内并且蓝牙打开时,不会呼叫任何代表”在这种情况下您是否更改设备位置? 【参考方案1】:

这是核心位置框架的限制。

当应用程序终止“未运行”状态时,由于位置管理器区域 didEnter / didExit 区域事件,它可以重新启动。如果您在应用程序终止时打开和关闭蓝牙,您的位置管理器将不会收到区域进入/退出事件。您能够触发 didEnter / didExit 事件的唯一方法是通过超出检测阈值以物理方式进入或退出您的信标区域之一。

已终止的应用程序将在区域 didEnter / didExit 事件时唤醒。

当应用在前台或后台运行时,区域监控服务会正常传递事件。 (您可以将此服务用于地理和信标区域。)对于已终止的 ios 应用程序,此服务会重新启动该应用程序以传递事件。

信标测距不会唤醒您的应用程序。

(如果信标区域的 notifyEntryStateOnDisplay 属性为 true,则唤醒设备会导致应用程序在后台为信标范围设置几秒钟。)此服务不会重新启动已终止的 iOS 应用程序;但是,您可以通过使用区域监控服务监控信标区域来重新启动。

【讨论】:

以上是关于当设备已经在 Beacon 范围内时无法检测到 Beacon 然后我们打开蓝牙 & 应用程序被杀死的主要内容,如果未能解决你的问题,请参考以下文章

iPhone4S 在 Beacon 检测中的奇怪行为

自动查找已配对的蓝牙设备,当它们在范围内时

在范围内时自动连接到配对的蓝牙设备

使用 android-beacon-library 检测蓝牙设备

使用android-beacon-library检测蓝牙设备

iBeacon 监控无法正常工作