【发布时间】:2012-07-11 14:23:16
【问题描述】:
我有一个允许用户自动登录的应用。我的老板想要的是,当应用程序启动时,应用程序需要测试与我们服务器的连接(不仅仅是测试是否有 WiFi 或 3G 网络)。我借了苹果的Reachability 样品,它有效。
一个问题是花费的时间太长,尤其是在启动时。我在没有互联网连接的本地无线网络上尝试了它,花了我将近半分钟的时间。由于在 -ViewDidLoad() 中调用了自动登录,因此在那半分钟内,ui 没有加载。花那么长时间是不可接受的。更糟糕的是,如果我的应用加载时间过长,iOS 甚至可能会关闭应用。
此外,我的应用中有很多 Web 服务调用。我知道每个 Web 服务调用都有可能失败,因为即使用户从一个地方到另一个地方走一小段路,iPhone/iPad 也很容易失去或获得连接。我个人不喜欢它,但这是我老板要我做的,我可能必须经常在应用程序中测试连接。
所以我在这里寻找的是一种非常快速(在几秒钟内)检测连接的方法,或者是一种在幕后进行而不影响用户体验的方法。
有人有建议吗?
感谢您花时间阅读我的问题。
【问题讨论】:
-
可能是服务器问题?我在我的应用程序中使用了类似的可达性代码,它运行良好。当用户单击登录时,我触发了一个 checkServerAvailability 方法,如果它返回 false,则显示一个警报。所有这一切都在一瞬间发生 - 永远不会超过一秒钟......
-
您是否真的断开了互联网或设备没有任何连接(例如您关闭了设备上的 wifi)?我用于测试的是没有互联网连接的无线路由器。所以设备认为它连接到wifi。如果我运行可达性示例,它将显示 localWiFi 和 TCP/IP 路由都可用。
-
来自文档:当应用程序发送到网络堆栈的数据包可以离开本地设备时,远程主机被认为是可访问的。可达性并不能保证数据包会真正被主机接收到。
标签: iphone ios ipad networking reachability