在ios 7中从后台更新位置?

时间:2014-04-16 21:05:42

标签: ios ios7 xamarin

我有一个使用位置服务的iOS应用。

我需要在应用程序在特定时间(即2014年4月17日下午3:00)处于后台时调用StartUpdatingLocation()

之前我尝试使用计时器来执行此操作,但发现在iOS 7上应用程序处于后台时您无法运行计时器。目前我在应用程序时运行位置服务最初是启动并且经常慢慢更新它。每次更新时,我都会检查是否已达到特定的开始时间,如果是,我开始将坐标记录到数据库中。

是否有更高效/更少数据和电池密集的方式让位置服务从iOS 7应用程序的后台开始?

我还考虑使用LocationUpdatesPausedLocationUpdatesResumed事件来帮助减少电池和数据的使用,同时检查我的具体日期和时间。

我已经查阅了这个有用的链接:http://gooddevbaddev.wordpress.com/2013/10/22/ios-7-running-location-based-apps-in-the-background/

2 个答案:

答案 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关于此行为会批准的应用类型。