【问题标题】:Updating location from the background in ios 7?在ios 7中从后台更新位置?
【发布时间】:2015-10-27 19:58:20
【问题描述】:

我有一个使用定位服务的 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/

【问题讨论】:

    标签: ios ios7 xamarin


    【解决方案1】:

    你不能这样做。

    Apple 在其文档中明确声明您不应在后台调用 StartUpdatingLocation()。 显然你曾经能够做到这一点,并且它在 iOS7 之前可以使用,但我在 iOS7 上尝试过它并且它不起作用,所以如果它曾经是可能的,现在不再是了。

    但除此之外,对于 iOS,无论如何都无法在后台的特定时间安排动作发生。

    您可以做的是在不需要位置更新时将准确度更改为低(结合暂停更新等),并在需要更新时将其设置为高以延长电池寿命,但您不能立即执行此操作后台的具体时间。

    【讨论】:

      【解决方案2】:

      iOS supports background location services 只要你像这样在 info.plist 文件中声明它们:

      ...
      <key>UIBackgroundModes</key>
          <array>
              <string>location</string>
          </array>
      ...
      

      但是,由于电池寿命的影响,Apple 会very fussy 关于它会批准这种行为的应用类型。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-12-16
        • 2018-03-11
        • 1970-01-01
        • 2013-10-03
        • 2014-07-24
        • 1970-01-01
        相关资源
        最近更新 更多