CLLocation Временная метка доли второго бага? - PullRequest
0 голосов
/ 26 июня 2019

Для моего приложения для отслеживания фитнеса на iOS мне нужны метки времени с точностью до тысячной доли секунды. Я не уверен, является ли это ошибкой или нет, но по какой-то причине временная метка, которую я получаю при каждом обновлении местоположения, начинается нормально, давая мне доли секунды, которые все разные, но как только у них есть хорошая блокировка на GPS каждый метка времени имеет те же доли секунды. Я не уверен, что что-то изменилось с iOS, потому что до недавнего времени это работало нормально. Локации также фильтруются с горизонтальной точностью до 20 метров.

Вот пример меток времени, использующих формат yyyy-MM-dd HH:mm:ss.SSSSSS

Timestamp: 2019-06-26 12:07:21.168000
Timestamp: 2019-06-26 12:07:22.118000
Timestamp: 2019-06-26 12:07:23.068000
Timestamp: 2019-06-26 12:07:25.000000
Timestamp: 2019-06-26 12:07:26.000000
Timestamp: 2019-06-26 12:07:28.000000
Timestamp: 2019-06-26 12:07:31.000000
Timestamp: 2019-06-26 12:07:33.000000
Timestamp: 2019-06-26 12:07:35.000000
Timestamp: 2019-06-26 12:07:38.000000
Timestamp: 2019-06-26 12:07:39.000000
Timestamp: 2019-06-26 12:07:41.000000
Timestamp: 2019-06-26 12:07:43.000000
Timestamp: 2019-06-26 12:07:52.000000

Кто-нибудь знает, что происходит?

1 Ответ

0 голосов
/ 26 июня 2019

Формат, который вы используете для печати даты, не имеет ничего общего с точностью. Класс CLLocation - это просто тип данных, который может содержать timeStamp, задокументированный как «Время, когда было определено это местоположение».

Существуют различные системы, которые могут создавать объекты CLLocation и могут вставлять любые timeStamp, которые они хотят. Это может даже включать округление. В вашем случае вы могли бы также смотреть на 2 разные системы в фоновом режиме, предоставляя вам данные о местоположении. Они могут использовать разные способы определения метки времени. Или, может быть, это одна система, которая в какой-то момент начинает срабатывать только тогда, когда начинается новая секунда, и использует ее в качестве метки времени.

В любом случае вам нужно проверить систему, которая создает экземпляры CLLocation, если она говорит о гарантии точности меток времени. Я бы не стал считать это очень точным. Вам нужно будет провести исследование, если существует система, которая может удовлетворить ваше требование: «Мне нужны метки времени, которые с точностью до тысячных долей».

...