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 経由で接続しようとしますが、それが失敗した場合は (ユーザーの干渉なしに) 利用可能なネットワーク経由で自動的に接続します。

知識を共有してくれた Steve に感謝します。これが、同様の要件を持つ他の人に役立つことを願っています.

于 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 に答える