2016-05-24 19 views
0

Я разрабатываю приложение на Ionic 2, и я хочу проверить подключение к Интернету для каждого запроса, то есть хочу получать мгновенное сообщение каждый раз, когда сеть опускается или вверх.Ionic 2 - Проверьте подключение к Интернету по каждому запросу

Мой простой проект будет иметь:
страница 1 - дома (кнопка для перехода на другую страницу)
страница 2 - другой странице

Для этого I'm, используя информацию Cordova плагин сети. Из ионной 2 документации:

import {Network, Connection} from 'ionic-native'; 

// watch network for a disconnect 
let disconnectSubscription = Network.onDisconnect().subscribe(() => { 
    console.log('network was disconnected :-(') 
}); 

// stop disconnect watch 
disconnectSubscription.unsubscribe(); 


// watch network for a connection 
let connectSubscription = Network.onConnect().subscribe(() => { 
    console.log('network connected!');  
    // We just got a connection but we need to wait briefly 
    // before we determine the connection type. Might need to wait  
    // prior to doing any api requests as well. 
    setTimeout(() => { 
    console.log(Network.connection); 
    if (Network.connection === Connection.WIFI) { 
     console.log('we got a wifi connection, woohoo!'); 
    } 
    }, 3000); 
}); 

// stop connect watch 
connectSubscription.unsubscribe(); 

Проблема в том, что Network.onConnect (подписку) (() ничего не получить это лучший способ йо достичь своей цели

+2

Как комментарий, а не ответ вообще, я не думаю, что сетевой плагин действительно надежный для такого рода обнаружения, так как ваш пользователь действительно может быть подключен к маршрутизатору, у которого нет связи, и только потому, что есть активная связь wifi, плагин покажет, что существует действующее соединение. Я тоже работаю над решением этой проблемы. –

ответ

2

Проблема с кодом..? что вы вызываете метод отмены подписки после того, как подписались на сетевые изменения. Если вы вызываете connectSubscription.unsubscribe(), вы сообщаете, что теперь вам не нужны изменения в состоянии сетевого подключения. Удалите два метода отмены подписки и ваш код должен быть в порядке.

Также подстраница ibe и методы отписки только прослушивают изменения, поэтому для проверки возможности подключения используйте код сравнения напрямую. if (Network.connection === 'wifi') { // do some api work }

Сообщите мне, если это сработает.

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