在React Native Android如何在应用程序背景中检查互联网连接是否在线/离线?

时间:2017-03-24 05:40:16

标签: react-native react-native-android

我需要在应用程序背景时检查Internet连接

3 个答案:

答案 0 :(得分:8)

import { NetInfo } from 'react-native';

NetInfo.isConnected.fetch().then(isConnected => {
           if(isConnected)
           {
               console.log('Internet is connected');
           }
})

以上代码足以检查是否存在有效的网络连接

答案 1 :(得分:3)

NetInfo API用于检查互联网连接。

例如:NetInfo.isConnected.addEventListener('change', this._handleConnectionChange);

请参阅https://facebook.github.io/react-native/docs/netinfo.html了解详情。

答案 2 :(得分:0)

有时您已连接到Internet,但未在线。并且NetInfo无法检测到这种情况,并且以下代码的响应始终为真

NetInfo.isConnected.fetch().then(res=>{
    if(res) {
      setIsConnected()
    }
  })

这使我的应用程序进入无限循环并请求服务器,但没有响应。所以我通过将请求发送到我的一个api(不需要授权)来解决了这个问题,如果它有响应,我会将连接性设置为true。

请参见以下代码:

NetInfo.isConnected.fetch().then(res=>{
    if(res) {
      this.checkConnectivity()
    }
  })

,然后使功能checkConnectivity如下所示:

checkConnectivity(){
  return (
    Promise.resolve(
      getCategoriesApi().then(res=>{
        // console.log(res.data,"----------------is gettting info")
        setIsConnected()
      }).catch(err=>{
        // console.log(err.response,"-----------------not getting info")
      })
    )
   )
  }

getCategoriesApi在哪里:

Promise.resolve(Axios.get('my-url",mydata,myHeader()))

它现在可以正常工作。

希望它能帮助处于类似情况的人。