Javascript 使用ngCordova检查活动网络连接,如果在ionic中未处于活动状态,则退出应用程序
我正在开发一个会议应用程序,它是数据驱动的,并且将从web服务器不断更新。我将数据存储在本地存储器中以备持久性使用,但当应用程序第一次安装并启动时,我希望弹出一条“无互联网连接”消息,并在他们单击弹出窗口上的任何按钮时关闭应用程序。但当有互联网时,请加载应用程序。我已经在app.run函数中执行了此操作,但它不起作用Javascript 使用ngCordova检查活动网络连接,如果在ionic中未处于活动状态,则退出应用程序,javascript,android,angularjs,ionic-framework,ionic-popup,Javascript,Android,Angularjs,Ionic Framework,Ionic Popup,我正在开发一个会议应用程序,它是数据驱动的,并且将从web服务器不断更新。我将数据存储在本地存储器中以备持久性使用,但当应用程序第一次安装并启动时,我希望弹出一条“无互联网连接”消息,并在他们单击弹出窗口上的任何按钮时关闭应用程序。但当有互联网时,请加载应用程序。我已经在app.run函数中执行了此操作,但它不起作用 var app = angular.module('starter', ['ionic', 'ionic-material', 'ngCordova']); app.run(fu
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);
}
}
});
});
应用程序弹出消息,但只要点击任何按钮(确定和取消),应用程序就会停留在白色屏幕上。它不会退出应用程序。
我不知道我做错了什么。请我需要的建议和代码样本,以纠正我的错误 阅读他们的“it say's use”
ionic.Platform.exitApp();
退出应用程序
您还验证了您的代码是否达到了该条件。阅读他们的it声明以供使用
ionic.Platform.exitApp();
退出应用程序
您还验证了您的代码是否达到该状态。需要记住的几个方面:
- 据报告,您的exitApp()实现在iOS设备中不起作用
- 杀掉一个应用对于可用性来说是一个很大的禁忌,你最好用最新的数据来展示界面,或者如果有任何数据被缓存,则在应用布局中集成一条“无网络连接”的消息(例如checkout Spotify)
ngCordova.plugins.network
模块来达到目的
这是一个返回当前网络状态的服务示例:
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;
});
});
需要记住的几个方面:
- 据报告,您的exitApp()实现在iOS设备中不起作用
- 杀掉一个应用对于可用性来说是一个很大的禁忌,你最好用最新的数据来展示界面,或者如果有任何数据被缓存,则在应用布局中集成一条“无网络连接”的消息(例如checkout Spotify)
ngCordova.plugins.network
模块来达到目的
这是一个返回当前网络状态的服务示例:
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;
});
});
谢谢Enrico,当用户第一次加载应用程序时,我正在尝试检查连接。我已经从我的每个控制器的本地存储中加载了数据(虽然这是一个糟糕的做法),但是如果用户以前从未打开过具有internet连接的应用程序,我需要检查internet连接并退出该应用程序。如果他有一次上网。。。我需要它绕过该功能,并转移到控制器逻辑,该逻辑将从本地存储器加载数据。你可以检查我的代码。只是修复了我代码段上的一个错误(我没有否定ConnectivityService.isOnline,现在是)。您可以在用户第一次联机时将变量保存在localstorage中,并使用该值绕过强制退出。我将更新答案。谢谢Enrico,我正在尝试在用户首次加载应用程序时检查连接。我已经从我的每个控制器的本地存储中加载了数据(虽然这是一个糟糕的做法),但是如果用户以前从未打开过具有internet连接的应用程序,我需要检查internet连接并退出该应用程序。如果他有一次上网。。。我需要它绕过该功能,并转移到控制器逻辑,该逻辑将从本地存储器加载数据。你可以检查我的代码。只是修复了我代码段上的一个错误(我没有否定ConnectivityService.isOnline,现在是)。您可以在用户第一次联机时将变量保存在localstorage中,并使用该值绕过强制退出。我将更新答案。