Iphone 核心蓝牙和背景接地:即使在后台模式下工作了几天,也能检测到设备并触发动作?
我已经编写了一个应用程序,当某个蓝牙低能设备进入范围时需要得到通知。如果BLE设备被发现,我的应用程序只存储一个时间戳 正如WWDC 2012 Core Bluetooth视频中所述,在使用Core Bluetooth时,应用程序有两种可能在后台模式下运行: 事件背景 事件背景可能是大多数应用程序所关注的 将在与蓝牙低能耗设备交互时使用。这 模式不允许在以下情况下与附件直接通信: 该应用程序位于后台,但提供了来自的通知 当附件想要与应用程序通信时,请将其删除。iOS将 当您的应用程序处于可用状态时,请保持与BTLE附件的连接 后台,并将继续监视通知。当 已连接的BTLE附件有可用的通知,iOS将通知 附件希望与您的应用程序通话的用户,允许 用户可以加载您的应用程序并与附件交互。一样多 设备需要省电,只需在最短的时间内提供信息 确定的时间将大大提高电池的寿命 配件和iPhone4SIphone 核心蓝牙和背景接地:即使在后台模式下工作了几天,也能检测到设备并触发动作?,iphone,ios,core-bluetooth,bluetooth-lowenergy,Iphone,Ios,Core Bluetooth,Bluetooth Lowenergy,我已经编写了一个应用程序,当某个蓝牙低能设备进入范围时需要得到通知。如果BLE设备被发现,我的应用程序只存储一个时间戳 正如WWDC 2012 Core Bluetooth视频中所述,在使用Core Bluetooth时,应用程序有两种可能在后台模式下运行: 事件背景 事件背景可能是大多数应用程序所关注的 将在与蓝牙低能耗设备交互时使用。这 模式不允许在以下情况下与附件直接通信: 该应用程序位于后台,但提供了来自的通知 当附件想要与应用程序通信时,请将其删除。iOS将 当您的应用程序处于可用状态
- 此模式不需要info.plist条目
- 会话背景需要在Apps info.plist中的UIBackgroundModes、bluetooth central中输入背景模式
因此,我的问题是:当某个可移动设备进入范围时,我的应用程序是否可能在发送到后台几天后,在没有用户交互的情况下收到通知,以便我可以存储我的时间戳?否,iOS无法保证你的应用程序在后台保持活动状态。文件说: 但是,在应用程序在后台运行(未挂起)并且系统出于某种原因需要终止它的情况下,可以调用此方法
(文档)从iOS 7开始,您的用例现在很容易支持。在iOS 7之前,您的应用程序可以注册有关该外设的通知,当系统有通知要发送时,它会在后台被唤醒。但是,如果应用程序在后台运行或重新启动时,系统受到内存压力,则不会重新启动。iOS 7在
CBCentralManager
和cbperipheraldmanager
中添加了状态恢复功能,因此,现在操作系统将以有限的容量重新启动应用程序,即使应用程序因上述任一情况而未运行。有关更多信息,请参阅
简而言之,对于您的用例,您可以执行以下操作:
- 继续支持
作为后台执行模式bluetooth central
- 选择国家保护和恢复,如“增加对国家保护和恢复的支持”所述
祝你好运。也就是说,在后台使用数天后,你的应用程序几乎不可能保持活动状态。这个答案是不正确的。在app Store中查看应用程序“黑暗天空”。这是一个基于位置的天气应用程序。它已经在我手机的后台运行了好几个月,并在下雨时不断通知我。该应用程序可能使用推送通知。因此,应用程序不必在后台运行。请注意,iOS7将引入新功能来解决此问题。这将很难处理。@ChristophWimberger我怀疑你关于Dropbox使用定位服务的建议1)它应该请求用户允许使用定位服务,但我不知道它曾经这样做过。2) 我认为以这种方式使用位置服务违反了应用商店的政策你能为你的信息来源提供一个链接吗