【问题标题】:Late broadcast from Network Information plugin Cordova/Ionic网络信息插件 Cordova/Ionic 的延迟广播
【发布时间】:2017-02-08 17:34:43
【问题描述】:

您好,我对此进行了很多测试,但无法获得确切的解决方案,因此请发帖寻求帮助。

我的应用在 Ionic 而不是 Ionic2

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

场景:

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

预期行为:

应该在打开或关闭 WiFi、移动数据等网络源时接收广播,以便我可以在应用程序中处理。

我在 app.js 中响应 $ionicPlatform.ready 中网络事件的 Broadcast 源代码如下:

//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 上获得正确的行为。

请分享您在这方面的经验,以便帮助我解决问题。 提前致谢。

【问题讨论】:

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


    【解决方案1】:

    终于经过几天的努力,我发现除了 BrodcastReceivers 之外,这个插件没有其他方法可以通知您,这很好,但是当您的应用处于离线状态时,从后台到前台然后您调用 API,然后您会看到您的应用程序页面正在尝试调用 API(因为插件方法将 isOnline 返回为 true)但它们不应该因为没有网络并且几秒钟后您收到广播说 您现在离线强>。

    解决方案

    因此,最好的方法是调用从背景到前台的页面更新是从 BroadcastReceiver.. 调用另一个本地 BrodacstReceiver 以根据网络事件更新页面。

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

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

    【讨论】:

      猜你喜欢
      • 2016-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-18
      • 2013-03-08
      相关资源
      最近更新 更多