我有一个应用程序,一旦用户启动应用程序并ACCEPTS EULA然后注册过程开始,并完成注册过程以获取user_id应用程序必须命中3个服务器。第一个服务器连接必须通过3G发生即使Wi-Fi可用,用户也会收到禁用Wi-Fi的消息并仅连接到3g网络以继续注册。所有代码都已到位,应用程序也可以正常工作。但新的要求是忽略Wi-Fi并仅使用3G,这样用户就不会受到需要更改手机设置的信息的干扰。
我浏览了许多论坛帖子,但没有任何帮助。我发现 this post并认为我可以根据我的需要将其引用。但没有帮助。
然后我发现了这个: -
ConnectState.Disconnected
但我不知道我是否可以使用它来禁用wi-fi,直到第一个请求发出,然后启用wi-fi。
请帮忙。
谢谢
答案 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()。所以,确实有可能,抱歉我的错误信息。