我有一个使用位置服务的iOS应用。
我需要在应用程序在特定时间(即2014年4月17日下午3:00)处于后台时调用StartUpdatingLocation()
。
之前我尝试使用计时器来执行此操作,但发现在iOS 7上应用程序处于后台时您无法运行计时器。目前我在应用程序时运行位置服务最初是启动并且经常慢慢更新它。每次更新时,我都会检查是否已达到特定的开始时间,如果是,我开始将坐标记录到数据库中。
是否有更高效/更少数据和电池密集的方式让位置服务从iOS 7应用程序的后台开始?
我还考虑使用LocationUpdatesPaused
和LocationUpdatesResumed
事件来帮助减少电池和数据的使用,同时检查我的具体日期和时间。
我已经查阅了这个有用的链接:http://gooddevbaddev.wordpress.com/2013/10/22/ios-7-running-location-based-apps-in-the-background/
答案 0 :(得分:2)
你不能这样做。
Apple在其文档中明确声明,您不应在后台调用StartUpdatingLocation()。 显然你曾经能够做到这一点,它在iOS7之前有效,但是我尝试使用iOS7并且它不起作用,所以如果它曾经可能它现在不再是。
但除此之外,使用iOS无法在后台的特定时间安排行动。
当您不需要位置更新时,您可以做的是将精度更改为低(与暂停更新等结合使用),并在保留电池寿命时将其设置为高,但是您无法在在后台的具体时间。
答案 1 :(得分:0)
iOS supports background location services只要你在info.plist文件中声明它们就像这样:
...
<key>UIBackgroundModes</key>
<array>
<string>location</string>
</array>
...
但是,由于电池寿命的影响,Apple会very fussy关于此行为会批准的应用类型。