2016-10-11 7 views
0

Я разрабатываю приложение для конференции, которое управляется данными и постоянно будет обновляться с веб-сервера. Я сохраняю данные в локальном хранилище для сохранения, но когда приложение установлено и запускается в первый раз, я хочу открыть сообщение «Нет подключения к Интернету» и закрыть приложение, когда они нажимают любую кнопку во всплывающем окне. но когда есть интернет-приложение, приложение. Я сделал это в своей функции app.run, но он не работает.Проверка активного подключения к сети и выхода из приложения, если он неактивен в ионном использовании ngCordova

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); 
      } 
     } 
    }); 
}); 

приложение выскакивает сообщение, но по нажатию на любую из кнопок (ОК и отмена), приложение просто остается на белом экране. он не выходит из приложения. Я не знаю, что делаю неправильно. пожалуйста, мне нужны советы и образцы кода, чтобы исправить мою ошибку.

ответ

1

Несколько аспектов, чтобы иметь в виду:

  • ваша реализация ExitApp() сообщается, чтобы не работать в устройствах IOS

  • убить приложение является большой не для удобства, вы» d лучше представить интерфейс с последними chached данных или если какие-либо данные в кэше сообщения «нет сетевого соединения» интегрирована в макет приложения (касса 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; 
    }); 
}); 
+0

спасибо Энрико, я пытаюсь проверить подключение, когда пользователь загружает приложение в первый раз. Я уже загружаю данные из локального хранилища в каждом из моих контроллеров (хотя, тем не менее, это плохая практика), но мне нужно проверить подключение к Интернету и выйти из приложения, если пользователь никогда раньше не открывал приложение с подключением к Интернету. и если он однажды загрузил интернет-соединение ... мне нужно, чтобы он обошел эту функцию и перешел к моей логике контроллеров, которая будет загружать данные из локального хранилища. u может проверить мои коды [здесь] (https://github.com/jattoabdul/hiveAfrica). –

+0

Просто исправлена ​​ошибка в моем фрагменте (я не отрицал ConnectivityService.isOnline, теперь это так). Вы можете сохранить переменную в localstorage при первом входе пользователя в систему и использовать это значение для обхода принудительного выхода. Я собираюсь обновить ответ. –

0

Чтение их doc это сказать, чтобы использовать

ionic.Platform.exitApp(); 

Для выхода из приложения.

Также вы подтвердили, что ваш код даже делает это в этом состоянии.

 Смежные вопросы

  • Нет связанных вопросов^_^