2012-11-13 9 views
5

Nella home page, ho utilizzato la funzione registerForNetworkStatusChangeNotif() (which I borrowed from MSDN) per la registrazione delle modifiche alle notifiche di rete. La funzione aggiunge un listener di eventi networkstatuschanged e funziona correttamente solo per quella pagina, ovvero viene visualizzato un errore quando la connettività viene interrotta e la pagina viene aggiornata automaticamente al ripristino della connettività -Come verificare se la connettività Internet è disponibile per più pagine in Windows 8 Store HTML/JS app?

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

Come devo gestire il controllo della disponibilità di Internet per altre pagine?

Ho provato a registrare questa funzione in default.js in modo che sia disponibile per tutte le pagine. La mia app utilizza la funzione di geolocalizzazione e l'evento statico si scontra con l'evento networkstatuschanged e la mia app non mostra la perdita di errori di connettività Internet. Come posso risolvere questo problema in modo che l'indisponibilità della connettività Internet sia gestita correttamente.

+0

Potrebbe fornire un po 'più di contesto per vedere come si aggiunge questo listener di eventi? Lo hai rimosso da qualche parte? –

risposta

4

È necessario ascoltare un evento specifico. E quando spara, controlli la connettività internet.

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: 
      ... 
    } 
    ... 
} 
2

Mi aspetto che la 'pagina di aggiornamento' automatica sia dovuta all'apposita associazione. Per avere più controllo, è necessario associare l'oggetto Networking alla pagina 'ready' e disconnetterlo di nuovo alla pagina 'scaricare'. Per esempio:

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(...) 
} 

Tutto quello che sarebbe quindi bisogno è quello di definire il metodo del gestore '_doSomething()' per esaminare i dettagli di connettività passati per l'oggetto 'evento' e innescare il vostro aggiornamento di logica vincolante/conseguenza.

Spero che questo aiuti!

Problemi correlati