如何在防火墙后同步 iOS 时间?

Posted

技术标签:

【中文标题】如何在防火墙后同步 iOS 时间?【英文标题】:How can I get iOS time synchronized behind a firewall? 【发布时间】:2014-08-08 22:09:18 【问题描述】:

我在公司网络后面安装了 iPod Touch,这些设备无法访问 Internet。我真的需要这些设备有最新的时间......

我想将 ios 设置为使用内部 NTP 服务器,但 AFAIK iOS 不允许我这样做。如果是这样,我对如何做到这一点全神贯注。我已经考虑了如何在这些设备上同步时间的其他选项:

    将我们内部网络上的 Apple 时间服务器 DNS 主机名欺骗到内部 NTP 服务器。老实说,我不确定这会有多困难,而且我猜想让我的网络管理员来做这件事是不可能的。

    我想知道我的应用程序是否可以在设备上设置时间。我可以在当前时间(对内部服务器)进行网络服务调用,然后在应用程序中进行设置。这可能吗?我需要深入研究 iOS API 并且对该平台不太熟悉。我确实有一个可以测试的继承的混合 Obj-C/Phonegap 应用程序。

对我的时间问题有什么其他建议吗?

【问题讨论】:

您不能以编程方式设置时间。我很好奇.. [NSDate date] 调用在这些设备上返回什么? 无赖。我没有尝试过使用 NSDate。我们的日期代码在 PhoneGap 内的 javascript 中运行。我们的日期可以追溯到 Unix 时代。我最好的猜测是设备的电池耗尽,然后失去它的时间。由于它们没有 Internet 连接,因此在用户手动更正之前它永远不会被设置。不幸的是,我几乎不可能重现。只看服务器上的日志。 【参考方案1】:

一种选择是获取 GPS 时间。试试这个。

#import <CoreLocation/CoreLocation.h>

CLLocation* gps = [[CLLocation alloc]
                   initWithLatitude:(CLLocationDegrees) 0.0
                   longitude:(CLLocationDegrees) 0.0];
NSDate* now = gps.timestamp;

【讨论】:

这对 iPod Touch 有用吗?如果我没记错的话,iPod Touch 不包括 GPS。另外,我不希望我们会在室内获得 GPS 接收,或者这里发生了什么我不明白的事情?谢谢。 ooooh... 是的.. 你是对的.. 我唯一的其他建议是在您的服务器上创建一个 api 以返回时间.. 它显然会被网络延迟所抵消。对不起 CLLocation.timestamp 不是 GPS 时间,遗憾的是它只是系统时间。

以上是关于如何在防火墙后同步 iOS 时间?的主要内容,如果未能解决你的问题,请参考以下文章

如何配置两个MySQL数据库之间的主从同步功能?

如何配置两个MySQL数据库之间的主从同步功能?

mysql主从同步与防火墙端口的设定

PA防火墙版本升级

paloalto防火墙版本升级

如何在(签名的)联网应用程序运行时抑制防火墙警告(来自 Xcode)