在后台连续运行应用程序。 iOS Swift

时间:2018-03-21 07:35:45

标签: ios swift

在我的应用中,我将我的应用程序连接到BLE设备。我每隔1秒从BLE设备获取BLE数据。当我在前台执行此操作时它工作正常。但我想在后台执行相同操作,即使应用程序将在后台我需要从BLE设备连续获取数据。现在它在2分钟后自动停止。

请告诉我是否可行?

提前致谢

2 个答案:

答案 0 :(得分:0)

您需要在功能选项卡下的项目设置中启用后台模式。在后台模式下,您会发现一些模式,可以满足在后台运行应用程序的各种目的。从这些开始,您必须根据应用在后台执行的任务启用您认为合适的那些。我认为,你应该启用外部附件通信和后台获取。

此外,您还需要在应用进入后台时实施后台任务。这是在app delegate的didEnterBackground方法中完成的。

答案 1 :(得分:0)

Apple文档

如果外围设备在应用程序暂停时提供更新,则可以要求使用蓝牙外围设备的应用程序被唤醒。这种支持对于定期提供数据的 Bluetooth-LE 配件非常重要,例如蓝牙心率带。您可以支持在Xcode项目的“功能”选项卡的“背景模式”部分中使用蓝牙配件。 (您还可以通过在应用的Info.plist文件中包含带有bluetooth-central值的$counts = []; $counts = array(); foreach($data["results"]["allproduct"] as $key=> $result) { $counts[$result['$key']][] = $result['price']; } foreach ( $counts as $key => $item ) { $counts[$key] = array_sum( $item ); } 密钥来启用此支持。)启用此模式后,Core Bluetooth框架将保持打开相应外围设备的所有活动会话。此外,从外围设备到达的新数据会导致系统唤醒应用程序,以便它可以处理数据。系统还会唤醒应用程序以处理附件连接和断开连接通知。 在iOS 6中,应用程序还可以使用蓝牙配件在外围模式下运行。要充当蓝牙配件,您必须从Xcode项目的功能选项卡的后台模式部分启用对该模式的支持。 (您也可以通过在应用程序的Info.plist文件中包含带有蓝牙外设值的UIBackgroundModes键来启用此支持。)启用此模式可让Core Bluetooth框架在后台短暂唤醒应用程序,以便它可以处理附件 - 相关要求。为这些事件唤醒的应用应该处理它们并尽快返回,以便可以再次暂停该应用。 任何支持蓝牙数据后台处理的应用都必须基于会话,并遵循一些基本准则:

应用必须提供允许用户启动和停止蓝牙事件传递的界面。然后,该界面应适当地打开或关闭会话。

在被唤醒后,该应用程序有大约10秒的时间来处理数据。理想情况下,它应该尽可能快地处理数据并允许自己再次暂停。但是,如果需要更多时间,应用程序可以使用beginBackgroundTaskWithExpirationHandler:方法来请求额外的时间;但是,只有在绝对必要时才应该这样做。