2017-01-30 45 views
0

我想在swift iOS中记录背景中的位置坐标。 当应用程序进入后台时,我使用startMonitoringSignificantLocationChanges,当它进入前台时,我使用stopMonitoringSignificantLocationChanges()startUpdatingLocation()。 我已在finishLaunching中正确实例化位置管理器。 一切似乎很好,当iPhone连接到互联网,但由于某种原因,当没有互联网可用,因为我没有得到任何位置坐标和没有呼叫didFailWithError没有位置没有互联网的坐标显着位置监控

虽然在前台它至少给错误:Error Domain=kCLErrorDomain Code=0 "The operation couldn’t be completed. (kCLErrorDomain error 0.)"

但对于背景,它甚至不给错误,而我走遍30KM。

为了调试的目的,我使用本地通知来通知我在didFailWithError和didUpdateLocations的回调情况。

与活跃的互联网连接,它大多工作正常,即使应用程序被杀害或在后台,但当我尝试没有WiFi或蜂窝数据时,我似乎根本得不到响应。如何处理GPS设置并监控用户的位置,因为我希望它在后台自行排序。有没有解释这种行为。如果互联网不存在,我需要有离线行为。

感谢

+0

您是否通过将设备置于飞行模式禁用了互联网连接? – Andrea

+0

你在使用GSM的国家吗? – shallowThought

+0

是shallowThought。 –

回答

0

从苹果文档:

决定区监测的可用性

之前试图监视任何地区,您的应用程序应该检查 区域监控是否支持当前设备。以下是 区域监控可能不可用的一些原因:

该设备没有必要的硬件来支持区域 监控。
用户拒绝该应用使用区域 监控的授权。
用户在“设置”应用程序中禁用了位置服务。
用户在设置应用程序中禁用了后台应用程序刷新,或者为该设备或您的应用程序设置了 。
设备处于飞行模式,并且 无法启动必要的硬件

您所遇到的问题是与“Region Monitoring and Ibeacon”文档部分这种提取物是一致的。
尝试通过禁用WiFi并禁用蜂窝数据来更改您的测试。

+0

谢谢@andrea,但我不在区域监控。为了进行调试,我正在关闭飞行模式几秒钟,这给iPhone的印象是单元塔被改变了,它应该给位置管理器代表回叫,但是当设备没有连接到互联网或wifi时没有回叫。我认为显着监控的理想行为是,当Cell塔改变时它应该唤醒GPS,并且如果未能获得它应该调用didFailWitherror的位置,这不会发生。但是,通过蜂窝数据,它可以在后台正确授权回调。再次感谢。 –

+0

也许我错了,但我认为地区监测是重大地点变化的亲密家长。我也对GPS工作持怀疑态度,这种功能用于避免电池耗尽。 :) – Andrea

+0

谢谢..你是对的,他们在节省电池方面很棒。是否有任何解释说明,如果没有互联网或蜂窝网络,重要位置没有给予任何回拨,因为当我的应用程序没有连接到互联网时,如果它无法从GPS获取位置,它应该至少调用didFailwithError,而不是案件。 –