我有一个应用程序,一旦用户启动该应用程序并接受EULA,注册过程就会开始,要完成注册过程以获得user_id,该应用程序必须访问3台服务器。第一台服务器必须通过3G进行连接,即使wi-fi可用,用户也会收到禁用wi-fi的消息,只连接到3G网络以继续注册。所有的代码都已到位,应用程序也运行良好。但新的要求是忽略无线网络,只使用3G,这样用户就不会被需要更改手机设置的信息干扰。
我浏览了很多论坛帖子,但都无济于事。我发现了这个帖子,并认为我可以根据自己的需要推荐它使用。但无济于事。
然后我发现了这个:-
ConnectState.Disconnected
但我不知道我是否可以在第一次请求之前使用它来禁用wi-fi,然后再启用wi-fi。
请帮忙。
谢谢
现在,我之所以将上一篇文章标记为未回答,是因为我找到了一种方法,可以强制我的应用程序通过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分享的知识。我希望这能帮助其他有类似要求的人。
简短回答:Windows Phone不可能。因此,应用程序不应该做用户没有明确允许的事情。当有Wi-Fi时,大多数时候都不希望通过3g连接。这些数据计划的价格可能很高,用户不希望在启用Wi-Fi的情况下有应用程序使用它。因此,他不得不自己禁用Wi-Fi以保持完全控制。
只是好奇:为什么通过3g连接对这个特定的服务器如此重要??
更新:正如在另一个答案中所指出的,在Windows Phone 7.1 SDK中出现了HttpWebRequest类的新方法SetNetworkPreference()。所以,确实有可能,对我的错误信息感到抱歉。