2012-05-07 20 views
6

Muszę powiadomić użytkownika o następujących warunkach;Sposób ostrzegania użytkownika, gdy nie ma połączenia z Internetem

  1. Upłynął limit czasu żądania
  2. Brak połączenia z Internetem
  3. Nie można połączyć się z serwerem

Oto kod; Jak uchwycić następujące warunki, kiedy wystąpiły i ostrzec użytkownika?

failure: function (response) { 
    var text = response.responseText; 
    console.log("FAILED"); 
},success: function (response) { 
    var text = response.responseText; 
    console.log("SUCCESS"); 
} 

Próbowałem poniższy kod, aby sprawdzić, czy internet jest osiągalny, ale to nie działa

var networkState = navigator.network.connection.type 
    alert(states[networkState]); 
    if (networkState == Connection.NONE){ 
     alert('No internet '); 
    }; 

UPDATE **

dodałem następujących w moim indeksie. html, ale gdy wyłączę WIFI, nie widzę alarmu.

<script> 
function onDeviceReady() { 
    document.addEventListener("offline", function() { 
     alert("No internet connection"); 
    }, false); 
} 
</script> 
+0

Jaki błąd/ostrzeżenie jest wyrzucane w dzienniku konsoli? –

+0

Nic nie zostaje rzucone. – user1315906

Odpowiedz

1

Można użyć PhoneGap's NETWORK API

Przedmiotem sieci daje dostęp do komórkowej, a połączenie WiFi informacji urządzenia.

Można przetestować go w następujący sposób

function onDeviceReady() { 
     navigator.network.isReachable("phonegap.com", reachableCallback, {}); 
    } 

// Check network status 
// 
function reachableCallback(reachability) { 
    // There is no consistency on the format of reachability 
    var networkState = reachability.code || reachability; 
    var states = {}; 
    states[NetworkStatus.NOT_REACHABLE] = 'No network connection'; 
    states[NetworkStatus.REACHABLE_VIA_CARRIER_DATA_NETWORK] = 'Carrier data connection'; 
    states[NetworkStatus.REACHABLE_VIA_WIFI_NETWORK] = 'WiFi connection'; 

    alert('Connection type: ' + states[networkState]); 
    } 
+0

Gdzie należy dodać powyższe funkcje ('onDeviceReady', 'reachableCallback'). Czy to w 'app.js'? – user1315906

+0

Możesz bezpośrednio zawrzeć 'navigator.network.isReachable (" phonegap.com ", reachableCallback, {});' linia, w której chcesz przetestować połączenie sieciowe i dodać funkcję zwrotną. –

+2

Metoda isReachable została wycofana z najnowszej wersji PhoneGap. –

19

Najlepszą rzeczą do zrobienia jest, aby słuchać „offline” imprezy. Gdy pojawi się zdarzenie w trybie offline można ostrzec użytkownika i podjąć wszelkie niezbędne kroki, aby zapisać dane, itp

Przykładowo, swój „deviceready” callback:

document.addEventListener("offline", function() { 
    alert("No internet connection"); 
}, false); 

Kod ten powinien działać na większości wszystkich wersjach PhoneGap. Od co najmniej wydania 1.0.

+1

+1 Dobra odpowiedź :) –

+0

Mam zaktualizowane moje pytanie. Proszę spojrzeć. – user1315906

+1

Upewnij się, że masz uprawnienia INTERNET i READ_PHONE_STATE w pliku manifest.xml. Ponadto, jeśli niedawno zaktualizowałeś PhoneGap do wersji 1.6 lub 1.7, upewnij się, że twój plik plugins.xml odsyła do "NetworkStatus", a nie "Network Status", nazwa została zmieniona, aby usunąć spację. –

3

Dokładnie jak Simon powiedział, można użyć

document.addEventListener("offline", youCallbackFn, false); 

czy można przesłuchać właściwość logiczną

navigator.onLine 

(powinien powrócić prawda czy fałsz)

Jednak ta technika powie czy urządzenie jest podłączone. Zastrzeżenie jest takie, że urządzenie może być podłączone do sieci Wi-Fi, ale router może być offline. W takim przypadku skorzystaj z mechanizmu odpytywania, na przykład o aktualnym terminie ważności: Ext.Ajax.request. Limit czasu wygasł = offline.

1

Możesz dodać "Ext.device.Connection" w app.js swojej aplikacji.I sprawdzić, czy urządzenie jest w trybie online lub offline za pomocą kodu:

if (Ext.device.Connection.isOnline()) { 
     alert('Connected to internet'); 
     } 
     else{ 
     alert('You are not connected to internet'); 
     } 
0

Wystarczy Udostępnij ten w tagu

<body onoffline="alert('PLEASE CHECK YOUR INTERNET SETTING');"> 
Powiązane problemy