我知道我已经接受了这个答案(对不起!),但我找到了一个解决方案:
[[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
.
CAVEAT: 在iOS 为应用建立用户使用模式之前不会被调用application:performFetchWithCompletionHandler:
。换句话说,在调用该方法之前,您需要将应用程序保留(而不是删除)大约 24 小时左右。男孩,是否需要一段时间才能弄清楚!application:performFetch...
更新: Apple 已接受我使用此解决方案的应用程序(2014 年 5 月批准)。