iOS重大更改位置事件不会每15分钟更新一次应用程序

时间:2017-05-14 18:56:55

标签: ios objective-c core-location cllocationmanager

根据documentation

  

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

但它没有按照描述的那样工作......

在我的Xamarin.iOS项目中,我使用

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

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

我也看到this question and answer with NSTimer,但即使应用程序被终止或背景化,我也需要这些更新。

1 个答案:

答案 0 :(得分:0)

根据a reply的Apple工作人员this thread on the Apple developer forums,文件与您之间的差异,以及我自己观察的原始海报(即与记录的内容形成对比,每15分钟可能没有更新。

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

重要的是Apple工作人员在回复中说明了什么:

  

[...]仅使用[重要位置更改]并不能保证您的应用将以 [原文如此] 的某些定期费率恢复。

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