Android Ionic 2-根据每个请求检查互联网连接

Android Ionic 2-根据每个请求检查互联网连接,android,cordova,ionic2,Android,Cordova,Ionic2,我正在爱奥尼亚2上开发一个应用程序,我想检查每个请求的互联网连接,也就是说,我想在每次网络关闭或打开时收到一条即时消息 我的简单项目将有: 第1页-主页(转到另一页的按钮) 第2页-另一页 为此,我使用cordova插件网络信息。来自ionic 2文档: import {Network, Connection} from 'ionic-native'; // watch network for a disconnect let disconnectSubscription = Network.

我正在爱奥尼亚2上开发一个应用程序,我想检查每个请求的互联网连接,也就是说,我想在每次网络关闭或打开时收到一条即时消息

我的简单项目将有:
第1页-主页(转到另一页的按钮)
第2页-另一页

为此,我使用cordova插件网络信息。来自ionic 2文档:

import {Network, Connection} from 'ionic-native';

// watch network for a disconnect
let disconnectSubscription = Network.onDisconnect().subscribe(() => {
  console.log('network was disconnected :-( ')
});

// stop disconnect watch
disconnectSubscription.unsubscribe();


// watch network for a connection
let connectSubscription = 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(() => {
    console.log(Network.connection);
    if (Network.connection === Connection.WIFI) {
      console.log('we got a wifi connection, woohoo!');
    }
  }, 3000);
});

// stop connect watch
connectSubscription.unsubscribe();

问题是Network.onConnect().subscribe(())不检索任何内容。这是实现我的目标的最佳方式?

代码的问题是,在订阅网络更改后,您正在调用unsubscribe方法。如果调用
connectSubscription.unsubscribe()
您正在告诉爱奥尼亚,现在您不关心网络连接状态的更改。请删除2个取消订阅方法,您的代码应该不会有问题

另外,subscribe和unsubscribe方法仅侦听更改,因此要检查连接,请直接使用比较代码

if (Network.connection === 'wifi') {
    // do some api work
}

让我知道它是否有效。

您的代码的问题是,您在订阅网络更改后调用了unsubscribe方法。如果您调用
connectSubscription.unsubscribe()
您正在告诉爱奥尼亚,现在您不关心网络连接状态的更改。请删除2个取消订阅方法,您的代码应该不会有问题

另外,subscribe和unsubscribe方法仅侦听更改,因此要检查连接,请直接使用比较代码

if (Network.connection === 'wifi') {
    // do some api work
}

让我知道它是否有效。

作为一个评论,而不是一个答案,我认为网络插件对于这种检测来说并不可靠,因为你的用户可能实际上连接到一个没有连接的路由器,并且仅仅因为有一个wifi链接处于活动状态,该插件将指示存在有效连接。我正在使用这也是一个解决方案。只是作为一个评论,而不是一个答案,我不认为网络插件对于这种检测是真正可靠的,因为你的用户实际上可能连接到一个没有连接的路由器,并且仅仅因为有一个wifi链接处于活动状态,插件将指示存在有效的连接。我正在一个这个问题的解决方案也是如此。