На многих устройствах (настольных и мобильных) часы неверны, поэтому при попытке определить время события по часам клиента результаты будут неточными. Службы аналитики, такие как Google Analytics и Mixpanel, рекомендуют использовать метку времени сервера, чтобы избежать этой неточности. В случае, если необходимы часы клиента (а не часы сервера), какое решение для этого случая? Например, в мобильном SDK решением может быть выполнение вызова API к серверу времени и игнорирование часов на устройстве.
Как Google Analytics/Mixpanel/и др. определить отметку времени события, когда часы неверны?
Ответы (1)
Как правило, поставщик аналитики использует отметку времени, когда был сделан запрос на отслеживание от клиента. Например, из документации Mixpanel:
Если свойство [дата] не включено в ваш запрос, Mixpanel будет использовать время поступления события на сервер.
Использование в автономном режиме более проблематично, см., например, этот вопрос — по умолчанию Google Analytics по-прежнему будет использовать отметку времени при получении события отслеживания.
В этом вопросе также упоминается параметр времени ожидания для записи событий, которые произошли в прошлом. Значение является относительным и указывает, сколько миллисекунд назад произошло событие. Это означает, что не имеет значения, является ли время клиента неправильным, пока оно продвигается с правильной скоростью.
Это оставляет проблему людей, переводящих свои часы между тем, когда событие произошло, и тем, когда оно отслеживается. Это, вероятно, достаточно редко, чтобы не быть большой проблемой на практике. Параметр очереди Google Analytics также игнорируется, если он слишком далеко в прошлом и, предположительно, в будущем.