当前位置: 首页 > 面试题库 >

Ionic:使用Cordova检查Internet连接

谢修真
2023-03-14
问题内容

我正在研究Ionic Framework,并在使用Apache Cordova Network
API
来检测AndroidApp中的互联网连接时遇到问题。我参考了本教程,并创建了一个演示项目,该项目运行良好。

我已按照以下步骤操作。[来自教程]

  1. ionic start testApp sidemenu

  2. ionic platform add android

  3. 打开 testApp/www/js/app.js

  4. 复制粘贴此代码

        if(window.Connection) {

      if(navigator.connection.type == Connection.NONE) {
          alert('There is no internet connection available');
      }else{
          alert(navigator.connection.type);
      }
    }else{
          alert('Cannot find Window.Connection');
    }
  1. 安装Cordova插件 cordova plugin add org.apache.cordova.network-information

  2. 建立 ionic build android

  3. ionic run android

这很好

问题

  1. www从复制粘贴mainprojecttestApp并执行步骤6和7

我收到警报 Cannot find Window.Connection

之后 复制粘贴app.js这个样子的

    .run(function($ionicPlatform) {
      $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) {
          // org.apache.cordova.statusbar required
          StatusBar.styleDefault();
        }
        // check internet connection
        //alert(window.Connection);
        alert('Hi')
        try {
           alert('Naviagtor says'+navigator.connection.type);
         }
        catch(err) {
           alert( 'Error '+ err.message) 
           //here i get 'Error cannot read property type of undefined'
         }

    if(window.Connection) {
        if(navigator.connection.type == Connection.NONE) {
            alert('There is no internet connection available');
        }else{
            alert(navigator.connection.type);
        }
    }else{
        alert('Cannot find Window.Connection');
    }

      });
    })

当我将我的粘贴app.js并粘贴controllers.jstestApp/www/js目录的那一刻,整个事情都崩溃了。

非常感谢调试方面的任何帮助。

谢谢,

注意

我有cordova.jsindex.html

我已经重新安装platformsplugins复制后也是如此。


问题答案:

我通过使用ngcordova解决了类似的问题。它为实现promise的插件提供了一个有角度的包装器。

当您尝试调用Cordova插件时,它们通常还没有准备好,使用promise接口可以避免出现未定义的错误。

我从此处的网络插件的ngcordova页中窃取了该示例。

    module.controller('MyCtrl', function($scope, $rootScope, $cordovaNetwork) {

     document.addEventListener("deviceready", function () {

        var type = $cordovaNetwork.getNetwork()

        var isOnline = $cordovaNetwork.isOnline()

        var isOffline = $cordovaNetwork.isOffline()


        // listen for Online event
        $rootScope.$on('networkOffline', function(event, networkState){
          var onlineState = networkState;
        })

        // listen for Offline event
        $rootScope.$on('networkOffline', function(event, networkState){
          var offlineState = networkState;
        })

      }, false);
    });


 类似资料:
  • 当我试着检查我的iPhone上的互联网连接时,我得到了一堆错误。有谁能帮我修好这个吗? 代码: 代码中的错误: 如果无法读取,则错误1表示: “int”不能转换为“scNetworkReachabilityFlags” 错误2&3: 找不到接受所提供参数的“init”的重载

  • 我希望代码检查互联网连接,直到连接可用。如果互联网断开,我不希望执行停止。 关于堆栈溢出,很少有检查internet连接的解决方案,但是如果我使用这些解决方案,一段时间后我会得到堆栈溢出错误。 我从以下函数调用该方法: MessagingException:没有路由到主机:Connect;嵌套异常为:java.net.norouteToHostException:没有到主机的路由:连接在com.s

  • 问题内容: 在Raspberry Pi上安装了NodeJS,是否可以检查rPi是否通过NodeJs连接到Internet? 问题答案: 一种快速而肮脏的方法是检查Node是否可以解决: 这并不是完全万无一失,因为您的RaspPi可以连接到Internet但由于某种原因无法解析,并且您可能还需要检查以区分“无法解析”和“无法连接到名称服务器,因此连接可能下来”)。

  • 问题内容: 我想知道下面的方法是否可以检查我是否都已连接到网络,并且实际上也可以连接到互联网。 不只是连接到不允许我访问互联网的网络吗? 我认为确实如此,但我不确定100%。 谢谢 问题答案: 通过比较这篇文章中可接受的答案和您的代码,您正在做什么。随意比较代码。最安全的做法是在飞行模式下,关闭WiFi并在远离WiFi的位置进行一些测试,以确保安全。祝好运。

  • 问题内容: 如何使用Javascript检查互联网连接?这样,我可以有一些条件说“在生产过程中使用Google缓存的JQuery版本,在开发过程中使用该版本或本地版本,具体取决于Internet连接”。 问题答案: 针对您的特定情况的最佳选择可能是: 在您的结束标记之前: 鉴于您的问题集中在jQuery上,这可能是最简单的方法。 如果您想要一个更强大的解决方案,可以尝试: 阅读有关W3C在脱机We

  • 问题内容: 在我的Java应用程序中,如何检测Internet连接速度有多快?例如,我在家中使用AT&T Fast DSL,我想知道是否有一种方法可以编写执行以下操作的方法: 它将返回以kbps为单位的数字,例如2800kbps [2.8 M] 编辑:我要问的原因是在我的应用程序中,我可以打开多个Internet流,具体取决于用户的Internet连接速度,我希望它自动确定要打开多少个流而不会中断