Первый постер, ищите искренний и честный ответ!
У меня возникла странная проблема, связанная с информацией о cordova-plugin-network-сочетании с «$ cordovaNetwork» ngCordova, заключающаяся в том, что проверка isOnline () никогда не срабатывает, как только состояние сети приложения Ionic изменилось изменено с оффлайн на онлайн.
Я искал во всем интернете исправление, но, похоже, ничего не работает. Вот мой код ниже:
app.run(function($ionicPlatform, $rootScope, $cordovaSQLite, $cordovaNetwork, $cordovaAppVersion, $cordovaFileTransfer, $localStorage, _, DatabaseService, BackgroundService, ConnectionService) {$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(false);
cordova.plugins.Keyboard.disableScroll(true);
}
if (window.StatusBar) {
// org.apache.cordova.statusbar required
StatusBar.styleDefault();
}
});
$scope.login = function() {
console.log('Login Function:');
$scope.loginStarted = true;
$scope.loginFailed = false;
console.log($scope.loginData.username);
if (!angular.isDefined($scope.loginData.username) || !angular.isDefined($scope.loginData.password)) {
$scope.loginStarted = false;
$scope.loginFailed = true;
$scope.failureMessage = 'Please enter both your Login Number and Password.';
} else {
var user = {
login_number: $scope.loginData.username,
password: $scope.loginData.password
};
ConnectionService.getConnection()
.then(function(conn) {
if (conn === 'online') {
console.log('ONLINE');
$scope.loginStarted = false;
} else {
console.log('OFFLINE');
$scope.loginStarted = false;
}
});
}
};
app.service('ConnectionService', function($http, $q, $cordovaNetwork, $rootScope) {
var service = {};
service.getConnection = function() {
var deferred = $q.defer();
var isOnline;
var network = $cordovaNetwork.getNetwork();
isOnline = $cordovaNetwork.isOnline();
isOffline = $cordovaNetwork.isOffline();
switch(isOnline) {
case true:
console.log('ISONLINE IS ONLINE.');
deferred.resolve('online');
break;
case false:
console.log('ISONLINE IS OFFLINE.');
deferred.resolve('offline');
break;
default:
console.log('DEFAULT TRIGGERED');
deferred.resolve('offline');
break;
}
return deferred.promise;
};
return service;});
Прежде чем войти в систему, я проверяю, есть ли подключение к сети. Изначально мое устройство подключено к сети. Затем я проверяю устройство в автономном режиме, затем снова переключаюсь в режим онлайн IsOnline () должен сработать и быть подключенным к сети, однако, похоже, это никогда не происходит, поэтому, когда приложение возвращается в сеть, оно не принимает это, и поэтому, когда я в конечном итоге вызываю свой API (опущено в коде) образцы), он никогда не сможет достичь его.
Любая помощь будет высоко ценится.