我们正在使用需要在Android,iOS和Windows 10 Mobile上运行的Ionic / cordova构建应用程序。
目标是注册开始和停止事件,我们将需要注册此事件的确切时间和地点。
严重关注用户会修改手机上的时间设置以发送虚假数据。
只要这些事件立即发送到服务器,我们就可以使用服务器时间来验证用户发送给我们的内容。但是还需要能够在离线时工作。
我们首先想到的是使用GPS时间。在cordova中,position对象具有时间戳。 https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-geolocation/
但在进一步阅读here和here之后,这不一定是GPS服务器的时间,也只是当地时间。我已经阅读了有关使用设备正常运行时间的解决方法,但是一旦重新启动,这将无法正常工作。但大多数谈话都是几年之久。
目前我们认为简单方法是将离线发送的事件标记为“可疑”。
有没有其他方法可以准确地确定离线时间而没有用户篡改的风险?
答案 0 :(得分:0)
Haven自己没有尝试过,但是如同在SO中所说的那样从网络提供商那里获取时间呢:I want to get time from GSM network
long networkTS = locMan.getLastKnownLocation(LocationManager.NETWORK_PROVIDER).getTime();
getLastKnowLocation返回的时间可能是旧的,如果你想要当前的话 时间使用
locMan.requestSingleUpdate() and pass the network provider
但是,这可能无法在iOS或Windows中使用。