iOS:BLE设备(不是iBeacon)可以唤醒我的应用吗?

时间:2015-08-09 15:30:35

标签: ios iphone bluetooth-lowenergy core-bluetooth

是否可以将常规蓝牙低功耗设备(不是iBeacon!)与我的iPhone应用程序相关联,以便当设备发送数据时,即使iPhone被锁定且应用终止,我的应用也会被iPhone唤醒(甚至不在后台)?

3 个答案:

答案 0 :(得分:5)

只要您的应用指定蓝牙中央后台模式,就会在

时被唤醒
  • 您的应用与设备有当前连接,并且它会发送数据(即设备在范围内,并通知或指示某个特征)
  • 您的应用程序与设备有挂起的连接,并且它已进入范围(即设备超出范围,但您已调用connect以在进入范围时自动重新连接)
  • 您的应用正在扫描特定服务类型,并且广告中包含这些服务类型之一的设备

您的应用终止的情况略有不同。要在这种情况下使用这些方案,您的应用必须实施state preservation and restoration

  

核心蓝牙支持应用的状态保存和恢复   实现核心角色,外围角色或两者兼而有之。

     

当你的   app实现了核心角色,并增加了对州的支持   保存和恢复,系统保存您的状态   系统即将终止您的应用程序时的中央管理器对象   释放内存(如果你的应用有多个中央管理员,你可以   选择您希望系统跟踪的那些)。在   特别是,对于给定的CBCentralManager对象,系统保持不变   追踪:

     
      
  • 中央管理员正在扫描的服务(以及任何扫描   扫描开始时指定的选项)
  •   
  • 外围中心   经理正试图连接或已经连接到
  •   
  • 的   中央经理订阅的特征
  •   

Apple指南讨论了由于内存压力导致应用程序终止的情况。它没有指定如果用户终止应用程序会发生什么情况"向上滑动"在应用程序切换器中 - 在许多情况下,iOS将此视为用户根本不希望应用程序运行并且在这种情况下无法恢复它的指示。

答案 1 :(得分:2)

蓝牙设备有两种状态可以与您的应用互动:

  1. 之前从未与您的应用进行过互动
  2. 它已经连接到用户的设备一次并连接到应用程序

    在任何一种情况下,iBeacon设备都可以与您的应用进行互动。

  3. 如果设备之前没有与您的应用程序连接,我不完全确定是否有办法让它工作。我已经尝试过但没能让它唤醒应用程序。

    但是,如果蓝牙设备之前已连接,那么您可以使用CBCentralManager及其委托方法在设备和应用之间进行通信。

答案 2 :(得分:0)

核心蓝牙应该在注册时从操作系统中唤醒您的应用程序。一旦醒来,它就像正常一样在后台运行。您有最多3分钟的时间来执行您需要的任何任务。