Ionique: Vérifier la Connexion Internet à l'aide de Cordova
Je suis en train de travailler sur Ionique Cadre, et face à des questions à l'aide de la Apache Cordova Réseau API pour détecter la connexion internet dans l'Application Android.
J'ai parlé cette tutoriel et a également créé un projet de démonstration, qui fonctionne très bien.
J'ai suivi les étapes ci-dessous. [à partir du tutoriel]
ionic start testApp sidemenu
ionic platform add android
- Ouvrir
testApp/www/js/app.js
- Copiez et collez le code
if(window.Connection) { if(navigator.connection.type == Connection.NONE) { alert('There is no internet connection available'); }else{ alert(navigator.connection.type); } }else{ alert('Cannot find Window.Connection'); }
- Installer Le Plugin Cordova
cordova plugin add org.apache.cordova.network-information
- Construire
ionic build android
- Exécuter
ionic run android
Cela fonctionne bien
Question
- Copier Coller
www
demainproject
àtestApp
et suivez les étapes 6 et 7
Je reçois une alerte Cannot find Window.Connection
Après le copier-coller le app.js
ressemble à ceci
.run(function($ionicPlatform) {
$ionicPlatform.ready(function() {
//Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
//for form inputs)
if(window.cordova && window.cordova.plugins.Keyboard) {
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
}
if(window.StatusBar) {
//org.apache.cordova.statusbar required
StatusBar.styleDefault();
}
//check internet connection
//alert(window.Connection);
alert('Hi')
try {
alert('Naviagtor says'+navigator.connection.type);
}
catch(err) {
alert( 'Error '+ err.message)
//here i get 'Error cannot read property type of undefined'
}
if(window.Connection) {
if(navigator.connection.type == Connection.NONE) {
alert('There is no internet connection available');
}else{
alert(navigator.connection.type);
}
}else{
alert('Cannot find Window.Connection');
}
});
})
Le moment, j'ai copier-coller de ma app.js
et controllers.js
à la testApp/www/js
répertoire de l'ensemble de la chose explose.
Toute aide dans la mise au point est très apprécié.
Merci,
Note
J'ai cordova.js
dans index.html
.
J'ai re installé platforms
et plugins
après le copier coller.
merci pour la réponse, j'ai mis à jour le code ci-dessus. Comme vous l'avez dit, j'ai essayé de l'impression de la
navigator.connection.type
mais il semble que l'objet n'est pas définie.exécuter des plugins cordova ls.. est sms plugin répertoriés. Si pas de supprimer les plates-formes android/ios et re les ajouter
assurez-www de mainproject contient des plugins et aussi le plugin lequel vous avez installé.
le répertoire " www " ne contient pas le dossier plugins. C'est à l'extérieur du dossier www dans le
mainproject
OriginalL'auteur Incpetor | 2015-01-13
Vous devez vous connecter pour publier un commentaire.
J'ai résolu un problème similaire en utilisant ngcordova . Il vous donne une angulaires wrapper autour de l'plugin qui met en œuvre des promesses.
Souvent Cordova plugins ne sont pas prêts lorsque vous essayez de les appeler, à l'aide de la promesse de l'interface, vous pouvez éviter de tomber undefined erreurs.
J'ai volé l'exemple de la ngcordova page sur le réseau plugin ici.
$cordovaNetwork.getNetwork()
retourne0
au lieu deConnection.NONE
et$cordova.isOnline()
renvoie une erreur. Je suis toujours coincé avec ce.Avez-vous suivi les instructions d'installation avec soin et vous en cours d'exécution sur un appareil ou AVD? J'ai personnellement utilisé un appel d'essai vers mon serveur pour voir si j'ai une connexion. Puisque le fait d'avoir le wifi ne signifie pas que l'accès à internet. Peut-être écrire un appel vers le serveur et de gérer les retours pour voir si vous avez une connexion.
Utiliser $rootScope.$('$cordovaNetwork:hors ligne " et $rootScope.$('$cordovaNetwork:en ligne au lieu de vos auditeurs
OriginalL'auteur Armed10
Pour toute personne qui le visitent et avoir des problèmes avec l'obtention Armed10 la réponse de travail, vous voudrez peut-être vérifier le post que j'ai écrit qui va littéralement étape par étape, vous indiquant où et pourquoi vous devriez mettre un morceau de code (peut être utile si vous êtes juste de commencer avec l'Ionique): http://www.nikola-breznjak.com/blog/codeproject/check-network-information-change-with-ionic-famework/.
Aussi, j'ai fait l'exemple de code disponible gratuitement sur Github: https://github.com/Hitman666/IonicNetworkInfo.
edit: Comme par StackOverflow règles, je suis en ajoutant le contenu du poste ici aussi:
Étape par étape sur la façon de faire vous-même
Commencer une nouvelle Ionique projet en faisant:
Ensuite, modifiez le répertoire nouvellement créé IonicNetworkInfo:
Installer ngCordova avec Bower:
Si par hasard vous n'avez pas bower installé, vous pouvez l'installer avec npm:
Ouvrir la www/index.html fichier dans votre éditeur de texte favori, et ajouter la référence à ngCordova (juste au-dessus de la cordova.js le script):
Installer le ngCordova réseau plugin en exécutant la commande suivante dans votre Terminal/invite de Commande (vous devez le faire à partir de la racine du répertoire de votre application; ainsi, dans notre cas, le IonicNetworkInfo répertoire):
Pour vérifier si vous avez correctement installé le plugin, vous pouvez exécuter la commande suivante (à partir du répertoire racine – je ne vais pas répéter ce plus; quand je dis que vous devriez exécuter une commande dans le Terminal/invite de Commande qui, dans ce cas, signifie à partir du répertoire racine de l'application):
Vous devriez voir le résultat suivant:
Ouvrir la www/js/app.js fichier et ajouter ngCordova à la liste de dépendances, de sorte que, fondamentalement, la première ligne ressemble à ceci:
Créer un nouveau contrôleur dans le www/js/app.js fichier appelé MyCtrl, avec le contenu suivant:
Dans ce contrôleur de vous attacher un écouteur d'événement sur le deviceready (car il se peut que l'appareil n'aurait pas encore été initialisé lors de l'exécution de ce code) et vous obtenez les informations du réseau avec:
L'information, au sujet de la météo, vous êtes connecté à internet, qui est obtenu avec la ligne suivante:
Ensuite, vous vous inscrivez deux événements $cordovaNetwork:en ligne et $cordovaNetwork:en ligne, qui déclenchent lorsque l'appareil est en ligne/hors ligne. En eux, vous alors juste mettre à jour le $scope des variables ().
Juste pour la référence, l'ensemble du contenu de la www/js/app.js le fichier doit être:
Dans le index.html fichier, à l'intérieur de la ion-balise de contenu collez le contenu suivant:
Fondamentalement, ce que nous faisons ici, c'est de nous montrer le contenu de la variable de réseau (qui est fixé à la somme de portée via le contrôleur). Aussi, à l'aide de la ion-bascule composant de nous montrer le “je suis en ligne” /“je suis en mode hors connexion” notifications.
Juste pour la référence, le contenu de l'ensemble de la index.html fichier devrait ressembler à ceci:
Afin de tester cette application, vous devez l'exécuter sur votre appareil (parce que vous ne pouvez pas désactiver le réseau dans le simulateur iOS). Si vous avez un appareil Android connecté à votre ordinateur (et de tous les Kits de développement en place), vous pouvez exécuter les opérations suivantes pour les commandes à exécuter votre application sur votre appareil Android:
oui, c'est bien 🙂
Salut @Nikola, je rencontre le même problème mais la structure de mon code est un peu différent. Je voulais juste vous demander comment vous pouvez mettre en œuvre ce service de l'usine. J'ai inclus un peu plus en détail à propos de mon problème ici: stackoverflow.com/questions/40123495/.... Je suis à court, je veux créer une connexion en temps réel à surveiller l'état de ma demande, mais en dehors de setinerval (comme vu ici: stackoverflow.com/a/40201808), je n'ai vraiment aucune idée. S'il vous plaît aider!
OriginalL'auteur Nikola
suffit d'utiliser ce code dans votre app.js à l'intérieur .exécuter
OriginalL'auteur Ajeet Malviya
Avant d'appeler la "connexion", vous devez vérifier l'appareil:
OriginalL'auteur Sentence
Si vous avez mis à jour récemment (l'exécution de cordova 5.0), j'imagine la
cordova-plugin-whitelist
doit être installé. Après l'installation, ajoutez ceci à config.xml pour permettre à tous de http/s demandes :Shell:
Config.xml:
OriginalL'auteur Max