AI-ready documentation
时间校准
说明 Gravity Engine Unity SDK 如何通过时间戳或 NTP 服务器校准事件发生时间,避免设备时间被修改影响分析。
1. 通过时间戳校准
SDK 默认会使用本机时间作为事件发生时间上报,如果用户手动修改设备时间会影响到您的业务分析,您可以使用从服务端获取的当前时间戳对 SDK 的时间进行校准。此后,所有未指定时间的调用,包括事件数据和用户属性设置操作,都会使用校准后的时间作为发生时间。
代码示例
// 时间戳,单位毫秒,对应时间为 1668982523000(2022-11-21 06:15:23)
GravityEngineAPI.CalibrateTime(1668982523000);2. 通过 NTP 服务器校准
我们也提供了从 NTP 获取时间对 SDK 校准的功能。您需要传入您的用户可以访问的 NTP 服务器地址。之后 SDK 会尝试从传入的 NTP 服务地址中获取当前时间,并对 SDK 时间进行校准。如果在默认的超时时间(3 秒)之内,未获取正确的返回结果,后续将使用本地时间上报数据。
除了以上校准时间接口外,SDK 还提供了所有用户属性接口的时间函数重载,您可以在调用用户属性相关接口时,传入 DateTime 对象,则系统会使用传入的 DateTime 对象来设定数据的 time 字段。
代码示例
// NTP 时间服务器校准,如:time.apple.com
GravityEngineAPI.CalibrateTimeWithNtp("time.apple.com");- 使用 NTP 服务进行时间校准存在一定的不确定性,建议您优先考虑用时间戳校准的方式
- 您需要谨慎地选择您的 NTP 服务器地址,以保证网络状况良好的情况下,用户设备可以很快的获取到服务器时间
- 关于 NTP 服务器相关更多信息请参考:https://dns.icoa.cn/ntp/