在WP7.5中强制应用程序通过Wi-Fi连接使用3G连接

时间:2012-08-03 10:47:25

标签: c# windows-phone-7 wifi windows-phone-7.1 3g

我有一个应用程序,一旦用户启动应用程序并ACCEPTS EULA然后注册过程开始,并完成注册过程以获取user_id应用程序必须命中3个服务器。第一个服务器连接必须通过3G发生即使Wi-Fi可用,用户也会收到禁用Wi-Fi的消息并仅连接到3g网络以继续注册。所有代码都已到位,应用程序也可以正常工作。但新的要求是忽略Wi-Fi并仅使用3G,这样用户就不会受到需要更改手机设置的信息的干扰。

我浏览了许多论坛帖子,但没有任何帮助。我发现 this post并认为我可以根据我的需要将其引用。但没有帮助。

然后我发现了这个: -

ConnectState.Disconnected

但我不知道我是否可以使用它来禁用wi-fi,直到第一个请求发出,然后启用wi-fi。

请帮忙。

谢谢

2 个答案:

答案 0 :(得分:2)

现在,为什么我没有标记上一篇文章因为没有答案,我找到了一种方法来强制我的应用程序通过Wi-Fi使用3G网络连接,最好的部分是,它只会在应用程序级别发生不是设备级别。当然,用户将收到通知,我们将使用3G网络进行注册。这是代码。

在我的httpconnection类post()方法中。在发起请求之前我正在做以下事情。

   HttpWebRequest myHttpWebRequest1 = (HttpWebRequest)WebRequest.Create(uri);
//the network preference depends on the requestID
            if (requestId == DataManager.REQ_REGISTRATION)
            {
                myHttpWebRequest1.SetNetworkPreference(NetworkSelectionCharacteristics.Cellular);
            }
            else
            {
                myHttpWebRequest1.SetNetworkPreference(NetworkSelectionCharacteristics.NonCellular);
            }

就这么简单。在其他情况下(不是我的要求),3G不是强制性的,而是首选的,应用程序尝试通过3G连接,但如果失败则会自动(无用户干扰)通过可用网络连接。

感谢Steve分享的知识。 我希望这有助于其他有类似要求的人。

答案 1 :(得分:1)

简短回答:Windows Phone无法使用。 作为一个原因,应用程序不应该能够执行用户未明确允许的操作。当有Wi-Fi时,大多数时候都不需要超过3g的连接。这些数据计划我的价格很高,用户在启用Wi-Fi时不会期望使用它的应用程序。所以他必须自己禁用Wi-Fi以保持完全控制。

只是好奇:为什么通过3g连接对于这个特定的服务器如此重要?


更新:如另一个答案中所述,出现了一个带有Windows Phone 7.1 SDK的HttpWebRequest-class的新方法SetNetworkPreference()。所以,确实有可能,抱歉我的错误信息。