Плагин сетевой информации Ionic v1 - isOnline () Всегда ложно, даже когда онлайн - PullRequest
0 голосов
/ 21 января 2019

Первый постер, ищите искренний и честный ответ!

У меня возникла странная проблема, связанная с информацией о 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 (опущено в коде) образцы), он никогда не сможет достичь его.

Любая помощь будет высоко ценится.

...