引力引擎 SDK 会默认使用客户端本机时间作为事件发生时间,如果用户手动修改设备时间会影响到您的业务分析(尤其是漏斗分析)的准确性,此时可以通过校准时间操作保证事件发生时间的准确性。SDK提供了时间戳和NTP两种时间校准方式。
1. 通过时间戳校准
您可以通过调用 calibrateTime 方法传入从服务端获取的当前时间戳对 SDK 的时间进行校准。此后,所有未指定时间的调用,包括事件数据和用户属性设置操作,都会使用校准后的时间作为发生时间。
代码示例
// 1733169963000 为当前 unix 时间戳,单位为毫秒,对应北京时间 2024-12-03 04:06:03
GravityEngineSDK.calibrateTime(1733169963000);
2. 通过 NTP 服务器校准
您可以通过调用 calibrateTimeWithNtp 方法传入NTP服务器地址,之后 SDK 会尝试从传入的 NTP 服务地址中获取当前时间,并对 SDK 时间进行校准。如果在默认的超时时间(3 秒)之内,仍未获取到 NTP 服务器返回的正确结果,后续将使用本地时间上报数据。
代码示例
// 使用阿里云 NTP 服务对时间进行校准
GravityEngineSDK.calibrateTimeWithNtp("ntp.aliyun.com");
使用 NTP 服务进行时间校准存在一定的不确定性,建议您优先考虑用时间戳校准的方式
您需要谨慎地选择您的 NTP 服务器地址,以保证网络状况良好的情况下,用户设备可以很快的获取到服务器时间
- 关于 NTP 服务器相关更多信息请参考:https://dns.icoa.cn/ntp/