从iOS设备的GPS获取时间

4
我正在开发一个跟踪应用程序。该应用程序需要高精度的设备位置,即使用定位服务,并忽略水平精度差于20米的位置。CLLocation没有明确声明是通过GPS确定的还是其他方式。但是,如果水平精度为20米或更好,则可以假定它是来自GPS的位置。
此外,我需要知道确定位置时的时间戳。我知道类CLLocation中的属性timestamp。但是,我想获取来自GPS的时间戳,而不是系统时间。
能否获取GPS时间?我不关心GPS信号不可用的情况。我只需要获取刚刚接收到的GPS位置(高精度位置)的GPS时间。
在stackoverflow上的其他问题中,建议使用以下代码片段:
CLLocation* location = [[CLLocation alloc] initWithLatitude:(CLLocationDegrees) 0.0 longitude:(CLLocationDegrees) 0.0];
NSDate* now = location.timestamp;

有没有保证location.timestamp[NSDate date]更与GPS相关的东西?

如果自动时间设置关闭,似乎不是这样。 如果我去“设置” ->“通用” ->“日期和时间”,并关闭“自动设置”,则属性timestamp包含手动设置的系统时间。 因此,当启用自动时间设置时,它是否更与GPS相关?


“GPS时间”是指从卫星发送信号的时间吗?如果是这样,那么每个卫星的时间都会不同。GPS通过查看系统时间和接收到的信号的时间戳之间的时间差来工作。您更有可能需要的是CLLocation上的时间。说实话,“GPS时间”是什么意思我并不确定。 - Fogmeister
通过“GPS时间”,我指的是卫星发送的时间。但是,如果我手动设置设备上的系统时间,则timestamp包含该手动设置的时间。因此,我猜测CLLocation上的timestamp只是设备的系统时间,与GPS卫星发送的时间无关。我只是想知道这是否真的正确,即使系统时间被设置为自动同步,这也是真的吗? - Cimlman
2个回答

2
However, I would like to get the timestamp from GPS, not the system time.

您无法获取GPS芯片提供的时间戳。

如果用户人为设置了错误的时间,iOS也会在其位置信息中使用此偏移量。

I just need to get the GPS time for a GPS location (location with high accuracy) I have just received.

如果设备设置为自动设置系统时间,则GPS定位时间应准确无误。

So is it more-GPS related at least when automatic time setting is turned on?

是的
Is there any guarantee that location.timestamp is something more GPS-related than [NSDate date]?

涉及的内容更相关了,[NSDate date]是当前系统时间,而location.time是与位置记录时间相关的时间。这可以通过例如0.6秒的偏移量来抵消,甚至在启动后第一次修正时可能会更多。

为了检查位置是否为当前位置,苹果建议计算系统时间和位置时间之间的差异。


好的,这是一个很好的观点。location.timestamp[NSDate date]更好,因为它消除了记录时间和应用程序处理位置之间的延迟。然而,问题是:location.timestamp是否总是系统时间,还是由GPS卫星发送的时间? - Cimlman
这是一种与GPS时间同步的系统时间。苹果似乎会存储用户设置的偏移量,并保持其同步(例如更改时区)。我不确定他们具体做了什么,但这是我的理解。 - AlexWien
你能提出任何实验、观察、文件陈述或其他形式的论据来证明location.timestamp不仅仅是纯粹的系统时间吗? - Cimlman
当然,这样的文档并不存在,因为苹果隐藏了所有内部细节。但是观察结果:确实,在毫秒部分看,GPS模块几乎总是使用0,因此它们在秒后没有小数部分。而系统时间通常从不以毫秒为0。(机会是1:1000) - AlexWien
我尝试记录location.timestamp,毫秒部分不为零。当然,这可能是操作系统版本的问题,我在安装了iOS 8.4.1的iPhone 5上观察到了这一点。 - Cimlman

1
我认为时间戳是由设备端计算的,很可能与卫星的时间戳无关。
CoreLocation 的工作方式完全不透明,苹果公司似乎不太可能让您访问 GPS 卫星时间戳等原始数据...

为了支持这个答案中的说法,即苹果不提供GPS时间戳,请参见苹果的回复:https://forums.developer.apple.com/message/205233#205233 - William Grand
损坏的链接... - BillF
1
@BillF https://developer.apple.com/forums/thread/70620 - Quentin Hayot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接