2014-09-26 170 views
0

我正在开发iOS蓝牙LE应用程序。首先我将IOS(中央)与我的蓝牙芯片(外设)配对。蓝牙低功耗背景

1)发现外围设备。 2)连接到外设。 3)获得服务和特点。 4)能读取数据并写入数据。 5)保存从外围

外围 6)断开当运行该应用程序的第二时间,将自动连接到外围,并写入和从它的特性和断开读取数据。该应用程序在后台运行10分钟。

我想在后台运行这个应用程序。那就是我想每6个小时调用一次在后台连接,写入和读取值的方法。这可能吗?我的应用程序仅在后台运行10分钟。任何建议都会有很大的帮助。

回答

0

首先,你需要确保你补充说:

<key>UIBackgroundModes</key> 
<array> 
    <string>bluetooth-central</string> 
    <string>bluetooth-peripheral</string> 
</array> 

您的Info.plist,这将使您的应用程序在后台运行。

但是,这将工作如下:它将允许您的应用“唤醒”任何蓝牙事件,并运行您希望在应用获取任何蓝牙活动时触发的方法。

因此,例如:

  • 你可以扫描在后台的蓝牙设备,一旦找到了适合你的指标分析可以运行的代码,如didDiscoverPeripheral火灾(连接/读/写等)。
  • 您可以连接到设备并订阅来自特定特征的通知。一旦特性发生变化,你的应用程序在后台应该会收到通知,并且将会调用回调,因此您可以再次调用此方法,仍然在后台运行。
  • 也许你可以考虑其他用例。我已经提到过这些场景,让你知道如何确实可以在BTLE的后台工作。

这些情况不应限制在10分钟的时间范围内。

但是我注意到如果你在背景模式下运行其他东西(例如:一个循环)并且10分钟过去了,你的应用程序可能会从后台被杀死,所以即使上述回调也不起作用。

所以到回答您的6小时问题:如果您的BTLE设备每6小时启动一次BLE操作来唤醒您的应用程序,那么这将是可能的。另外,我不确定你可以从app(ios)方面开始你的活动。

+0

感谢您的意见。 – 2014-09-27 23:05:58