gpt4 book ai didi

ios - 在 iOS 的后台持续更新加速度计

转载 作者:IT王子 更新时间:2023-10-29 08:12:16 26 4
gpt4 key购买 nike

在提出问题之前,我已经对这个主题进行了彻底的研究,但需要确保我得出了正确的结论,如果是这样,我希望获得帮助以尽可能高效地实现这一点。

我的应用程序每 5 秒左右接收一次加速度计更新是必要的,并且在某些情况下可能会更快;没有这个功能,它就不是一个非常有用的应用程序。

那么,如何实现这一目标呢?基本策略是使用方法:

[cmMotionManager startDeviceMotionUpdatesToQueue:...] 

使用适当的 deviceMotionUpdateInterval 然后以某种方式“确保”您的应用程序永远不会被暂停,即。您必须实现其中一种后台模式(例如位置、背景音频、VOIP 等)

这是应用程序商店中已有的许多应用程序所采用的策略,例如 Sleep Cycle(“录音”)、Nike+ 和 Pacer(声音播放)。

(如果有其他方法可以持续获取加速度计信息,请指正)

我的问题是我的应用程序不会录制声音,不需要 VOIP 等,也不需要 iOS 7 中的任何新的后台获取/远程通知 API。那么如何确保我留下来活跃在后台?

好吧,既然我设计的是一个测量运动的应用程序,那么接收位置信息并不是一件容易的事。我的问题是如何以最有效的方式实现位置更新,因为我根本不需要这些位置更新,同时确保我的应用程序永远不会被暂停?

这是我目前在我的应用委托(delegate)中拥有的:

self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.desiredAccuracy = kCLLocationAccuracyKilometer;

- (void)applicationWillResignActive:(UIApplication *)application
{
[self.locationManager startUpdatingLocation];
}

- (void)applicationWillEnterForeground:(UIApplication *)application
{
[self.locationManager stopUpdatingLocation];
}

我注意到,有时在我按下应用程序上的主页按钮后的一小段时间,我的应用程序会暂停 - 大概是因为 Core Location 试图获取定位修复以传送到应用程序。

我还想知道,一旦您被位置更新唤醒,如果没有新的位置更新到达,您还有多长时间系统会再次挂起您?我是否必须尝试接收持续的位置更新(导航方式)以确保我永远不会被暂停?

求助!

谢谢

最佳答案

考虑到这是 3 年前提出的问题,我将尝试给出适用于 2017 年的答复。如果您使用的是 Swift,我强烈建议使用此框架 https://github.com/MHaroonBaig/MotionKit .

这使得使用 CoreMotion 服务变得非常简单。核心位置服务可能还有另一个友好的包装器。

我发现另一个 SO 问题似乎已经使用您劫持位置服务以在后台保持事件的方法回答了这个问题。

Run app for more than 10 minutes in background

希望这对您有所帮助。我只是提醒一句,使用位置服务在后台获取连续的加速度计数据而不实际需要位置服务可能会导致您的应用程序被应用程序商店拒绝。导航应用程序真正使用位置和加速计数据。简单的答案是添加一个功能,该功能实际上使用该位置来证明在后台获取加速度计数据是合理的。无论如何,祝你好运。

关于ios - 在 iOS 的后台持续更新加速度计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20729668/

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