5

ホームページでは、ネットワーク通知の変更を登録するために registerForNetworkStatusChangeNotif() 関数 ( MSDN から借用) を使用しました。この関数はイベント リスナー networkstatuschanged を追加し、そのページだけで正常に動作します。つまり、接続が中断されるとエラーが表示され、接続が回復するとページが自動的に更新されます。

var networkInfo = Windows.Networking.Connectivity.NetworkInformation; ... networkInfo.addEventListener("networkstatuschanged", onNetworkStatusChange);

他のページのインターネット可用性チェックをどのように処理すればよいですか?

この関数を default.js に登録して、すべてのページで使用できるようにしました。私のアプリは地理位置情報機能を使用しており、statuschanged イベントが networkstatuschanged イベントと衝突し、私のアプリはインターネット接続の喪失エラーを表示できません。インターネット接続が利用できない場合に適切に処理されるように、この問題を解決するにはどうすればよいですか?

4

2 に答える 2

3

特定のイベントをリッスンする必要があります。起動したら、インターネット接続を確認します。

var networkInformation = Windows.Networking.Connectivity.NetworkInformation;
...

ready: function(element, options)
{
   // Registering for connection change
   networkInformation.addEventListener("networkstatuschanged", this.onNetworkStatusChanged);
   ...
}

unload: function()
{
   // Unregistering for connection change
   networkInformation.removeEventListener("networkstatuschanged", this.onNetworkStatusChanged);
   ...
}

onNetworkStatusChanged: function(eventArgs)
{
    // Retrieve the InternetConnectionProfile
    var internetConnectionProfile = networkInformation.getInternetConnectionProfile();
    // Accesses the NetworkConnectivityLevel
    var networkConnectivityLevel = internetConnectionProfile.getNetworkConnectivityLevel();
    // Switch on NetworkConnectivityLevel
    switch (networkConnectivityLevel) {
        case Windows.Networking.Connectivity.NetworkConnectivityLevel.none:
           ...
        case Windows.Networking.Connectivity.NetworkConnectivityLevel.localAccess:
           ...
        case Windows.Networking.Connectivity.NetworkConnectivityLevel.constrainedInternetAccess:
           ...
        case Windows.Networking.Connectivity.NetworkConnectivityLevel.internetAccess:
           ...
    }
    ...
}
于 2013-04-10T09:56:51.140 に答える
1

自動ページ「更新」はデータバインディングによるものだと思います。より詳細に制御するには、「ready」ページでネットワークオブジェクトにバインドし、「unload」ページで再度バインドを解除する必要があります。例えば:

var networkInfo = Windows.Networking.Connectivity.NetworkInformation;
this.networkHandler = this._doSomething();
...
..

ready: function(element, options)
{
   networkInfo.addEventListener(this.networkHandler);
   ...
   ..
}

unload: function()
{
   networkInfo.removeEventListener(this.networkHandler);
   ...
   ..
}

_doSomething : function(event)
{
    // Examine the 'event' object and perform 'refresh' accordingly
    // Most likely a call to WinJS.Binding.processAll(...)
}

次に必要なのは、ハンドラーメソッド'_doSomething()'を定義して、'event'オブジェクトによって渡された接続の詳細を調べ、それに応じてバインディング/リフレッシュロジックをトリガーすることです。

お役に立てれば!

于 2013-01-11T19:32:23.243 に答える