使用ngCordova检查活跃的网络连接,如果在ionic中不是活跃的,就退出应用
Checking for Active Network connection and exiting the app if not active in ionic using ngCordova
我正在开发一个会议应用程序,这是数据驱动和不断将从web服务器更新。我存储数据在本地存储持久性,但当应用程序安装和启动第一次我想弹出一个"没有互联网连接"的消息,并关闭应用程序,当他们点击弹出的任何按钮。但是当有互联网加载应用程序时。我已经在我的app.run函数中这样做了,但它不起作用。
var app = angular.module('starter', ['ionic', 'ionic-material', 'ngCordova']);
app.run(function ($ionicPlatform, $ionicPopup, $timeout) {
$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) {
StatusBar.styleDefault();
}
//checking for internet connection on startup
if (window.Connection) {
if (navigator.connection.type === Connection.NONE) {
document.addEventListener("offline", function () {
$ionicPopup.confirm({
title: "Internet Disconected",
content: "Sorry, No internet connection now, please try again"
}).then(function (result) {
if (!result) {
$ionicPlatform.exitApp();
}
});
}, false);
}
}
});
});
应用程序弹出消息,但点击任何按钮(确定和取消),应用程序只是停留在白色屏幕上。它不会退出应用程序。我不知道我哪里做错了。请我需要建议和代码样本来纠正我的错误。
需要注意的几个方面:
-
你的exitApp()的实现报告不工作在iOS设备
-
关闭应用程序是可用性的一大否定,你最好在界面上呈现最新的缓存数据,或者如果有任何数据被缓存,则将"无网络连接"消息集成到应用程序布局中(checkout Spotify就是一个例子)
在任何情况下,您的目的可以达到ngCordova.plugins.network
模块,捆绑在http://ngcordova.com/
返回当前网络状态的服务示例:
angular.module('app.common.connectivity', [
'ngCordova.plugins.network'
])
.service('ConnectivityService', function($cordovaNetwork) {
this.isOnline = $cordovaNetwork.isOnline() || false;
});
你可以添加这个模块,并在需要的地方注入服务,比如:
var app = angular.module('starter', ['ionic', 'ionic-material', 'app.common.connectivity']);
app.run(function ($ionicPlatform, $ionicPopup, $timeout, ConnectivityService) {
$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) {
StatusBar.styleDefault();
}
//checking for internet connection on startup
if( !ConnectivityService.isOnline && !window.localStorage.appLaunched ) {
$ionicPopup.confirm({
title: "Internet Disconected",
content: "Sorry, No internet connection now, please try again"
})
.then(function(result) {
$ionicPlatform.exitApp();
});
}
// Apparently we're online so remember we already have been here
if ( !localStorage.appLaunched ) localStorage.appLaunched = true;
});
});
阅读他们的文档,它说要使用
ionic.Platform.exitApp();
退出应用程序。
你是否也验证了你的代码是否达到了这个条件
相关文章:
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- Emberjs应用程序加载在除Index之外的所有路由上
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 跟踪在页面加载时应用内联样式的JavaScript
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- 如果文本字段为空,则使用JavaScript应用CSS样式
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 为什么在单独的函数中应用时转换会闪烁/断断续续(D3)
- angular 1.5应用程序中的导航栏
- 在Web应用程序中使用Highcharts javascript
- angularjs+rails应用程序中未显示模板
- 从html创建一个指令,该指令按类名应用函数
- 使用acess代币登录Facebook,并通过网络应用程序离线发布
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- 科尔多瓦页面类应用程序中的多个谷歌地图
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- Angularjs-utils高亮过滤器在搜索时破坏应用程序
- 在phonegap应用程序内部重定向不起作用
- 使用ngCordova检查活跃的网络连接,如果在ionic中不是活跃的,就退出应用