gpt4 book ai didi

ios - 使用 CoreMotion 在后台获取加速度计数据

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

我无法在后台接收加速度计数据,尽管这个问题的解决方案看似正确 How Nike+ GPS on iPhone receives accelerometer updates in the background?

[_motionManager startAccelerometerUpdatesToQueue:[[NSOperationQueue alloc] init]
withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"perform");
[(id) self setAcceleration:accelerometerData.acceleration];
[self performSelectorOnMainThread:@selector(update) withObject:nil waitUntilDone:NO];
});}];

只要应用程序在前台,就会记录执行,但每当我退出后台时,它就会停止运行。有谁知道为什么会这样?我已经在后台模式中检查了“位置更新”...

最佳答案

将这段代码放在该行的前面(在创建一个名为 bgTaskID 的 UIBackgroundTaskIdentifier 类型的成员变量之后):

UIApplication *application = [UIApplication sharedApplication];
__weak __typeof(&*self)weakSelf = self;
self.bgTaskID = [application beginBackgroundTaskWithExpirationHandler:^{
__strong __typeof(&*weakSelf)strongSelf = weakSelf;

NSLog(@"BG TASK EXPIRED!");

if (strongSelf) {
[application endBackgroundTask:strongSelf.bgTaskID];
strongSelf.bgTaskID = UIBackgroundTaskInvalid;
}
}];

关于ios - 使用 CoreMotion 在后台获取加速度计数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21947864/

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