【问题标题】:iOS Significant-Change Location event doesn't update the app every 15 minsiOS 重大更改位置事件不会每 15 分钟更新一次应用程序
【发布时间】:2017-05-14 18:56:55
【问题描述】:

根据documentation

重大变化的位置更新会唤醒系统和您的应用一次 至少每 15 分钟一次,即使没有位置变化 发生了。

但它不像描述的那样工作......

在我使用的 Xamarin.iOS 项目中

_locationManager = new CLLocationManager
{
    PausesLocationUpdatesAutomatically = false,
};
_locationManager.StartMonitoringSignificantLocationChanges();

*我在这里跳过了所有权限检查和 plist 配置。更新工作正常,应用程序接收更新,但仅在实际移动的情况下,而不是每 15 分钟一次:如果设备不移动,可能需要数小时。

我也看到了this question and answer with NSTimer,但即使应用程序被终止或后台运行,我也需要这些更新。

【问题讨论】:

  • 您是否检查过您的应用程序实际上仍在后台运行并且没有因某种原因被终止?
  • @jcaron,是的,它正在运行(应用程序正在将日志写入带有时间戳的文件),并且正如我所说,即使在应用程序终止后它也会收到更新......问题出在更新频率,绝对不是15分钟

标签: ios objective-c core-location cllocationmanager


【解决方案1】:

根据 Apple 工作人员 a replythis thread on the Apple developer forums 的说法,文档与您、该线程上的原始发帖人以及我本人正在观察的内容之间可能存在差异(即,与记录在案的内容相反) ,可能不会每 15 分钟更新一次)。

请注意文档中的措辞:“至少每 15 分钟一次”。我们似乎都将“最低”解释为最低频率(即每 15 分钟一次,或每 15 分钟两次,或更多)。但它也可以读作最小时间间隔(即每 15 分钟,或每 30 分钟或更长时间)。它不能保证更新的频率,而是设定更新不频繁的预期。文档没有错,但肯定有多种解释。

重要的是 Apple 工作人员在回复中所说的内容:

[…] 仅使用 [显着位置变化] 并不能保证您的应用会以 [sic] 某些周期性速率恢复。

PS。对于那些可以对文档做些什么的人:rdar://30345408(不是我的)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-25
    • 1970-01-01
    • 2016-05-30
    • 2011-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多