即使我已连接,$ cordovaNetwork也会返回false

时间:2016-01-07 10:59:19

标签: cordova ionic ngcordova

我正在使用$cordovaNetwork来了解我的项目何时连接到网络,何时不知道。我使用方法isOnline(),它返回false。但事实并非如此,因为我知道在设备准备就绪时我已经连接好了。我从互联网上捕获的一些信息是在开头加载的,所以我连接到互联网。

当在线活动被解雇时?当$cordovaNetwork确实知道应用程序在线时?有时它会告诉我有连接(TRUE)但有时它会告诉我没有(FALSE)。

最后,我使用那个应用程序,所以我改变了状态,然后$cordoaNetwork.isonline()返回FALSE,非常奇怪。

任何人都可以帮助我吗?文档不是很广泛。如果可以,请举一些例子。如果需要更多信息,请问我。

感谢

2 个答案:

答案 0 :(得分:1)

如果您的navigator.connection.typeConnection.UNKNOWN,则$cordovaNetwork.isOnline()始终会返回false,即使您已在线。

我认为这是ngCordova的错误

ngCordova来源

isOnline: function () {
    var networkState = navigator.connection.type;
    return networkState !== Connection.UNKNOWN && networkState !== Connection.NONE;
},

isOffline: function () {
    var networkState = navigator.connection.type;
    return networkState === Connection.UNKNOWN || networkState === Connection.NONE;
},

您需要覆盖isOnlineisOffline功能。

app.run部分覆盖,

$cordovaNetwork.isOnline = function () {
    return navigator.connection.type !== Connection.NONE;
};
$cordovaNetwork.isOffline = function () {
    return navigator.connection.type === Connection.NONE;
};

我希望得到你的帮助

答案 1 :(得分:0)

我已经完成了下一步:

打开终端并编写“nvm use v4.2.3”以使nodejs的正确版本处于活动状态。 转到项目文件夹,在我的例子中,“cd / var / phone / myProject” 写“离子运行android”。 等待几秒钟直到应用程序启动。

直到这里,我没有问题。该应用程序构建良好。然后,我使用$ cordovaNetwork来监控在线和离线状态,何时处于活动状态。 $ cordovaNetwork.isOnline()有效,但似乎有时候不知道某个州或其他州何时真正活跃。我运行应用程序的所有时间,我知道这是连接的,因为一些代码在服务器中,所以如果它没有加载,它将显示为空白。

所以知道在线活动是活跃的,为什么$ cordovaNetwork.isOnline()没有检测到它?我在其他论坛上寻找解决方案,但似乎没有人遇到过这个问题。

是的,我正在模拟应用程序,也许问题出在模拟器中?在我使用命令“离子运行android”之前,我必须打开其他终端并编写“android avd”以拥有一个android开放平台来使用该应用程序。我还没有在手机上测试过它。

感谢您的帮助。和jcarrera一样,我看到你分享的帖子,但是我需要直接使用$ cordovaNetwork,而不是使用navigator.connection.type,当应用程序通过浏览器运行时使用navigator。无论如何,我证明了这一点,但我认为它与此post中的无关。 谢谢你的帮助