任何动作之前离子检查网络连接

时间:2016-10-13 07:32:40

标签: cordova ionic-framework

我有一个共有20页的离子应用程序,每页都有一个服务器请求,其中大部分都是邮寄请求,

在iconic cordova应用程序中是否有任何方法来检查网络连接并警告用户如果没有网络连接则没有网络连接?

我可以在每个控制器中检查这个,但我正在寻找全局处理此检查。

下面的

是控制器中的示例操作

$scope.sendMessageToManager = function () {
        $ionicLoading.show({ template: '<ion-spinner></ion-spinner>' })
        $http.post(serverConfig.serverUrl + '/api/services/app/hrService/SendMessageToManager', $scope.message).success(function () {
            $ionicLoading.hide();
            $scope.showAlert();
            $scope.message = {};
        })
    }

如何在调用sendMessageToManager()之前检查网络连接?

在cordova中是否有任何特定的模式或指南?

感谢。

3 个答案:

答案 0 :(得分:1)

使用cordova-plugin-network-information来检查离子网络连接。

  

cordova插件添加cordova-plugin-network-information

在设备上运行时,您可以查看。

  

$ cordovaNetwork.isOnline();

Joshmorony写了关于它的教程。 HERE

答案 1 :(得分:0)

您可以将事件用于app.js

document.addEventListener("offline", function(e) { //$state.go('offline', {}, {reload: true}); alert('No Internet'); }, false);

答案 2 :(得分:0)

继Aung Myat Hein的回答后,您需要获取cordova-plugin-network-information。

cordova plugin add cordova-plugin-network-information

如果您需要一种简单的方法,可以将其设置为本地存储。

对于离线处理:

    document.addEventListener("offline", function()
    {
        console.log("in offline event listener");
        self.events.publish('internetStatus', 'off');
        this.local.set("internet", "off"); //sets the localstorage
    }, false);

用于在线处理,它将是:

    document.addEventListener("online", function()
    {
        console.log("in online event listener");
        self.events.publish('internetStatus', 'on');
        this.local.set("internet", "on"); //sets the localstorage
    }, false);

无论您身在何处,在呼叫您的HTTP请求之前,您都可以通过从本地存储中获取密钥(在本例中为Internet)的值来进行检查。