【问题标题】:ionic checking network connection before any action在任何操作之前离子检查网络连接
【发布时间】:2016-10-13 17:38:45
【问题描述】:

我有一个 ionic 应用程序,总共有 20 页,每个页面上都有一个对服务器的请求,其中大部分是 post 请求,

标志性的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 中是否有任何特定的模式或指南?

谢谢。

【问题讨论】:

    标签: cordova ionic-framework


    【解决方案1】:

    使用 cordova-plugin-network-information,检查 ionic 中的网络连接。

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

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

    $cordovaNetwork.isOnline();

    Joshmorony 写了关于它的教程。 HERE

    【讨论】:

      【解决方案2】:

      你可以在你的 app.js 中使用事件

      喜欢

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

      【讨论】:

      • 当用户单击按钮并调用任何发布功能时会发生这种情况吗?或者当应用下线时?
      • 当用户离线时自动调用离线事件,无需手动检查
      • 我在用户点击按钮时使用 $ionicLoading.show(),当应用离线时我无法在 app.js 中调用 $ionicLoading.hide()
      • 好的,我知道应用程序离线时还会将 $ionicLoading.hide() 添加到离线事件中,我确信如果 $ionicLoading.show 不存在,那么它不会给出任何错误
      【解决方案3】:

      根据 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 请求之前,您都可以通过从本地存储中获取键(在本例中为互联网)的值来进行检查。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-12-22
        • 2012-09-23
        • 1970-01-01
        • 2010-10-05
        • 1970-01-01
        • 1970-01-01
        • 2012-04-18
        相关资源
        最近更新 更多