来自网络信息插件Cordova / Ionic

时间:2017-02-07 10:36:00

标签: angularjs iphone cordova ionic-framework cordova-plugins

您好我对此进行了大量测试,但未能获得准确的解决方案,因此请求帮助。

我的应用程序是Ionic而非Ionic2

使用网络插件是"网络信息" cordova-plugin-network-information 1.3.0"网络信息" Link

情景:

当用户最小化应用程序并转到后台并关闭网络源,如WiFi,移动数据并返回到应用程序主页插件。方法首先返回true ,一段时间后广播说现在网络已离线

预期行为:

应该在转动网络资源上接收广播,如WiFi,移动数据开或关,所以我可以在应用程序中处理。

我在 app.js 中对$ ionicPlatform.ready中的网络事件做出响应的广播源代码如下所示:

//listen for Online event
        $rootScope.$on('$cordovaNetwork:online', function (event, networkState) 
        {
            console.log("BR got inside online -- App " + networkState);
            $rootScope.isonlineState = true;
            console.log("BR got inside online getNetwork-- App " + $cordovaNetwork.getNetwork());
            console.log("BR got inside online isOnline-- App " + $cordovaNetwork.isOnline());
        })

    // listen for Offline event
    $rootScope.$on('$cordovaNetwork:offline', function (event, networkState) 
     {
        console.log("BR got inside offline  -- App " + networkState);
            $rootScope.isonlineState = false;
        console.log("BR got inside offline getNetwork-- App " + $cordovaNetwork.getNetwork());
        console.log("BR got inside offline isOnline-- App " + $cordovaNetwork.isOnline());
        })

我调试了这个场景很多次但仍然无法在iPhone上获得正确的行为。

请分享您的经验,这样可以帮助我解决问题。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

经过几天的努力,我发现除了它的BrodcastReceivers之外,这个插件中没有办法通知你,那很好但是在网络外你的应用来自背景到前景 并且你调用API然后你看到你的应用程序的页面正在尝试调用API(因为插件方法返回isOnline为true)但它们不应该因为没有网络而且几秒钟后你收到广播说你现在离线

<强>解决方案

因此,最好的方法是从Background到Foreground调用您的页面的更新来自BroadcastReceiver ..调用另一个您的Local BrodacstReceiver来根据网络事件更新页面。

我在Ionic论坛上发布了一些问题,但我没有收到任何有建设性的信息。

希望这有助于其他人面临同样的问题并需要解决方案... :)