连接到wifi网络时的事件监听器

时间:2018-03-27 14:32:58

标签: javascript android cordova phonegap

我正在使用cordova为Android构建应用程序。我想知道当用户连接到wifi网络时是否有任何方法可以添加事件监听器来通知我。例如,当他/她使用手机数据并连接到wifi网络时,我希望得到通知,并且当用户再次从wifi更改为数据时也会收到通知。

我能想到的唯一方法是每X毫秒创建一个setInterval并使用plugin cordova-plugin-network-information检查网络信息。但这样做似乎非常低效,我希望立即得到通知。

当网络发生变化时,有什么方法/插件可以添加事件监听器吗?

编辑:我没有使用离子,只是骨干和jquery。

谢谢!

2 个答案:

答案 0 :(得分:1)

如果您正在使用Ionic,那么您可以这样做:

// watch network for a connection
let connectSubscription = this.network.onConnect().subscribe(() => {
  console.log('network connected!');
  // We just got a connection but we need to wait briefly
   // before we determine the connection type. Might need to wait.
  // prior to doing any api requests as well.
  setTimeout(() => {
    if (this.network.type === 'wifi') {
      console.log('we got a wifi connection, woohoo!');
    }
  }, 3000);
});

// stop connect watch
connectSubscription.unsubscribe();

(来自Ionic Native Documentation的代码)

使用Cordova,有一个名为 cordova-plugin-network-information 的插件,您可以从Github下载

有了这个,你可以写这样的东西:

document.addEventListener("online", onOnline, false);

function onOnline() {
   if(checkConnection===Connection.WIFI){
      // Code
   }
}

function checkConnection() {
    var networkState = navigator.connection.type;

    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';

    console.log("Connection: "+states[networkState])

    return networkState
}

我没有测试过Cordova示例

答案 1 :(得分:1)

据我所知,只有当应用程序进入online/offline时才会收到通知,并通过互联网快速提醒确认我的疑问。我想知道连接类型的方法是使用setTimeoutsetInterval检查网络是否已更改。