gpt4 book ai didi

ios - CoreBluetooth 在预定时间在后台运行

转载 作者:可可西里 更新时间:2023-11-01 03:07:08 25 4
gpt4 key购买 nike

问题:我需要保持与 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

并将 fetch 添加到 UIBackgroundModes,然后 iOS 会调用它:

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

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

注意事项 application:performFetchWithCompletionHandler: 在 iOS 为应用程序建立用户使用模式之前不会被调用。换句话说,在调用 application:performFetch... 方法之前,您需要将应用保留(而不是删除)大约 24 小时左右。男孩,花了一段时间才弄明白!

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

关于ios - CoreBluetooth 在预定时间在后台运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19694978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com