Xamarin.ios 通过Monotouch在iPhone上切换3G和WiFi

Xamarin.ios 通过Monotouch在iPhone上切换3G和WiFi,xamarin.ios,wifi,3g,Xamarin.ios,Wifi,3g,我有一个使用MonoTouch构建的本地应用程序,它使用web服务与业务层通信。当设备在3G和WiFi之间切换时,我试图获得更好的性能。似乎如果应用程序以WiFi启动,它必须继续以WiFi运行,并且不能切换到3G,反之亦然。如果我在3G下运行应用程序,我可以启动飞行模式关闭连接并使用Wifi,我的应用程序将不会与服务通话。如果我先运行Wifi,然后关闭它并使用3G,它将不会与我的服务层通信 如果我关闭应用程序并再次启动它,它将正常工作。我甚至可以使用Safari,并通过设备上的浏览器点击相同的服

我有一个使用MonoTouch构建的本地应用程序,它使用web服务与业务层通信。当设备在3G和WiFi之间切换时,我试图获得更好的性能。似乎如果应用程序以WiFi启动,它必须继续以WiFi运行,并且不能切换到3G,反之亦然。如果我在3G下运行应用程序,我可以启动飞行模式关闭连接并使用Wifi,我的应用程序将不会与服务通话。如果我先运行Wifi,然后关闭它并使用3G,它将不会与我的服务层通信

如果我关闭应用程序并再次启动它,它将正常工作。我甚至可以使用Safari,并通过设备上的浏览器点击相同的服务,以验证是否有到达目的地的路线,但我的应用程序在恢复原始连接类型之前仍不会与服务通话。我没有做任何事情来保持联系。只需按需打开和关闭HttpWebRequests。网络可达性标志始终表示我有可用的路由


该应用程序是一个人们走出连接到WiFi的大楼,可能走得足够远,以至于失去WiFi和3G服务的应用程序。由于某种原因,它不会切换,我不理解,因为我认为它应该自动发生。

您可以确保特定站点的网络如下所示:

 MonoTouch.ObjCRuntime.Runtime.StartWWAN (new Uri ("http://www.google.com"));

我不认为这是你的应用程序的错。当你提到在3G和Wifi之间切换时,Safari能工作吗?您可以尝试访问Web服务使用的Safari中的相同url。是的,Safari工作正常。这就是我感到困惑的部分原因。网络可达性标志可以看到连接,我可以通过Safari到达,但由于某些原因,除非我切换回原始连接类型,否则从我的应用程序发出的请求不会通过。在尝试任何呼叫之前,我使用网络可达性标志确定我有到主机的路由。正在使用(var networkReachability=新的networkReachability(主机名))。。。我的理解是,如果我使用StartWan,就会尝试唤醒WiFi。对吗?不管是3G还是WiFi。我只是想让它们中的任何一个在故障转移时工作,而不必重新启动我的应用程序。任何额外的建议都将不胜感激。所以听起来你在Wifi上使用的URL与在3G上不同,对吗?你能一直使用公共URL吗?如果是这样的话,你根本不需要考虑转换。