9
votes

Comment vérifier le périphérique est en ligne ou hors ligne téléphonique

Quel est le moyen le plus simple de vérifier si le périphérique (smartphone) est en ligne ou hors ligne. Je travaille avec PhoneGap, JQuery Mobile. J'ai trouvé celui-ci.

if(deviceoffline)
  getDataFromLokalDatabase();
else
  getDataFromInternet();


0 commentaires

5 Réponses :


10
votes

Vous pouvez utiliser navigator.onLine :

var isOffline = 'onLine' in navigator && !navigator.onLine;

if ( isOffline ) {
    //local db
}
else {
    // internet data
}


2 commentaires

D'accord, je teste normal sur le chrome navigateur et obtenir seulement faux. Mais je construis l'application avec PhoneGap et de le tester sur mon smartphone et il fonctionne. NULL Merci. U m'a beaucoup aidé :)


navigator.onLine ne fonctionne pas fiable, du moins pas dans mon application PhoneGapp (Nexus 4 avec Android 5); navigator.onLine est un attribut pris en charge bien. Je trouve aussi cette question connexe: stackoverflow.com/questions/ 14283124 / ... .



2
votes

Utilisation de jQuery Faites un appel AJAX et vérifiez le code d'erreur, si vous obtenez un code d'erreur comme 0 L'appareil est hors ligne

$.ajax({
    //your ajax options
    error: function (request) { 
         if (request.status == 0) {
            alert("you're offline");
        }
    }
});


2 commentaires

Statut 0 signifie que le serveur ne répond pas à la demande. Ce peut être parce que l'appareil est en mode hors connexion, mais ne signifie pas nécessairement qu'il est.


Toutefois, dans la majorité des cas ce que vous souciez de savoir si votre application peut ou non communiquer avec votre serveur ... Donc, cela est pertinent!



0
votes

OnLine natif est un peu fragile, en particulier dans un environnement d'applications Web .. mais peut être utilisé pour un premier contrôle sur pageLoad, mais il est un peu inutile alors que si vous arrivez à ce point, vous disposez d'une connexion Internet.

essayer de ajax quelque chose est beaucoup plus fiable.


0 commentaires

12
votes

Ceci est le code à l'aide du code Native PhoneGap:

function checkInternet() {

    var networkState = navigator.connection.type;

    if(networkState == Connection.NONE) {

        onConnexionError();
        return false;

    } else {

       return true;
    }
}


1 commentaires

vous devriez vérifier Connection.UNKNOWN et



1
votes

Attention, tout navigator.onLine est la solution la plus simple, il ne se comporte pas de manière cohérente sur tous les navigateurs . Sur Chrome, il vous dira qu'il est en ligne si vous avez un câble LAN dans, même si vous avez pas Internet.

Vous pouvez utiliser le plugin -informations sur le réseau

Vous pouvez également essayer de faire une demande d'AJAX à votre serveur; en général, vous voulez savoir si vous êtes hors ligne, car dans ce cas, vous ne pouvez pas communiquer avec le serveur , donc « hors ligne » signifie souvent « pas en mesure de communiquer avec le serveur » (qui peut aussi être causé par votre serveur étant hors ligne). Jouer avec les délais d'attente ou plusieurs demandes est également utile si vous avez besoin de vérifier la qualité de la bande passante ou un lien.

Hors ligne ne signifie pas la même chose pour tous les cas d'utilisation, vous devez d'abord savoir qui des techniques ci-dessus est le mieux adapté pour vous, puis mettre en œuvre une ou plusieurs d'entre eux.

Ce que je veux faire est de vérifier la connexion Internet et de décider sur le point d'obtenir les données de l'Internet ou de l'appareil base de données locale.

Il semble que la vérification du lien avec votre serveur via une demande est la meilleure option pour vous.


0 commentaires