【发布时间】:2011-12-13 18:21:42
【问题描述】:
我有一个使用 MonoTouch 构建的本机应用程序,它使用 Web 服务与业务层进行通信。当设备在 3G 和 WiFi 之间切换时,我试图获得一些更好的行为。似乎如果应用程序以 WiFi 启动,它必须继续以 WiFi 运行,并且不能切换到 3G,反之亦然。如果我在 3G 下运行应用程序,我可以启动飞行模式以关闭连接并启用 Wifi,并且我的应用程序不会与服务通信。如果我先运行 Wifi,然后将其关闭并启用 3G,它将不会与我的服务层对话。
如果我终止该应用程序并再次启动它,它将正常工作。我什至可以使用 Safari 并通过设备上的浏览器访问相同的服务,以验证是否有到达那里的路线,但我的应用程序仍然不会与服务对话,直到它恢复到原始连接类型。我没有做任何事情来保持联系。只需按需打开和关闭 HttpWebRequests。网络可达性标志始终表明我有可用的路线。
该应用程序是人们走出连接到 WiFi 的建筑物并且可能走得太远而失去 WiFi 和 3G 参与的应用程序。由于某种原因它没有切换,我不明白,因为我认为它应该自动发生。
【问题讨论】:
-
我不认为这是你的应用程序的错。像您提到的那样在 3G 和 Wifi 之间切换时,Safari 可以工作吗?您可以尝试在 Safari 中访问您的网络服务使用的相同 url。
-
是的,Safari 运行良好。这是我感到困惑的部分原因。网络可达性标志看到一个连接,我可以通过 Safari 到达那里,但由于某种原因,来自我的应用程序的请求不会通过,除非我切换回原始连接类型。
标签: xamarin.ios wifi 3g