2013-12-19 7 views
7

Ich habe versucht, folgende this Leitfaden Cordova Docs, aber es scheint nicht zu funktionieren.Überprüfen Sie die Internetverbindung in iOS App mit Cordova Phonegap 3.3.0 funktioniert nicht

Hier ist mein Code:

I <plugin name="NetworkStatus" value="CDVConnection" />-config.xml hinzugefügt haben.

und dieses Skript zu meinem index.html:

<script type="text/javascript"> 


     document.addEventListener("deviceready", onDeviceReady, false); 

     // device APIs are available 
     // 
     function onDeviceReady() { 
      alert("1"); // runs this alert 
      checkConnection(); 
     } 

     function checkConnection() { 
      var networkState = Connection.CELL; 
      alert("2"); // doesn't run this 

      var states = {}; 
      states[Connection.UNKNOWN] = 'Unknown connection'; 
      states[Connection.ETHERNET] = 'Ethernet connection'; 
      states[Connection.WIFI]  = 'WiFi connection'; 
      states[Connection.CELL_2G] = 'Cell 2G connection'; 
      states[Connection.CELL_3G] = 'Cell 3G connection'; 
      states[Connection.CELL_4G] = 'Cell 4G connection'; 
      states[Connection.CELL]  = 'Cell generic connection'; 
      states[Connection.NONE]  = 'No network connection'; 

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

    </script> 

var networkState = Connection.CELL; scheint das Problem zu verursachen, da es nicht die folgende Warnung läuft, ich habe auch versucht, navigator.connection.type aber das Gleiche passiert.

Wenn ich die App in Chrome die Konsole ausführen gibt die folgende Fehlermeldung:

Uncaught ReferenceError: Connection is not defined 

Jeder weiß, wie dieses Problem zu lösen?

Prost

+0

Haben Sie 'Cordova.js' in Ihrer' index.html' Datei –

+0

Ja, ich eingeschlossen haben '' – smj2393

Antwort

21

Ich habe endlich das Problem gelöst !! - durch alle immer wieder von vorne anfangen und wie folgt vorgehen:

Befehlszeile:

sudo npm install -g cordova 
cordova create hello com.example.hello HelloWorld 
cd hello 
cordova platform add ios 
cordova platforms ls //This will list ios 
cordova plugin add org.apache.cordova.network-information 
cordova build 

Dann meine Dateien per Drag (HTML, Javascript etc.) in den platforms/ios/www/ Ordner.

Öffnen Sie hello.xcodeproj in xcode.

bearbeiten config.xml und fügen Sie die Zeilen:

<feature name="NetworkStatus"> 
    <param name="ios-package" value="CDVConnection" /> 
</feature> 

Dann in meiner Index-Datei habe ich die JavaScript:

<script type="text/javascript"> 
     document.addEventListener("deviceready", onDeviceReady, false); 
     // device APIs are available 
     function onDeviceReady() { 
      if(navigator.network.connection.type == Connection.NONE){ 
       alert("nocon"); 
      }else{ 
       alert("yescon"); 
      } 
     } 
    </script> 

Dann ist es im Simulator iPhone/iPad laufen und es wird ausgegeben "yescon" wenn es eine Verbindung gibt und "nocon" wenn nicht !!

Hoffe, das hilft!

+2

ein einfacher Ansatz, ohne die Notwendigkeit, von Grund auf neu zu starten - http://StackOverflow.com/a/19688926/126600 – zack

+0

funktioniert nicht Ich benutze ios7 und cordova 3.3 benutze connection.CELL – kavinhuh

+0

Ich habe keine Verbindung verwendet. ZELL, ich habe überprüft, ob es eine Verbindung gab. – smj2393

0

Überprüfen Sie, ob Sie Ihre Cordova.js Datei in html aufgenommen haben.

<script type="text/javascript" src="cordova.js"></script> 

Und ändern Sie App/Supporting Files/Cordova.plist Ihres Projekts.

<key>Plugins</key> 
    <dict> 
    <key>NetworkStatus</key> 
    <string>CDVConnection</string> 
</dict> 
+0

Cordova.plist wurde unterbrochen und wurde meine config.xml ersetzt, der Code oben ist im Grunde der gleiche wie der Plugin-Code – smj2393

0

Dies funktioniert für mich:

if(navigator.network.connection.type == Connection.NONE){ 
//no connection 
}else{ 
//You are connected. 
} 

Obwohl ich in der Dokumentation suchen und sieht aus wie ein Unterschied ist mit folgenden Zeilen:

var networkState = navigator.network.connection.type;

navigator.network.connection. type ist für alle Mobilfunkdaten auf Connection.CELL_2G eingestellt.

Wäre es var networkState = Connection.CELL_2G;?

+0

Ich habe es mit navigator.network.connection.type versucht, ich denke, das ist abgeschrieben oder funktioniert nicht mit iOS es heißt am Ende der die Cordova Docs-Seite (für 3.3.0) - iOS Quirks iOS kann den Typ der Mobilfunknetzverbindung nicht erkennen. navigator.connection.type ist auf Connection.CELL für alle Mobilfunkdaten eingestellt. – smj2393

+0

Es heißt 'Connection.CELL_2G', ich bin mir nicht sicher, ob das wichtig ist. – JunM

+0

Nach dem Neuaufbau der App und dem Kopieren über die www-Dateien funktioniert es immer noch nicht. Als Sie sagten, dass es funktioniert hattest, haben Sie cordova 3.3.0 verwendet? – smj2393

Verwandte Themen