您好我对此进行了大量测试,但未能获得准确的解决方案,因此请求帮助。
我的应用程序是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上获得正确的行为。
请分享您的经验,这样可以帮助我解决问题。 提前谢谢。
答案 0 :(得分:0)
经过几天的努力,我发现除了它的BrodcastReceivers之外,这个插件中没有办法通知你,那很好但是在网络外你的应用来自背景到前景 并且你调用API然后你看到你的应用程序的页面正在尝试调用API(因为插件方法返回isOnline为true)但它们不应该因为没有网络而且几秒钟后你收到广播说你现在离线强>
<强>解决方案强>
因此,最好的方法是从Background到Foreground调用您的页面的更新来自BroadcastReceiver ..调用另一个您的Local BrodacstReceiver来根据网络事件更新页面。
我在Ionic论坛上发布了一些问题,但我没有收到任何有建设性的信息。
希望这有助于其他人面临同样的问题并需要解决方案... :)