3

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

我浏览了许多论坛帖子,但没有任何帮助。我找到了这篇文章,并认为我可以根据需要参考它使用。但没有帮助。

然后我发现了这个:-

ConnectState.Disconnected

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

请帮忙。

谢谢你

4

2 回答 2

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 连接,但如果失败,它将自动(无需用户干预)通过可用网络连接。

感谢史蒂夫分享的知识。我希望这对其他有类似要求的人有所帮助。

于 2012-08-10T09:23:15.037 回答
1

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

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


更新:正如在另一个答案中所指出的,带有 Windows Phone 7.1 SDK 的 HttpWebRequest 类的新方法 SetNetworkPreference() 出现了。所以,确实有可能,对不起我的错误信息。

于 2012-08-03T15:58:08.087 回答