如何使用蓝牙信号(BLE)唤醒iOS应用程序

如何使用蓝牙信号(BLE)唤醒iOS应用程序,ios,bluetooth-lowenergy,core-bluetooth,ibeacon,cbcentralmanager,Ios,Bluetooth Lowenergy,Core Bluetooth,Ibeacon,Cbcentralmanager,将BLE与CoreBluetooth(无iBeacon)一起使用时,是否有方法在设备接收到蓝牙信号时唤醒未运行的应用程序 我正在用红熊实验室的BLE盾牌模拟一个信标() 谢谢, 丹 *2014年5月3日更新* 看起来苹果已经在iOS 7.1上引入了一个重大更新:现在,如果iOS检测到与你的应用程序匹配的UUID,它将为你打开你的应用程序。该应用程序只需安装,不必运行(需要AppDelegate中的逻辑来接听唤醒电话)。 当CBCentralManagerDelegate或CBPeripheral

将BLE与CoreBluetooth(无iBeacon)一起使用时,是否有方法在设备接收到蓝牙信号时唤醒未运行的应用程序

我正在用红熊实验室的BLE盾牌模拟一个信标()

谢谢, 丹

*2014年5月3日更新*

看起来苹果已经在iOS 7.1上引入了一个重大更新:现在,如果iOS检测到与你的应用程序匹配的UUID,它将为你打开你的应用程序。该应用程序只需安装,不必运行(需要AppDelegate中的逻辑来接听唤醒电话)。

当CBCentralManagerDelegate或CBPeripheralDelegate委托方法被调用时,系统将唤醒您的应用程序 已调用,允许应用程序处理重要的中心角色事件, 例如,当建立或断开连接时 外围设备发送更新的特征值,当中央 经理的状态发生变化

要在后台执行某些外围角色任务,请 蓝牙外设必须包含UIBackgroundModes键 应用程序的Info.plist文件中的值。当此键值对为 包括在应用程序的Info.plist文件中,系统会唤醒你的应用程序 处理读、写和订阅事件


据我所知,如果你的应用程序以前没有连接过BLE外设,那么就没有

如果您的应用程序以前已连接到BLE外围设备,请使用:

-连接外围设备:选项

连接请求不会超时。调用此方法的最佳位置是当应用程序与BLE外围设备失去连接时。当您与CBCentralManagerDelegate协议中的外围设备失去连接时,您将收到通知:

-centralManager:DidDisconnect外围设备:错误


所以下次当你们的应用进入BLE外设的范围时,它会触发这个方法。还要注意,在初始化CBCentralManager时,需要设置状态保留和恢复

如果该应用程序在后台运行,然后由于其他应用程序的内存压力而关闭(我的意思是在这里终止-双击“主页”按钮时,您在后台应用程序列表中再也看不到该应用程序),则iOS将负责在调用代理时再次将其唤醒(假设在.plist中列出了背景模式)


如果应用程序在后台运行,然后被用户关闭(我这里的意思是终止。因此,用户双击以获取后台运行的应用程序列表,然后在后台列表中单击您的应用程序,直到它晃动,然后按下应用程序旁边的“x”将其杀死)然后,这清楚地表明用户不希望应用程序在后台运行,并且不会重新启动该应用程序。用户必须重新启动该应用程序,以便其代理在后台重新开始运行(iOS7中新增)

更新:
我不确定这是否在文档中,但它在CoreBluetooth WWDC 2013视频中。我建议您观看。视频的大部分内容都是关于CoreBluetooth在后台的行为。

您可以尝试在info.plist中声明voip。目前,我的应用程序在一段时间后自动重新启动,即使是用户终端ted它。

我的意思是,当应用程序关闭且未在后台运行时,如何唤醒应用程序;当设备进入蓝牙信号覆盖的区域(即信标)时,是否有任何方法会自动调用?在这种情况下,请使用-(void)startMonitoringForRegion:(CLRegion*)所需的区域准确性:(CLLocationAccuracy)准确度并将CLBeaconRegion作为region传入,这应该会启动应用程序。以下是一些示例代码-这仅在iBeacon技术中可能实现;我不知道Estimote如何实现这样的协议,因为苹果尚未发布。我正在与Able合作开发Arduino。我正在考虑以下情况:您已经安装了应用程序与商店相关,但很长一段时间没有使用。有一天,你路过这样一家商店,它使用一个灯塔通知人们一个特殊的促销活动。在这种情况下,你可能希望被告知该促销活动,但不知道应用程序的状态。因此,你是否声明前面的场景无法通过iOS实现7?此外,你能给我指一下苹果公司的文档吗?其中谈到你的声明“用户必须重新启动应用程序,以便其代表在后台重新开始工作”?只要用户从未停止应用程序,就可以实现这种情况(通过按下应用程序图标,直到其摆动,然后按下应用程序旁边的“x”)。我编辑了我的答案,以澄清我所说的“关闭”是什么意思。我还添加了苹果文档的详细信息。在iOS7中,你可以通过将应用程序从后台列表中向上弹来杀死它。我只是想澄清一下:我指的是用户双击“主页”按钮(以获取后台运行的应用程序列表)然后轻弹或按下应用程序图标,直到它摆动……我不是指用户在主屏幕上按下应用程序图标,直到它摆动,然后按下旁边的“x”,因为这显然会删除应用程序。即使用户具有强制qui,信标也会在后台启动应用程序几秒钟t应用程序(双击home并向上滑动)。我已经在iOS 9和iOS 10上对此进行了测试。使用beacon技术,无需将外设与设备配对。@DAN-这是真的,但请注意“连接”和“配对”也不是同一件事。@David Chu你能提供关于这件事的示例代码吗?有关更多信息,请参阅:你应该在更新中更具体。你链接的帖子太模糊了,没有用处。DAN的链接不起作用。请使用此链接: