【发布时间】:2014-01-10 20:28:35
【问题描述】:
在提出问题之前我已经彻底研究了这个主题,但需要确保我得出了正确的结论,如果是这样,我希望帮助我尽可能有效地实施这个问题。
我的应用必须每 5 秒左右接收一次加速度计更新,并且在某些情况下可能会更快;如果没有这个功能,它就不是一个非常有用的应用程序。
那么,如何实现呢?基本策略是使用方法:
[cmMotionManager startDeviceMotionUpdatesToQueue:...]
使用适当的deviceMotionUpdateInterval,然后以某种方式“确保”您的应用程序永远不会被暂停,即。您必须实现其中一种背景模式(例如位置、背景音频、VOIP 等)
这是应用商店中已有的许多应用所使用的策略,例如 Sleep Cycle(“录音”)、Nike+ 和 Pacer(声音播放)。
(如果有其他方法可以持续获取加速度计信息,请纠正我)
我的问题是我的应用不会录制声音,不需要 VOIP 等,也不需要 iOS 7 中的任何新的后台获取/远程通知 API。那么如何确保我留下来在后台活跃吗?
好吧,由于我正在设计一个测量运动的应用程序,因此接收位置信息并不遥远。我的问题是如何以最有效的方式实施位置更新,因为我根本不需要这些位置更新,同时确保我的应用永远不会被暂停?
这是我目前在我的应用程序委托中拥有的:
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 尝试获取位置修复以提供给应用。
我也想知道,一旦你被位置更新唤醒,如果没有新的位置更新,你还有多长时间系统会再次暂停你?我是否必须尝试接收持续的位置更新(导航方式)以确保我永远不会被暂停?
请帮忙!
谢谢
【问题讨论】:
标签: ios accelerometer core-location core-motion