离子应用程序

时间:2016-08-06 13:59:34

标签: javascript angularjs ionic-framework

在我的Ionic应用程序中,我需要根据用户是离线还是在线执行某些操作。

我会在应用程序中使用$ cordovaNetwork插件来查找连接状态。但是,在我的笔记本电脑上进行开发时,我正在寻找一种简单的方法来测试连接(无需在设备上进行部署)。

所以,我想到使用navigator.onLine来测试离线/在线业务逻辑。但即使我在笔记本电脑上关掉wifi(没有连接笔记本电脑的LAN线),navigator.onLine仍然会返回true。

有人可以建议我如何使navigator.onLine返回false或以其他方式查明是否有互联网连接?

修改 浏览器是Chrome

1 个答案:

答案 0 :(得分:2)

服务代码:

//service to check if device or (browser) is online or offline

.factory('ConnectivityMonitor', function($rootScope, $cordovaNetwork){

  return {
    isOnline: function(){
      if(ionic.Platform.isWebView()){
        return $cordovaNetwork.isOnline(); 
      } else {
        return navigator.onLine;
      }
    },
    isOffline: function(){
      if(ionic.Platform.isWebView()){
        return !$cordovaNetwork.isOnline();    
      } else {
        return !navigator.onLine;
      }
    },
startWatching: function(){
    if(ionic.Platform.isWebView()){

      $rootScope.$on('$cordovaNetwork:online', function(event, networkState){
        console.log("went online");
      });

      $rootScope.$on('$cordovaNetwork:offline', function(event, networkState){
        console.log("went offline");
      });

    }else {

      window.addEventListener("online", function(e) {
        console.log("went online");
      }, false);    

      window.addEventListener("offline", function(e) {
        console.log("went offline");
      }, false);  
    }       
}
  }
})

然后在控制器(一个例子)中:

.controller('Map3Ctrl',   
function(ConnectivityMonitor) {

 if(ConnectivityMonitor.isOnline()){
    console.log("online")
 }else{
  console.log("offline");
 }

})
  

Monitoring Online and Offline States in an Ionic Application