使用ngCordova检查活跃的网络连接,如果在ionic中不是活跃的,就退出应用

Checking for Active Network connection and exiting the app if not active in ionic using ngCordova

本文关键字:活跃 应用 ionic 退出 如果 检查 ngCordova 网络 连接 使用      更新时间:2023-09-26

我正在开发一个会议应用程序,这是数据驱动和不断将从web服务器更新。我存储数据在本地存储持久性,但当应用程序安装和启动第一次我想弹出一个"没有互联网连接"的消息,并关闭应用程序,当他们点击弹出的任何按钮。但是当有互联网加载应用程序时。我已经在我的app.run函数中这样做了,但它不起作用。

var app = angular.module('starter', ['ionic', 'ionic-material', 'ngCordova']);
app.run(function ($ionicPlatform, $ionicPopup, $timeout) {
    $ionicPlatform.ready(function () {
        // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
        // for form inputs)
        if (window.cordova && window.cordova.plugins.Keyboard) {
            cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
        }
        if (window.StatusBar) {
            StatusBar.styleDefault();
        }
        //checking for internet connection on startup
        if (window.Connection) {
            if (navigator.connection.type === Connection.NONE) {
                document.addEventListener("offline", function () {
                    $ionicPopup.confirm({
                        title: "Internet Disconected",
                        content: "Sorry, No internet connection now, please try again"
                    }).then(function (result) {
                        if (!result) {
                            $ionicPlatform.exitApp();
                        }
                    });
                }, false);
            }
        }
    });
});

应用程序弹出消息,但点击任何按钮(确定和取消),应用程序只是停留在白色屏幕上。它不会退出应用程序。我不知道我哪里做错了。请我需要建议和代码样本来纠正我的错误。

需要注意的几个方面:

  • 你的exitApp()的实现报告不工作在iOS设备

  • 关闭应用程序是可用性的一大否定,你最好在界面上呈现最新的缓存数据,或者如果有任何数据被缓存,则将"无网络连接"消息集成到应用程序布局中(checkout Spotify就是一个例子)

在任何情况下,您的目的可以达到ngCordova.plugins.network模块,捆绑在http://ngcordova.com/

返回当前网络状态的服务示例:

angular.module('app.common.connectivity', [
  'ngCordova.plugins.network'
])
.service('ConnectivityService', function($cordovaNetwork) {
  this.isOnline = $cordovaNetwork.isOnline() || false;
});

你可以添加这个模块,并在需要的地方注入服务,比如:

var app = angular.module('starter', ['ionic', 'ionic-material', 'app.common.connectivity']);
app.run(function ($ionicPlatform, $ionicPopup, $timeout, ConnectivityService) {
    $ionicPlatform.ready(function () {
        // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
        // for form inputs)
        if (window.cordova && window.cordova.plugins.Keyboard) {
            cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
        }
        if (window.StatusBar) {
            StatusBar.styleDefault();
        }
        //checking for internet connection on startup
        if( !ConnectivityService.isOnline && !window.localStorage.appLaunched ) {
          $ionicPopup.confirm({
            title: "Internet Disconected",
            content: "Sorry, No internet connection now, please try again"
          })
          .then(function(result) {
            $ionicPlatform.exitApp();
          });
        }
        // Apparently we're online so remember we already have been here
        if ( !localStorage.appLaunched ) localStorage.appLaunched = true;
    });
});

阅读他们的文档,它说要使用

ionic.Platform.exitApp();

退出应用程序。

你是否也验证了你的代码是否达到了这个条件