2013-12-19 25 views
7

我已经尝试以下this Cordova文档指南,但它似乎并没有工作。检查与科尔多瓦的iOS应用程序的互联网连接Phonegap 3.3.0不工作

这里是我的代码:

我已经加入到<plugin name="NetworkStatus" value="CDVConnection" />​​3210。

,这剧本我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;似乎会导致问题,因为它没有运行下面的警告,我也曾尝试navigator.connection.type但同样的事情发生。

当我在Chrome中运行应用程序的控制台输出以下错误:

Uncaught ReferenceError: Connection is not defined 

有人知道如何解决这个问题?

干杯

+0

您是否在'index.html'文件中包含'Cordova.js' – 2013-12-19 13:00:29

+0

是的我有'' – smj2393

回答

21

我终于解决了问题! - 从无到有另起炉灶,做以下操作:

命令行:

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 

然后拖我的文件(HTML,javascript等等)到platforms/ios/www/文件夹。

在xcode中打开hello.xcodeproj

编辑config.xml并添加行:

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

然后在我的索引文件我用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> 

然后在iPhone/iPad的模拟器上运行它,它会输出“yescon”如果有连接,“nocon”如果没有连接!

希望这会有所帮助!

+2

更简单的方法,而无需从头开始 - http://stackoverflow.com/a/19688926/126600 – zack

+0

不工作我使用ios7和cordova 3.3使用connection.CELL – kavinhuh

+0

我没有使用connection.CELL,我检查是否有连接。 – smj2393

0

检查是否已包含在HTML的Cordova.js文件。

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

并更改您的项目App/Supporting Files/Cordova.plist

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

Cordova.plist已停产,被替换为我的config.xml,上面的代码基本上与插件代码相同 – smj2393

0

这个工作对我来说:

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

虽然我看的文档中,看起来像有使用这些线路的不同:

var networkState = navigator.network.connection.type;

navigator.network.connection。对于所有蜂窝数据,类型设置为Connection.CELL_2G

是不是var networkState = Connection.CELL_2G;

+0

我已经尝试过navigator.network.connection.type,我认为这是贬值或不适用于iOS,它说在底部科尔多瓦文档页面(用于3.3.0) - iOS怪癖 iOS无法检测蜂窝网络连接的类型。 对于所有蜂窝数据,navigator.connection.type设置为Connection.CELL。 – smj2393

+0

它说'Connection.CELL_2G',我不确定这是否会影响。 – JunM

+0

重建应用程序并通过www文件复制后,它仍然无法工作..当你说你得到它的工作是你使用科尔多瓦3.3.0? – smj2393

相关问题