ios – 计划时间背景下的CoreBluetooth

问题:我需要保持与BLE外设断开连接,但是将数据的数据发送到服务器以便尽可能频繁地进行处理,因为它可能对时间要求很高.换句话说,我想经常连接并将同步的数据发送到API,同时在所有其他时间保持断开连接以节省电池寿命.

尝试失败:将我的应用程序的Info.plist文件的UIBackgroundModes字段设置为bluetooth-central只能让我在连接时执行后台操作.我想保持断开连接,但是以预定义的间隔重新连接,以及从后台模式安排警报.

这是可能的:我注意到FitBit Flex应用程序在设置中有一个选项,可以在后台进行同步.我不确定它是否会在我的Flex范围内断开连接,但是判断它的电池尺寸如此之小 – 我猜它不会保持连接状态.

解决方法

我知道我已经接受了这个答案(对不起!),但我找到了一个解决方案:
[[UIApplication sharedApplication] setMinimumBackgroundFetchInterval:60*5]; // Every 5 minutes,minimum

在:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

并将提取添加到UIBackgroundModes,然后iOS调用:

- (void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler

每15-240分钟(是的,它变化很大,但它总比没有好).每次调用我执行提取时,我都会连接到外设,同步并将其数据发送到服务器,然后断开连接.由于我将这些数据从BLE外设发送到服务器进行处理/存储,我假设这是一个合法的(AppStore值得)使用fetch.

CAVEAT:application:performFetchWithCompletionHandler:在iOS为应用程序建立用户使用模式之前不会被调用.换句话说,您需要在应用程序之前大约24小时左右保留应用程序(不要删除它):performFetch …方法被调用.男孩,这需要一段时间来搞清楚!

更新:Apple已接受使用此解决方案的应用程序(2014年5月批准).

以上是来客网为你收集整理的ios – 计划时间背景下的CoreBluetooth全部内容,希望文章能够帮你解决ios – 计划时间背景下的CoreBluetooth所遇到的程序开发问题。

如果觉得来客网网站内容还不错,欢迎将来客网网站推荐给程序员好友。