2013-08-10 14 views
6

Piszę aplikację z phonegap (cordova) 3.0.0 i wydarzenia "online" i "offline" nie działa. Kiedy próbowałem wydarzenie "wznowić", to wydarzenie było OK. Używam XCode 4.5 i IOS.Zdarzenia phonegap online/offline nie działa

To jest mój główny plik javascript projektu PhoneGap:

var app = { 

    initialize: function() { 
     this.bindEvents(); 
    }, 
    // Bind Event Listeners 
    // 
    // Bind any events that are required on startup. Common events are: 
    // 'load', 'deviceready', 'offline', and 'online'. 
    bindEvents: function() { 
     document.addEventListener('deviceready', this.onDeviceReady, false); 
     document.addEventListener('online', this.onDeviceOnline, false); 
     document.addEventListener('resume', this.onDeviceResume, false); 
    }, 

    onDeviceReady: function() { 
     app.receivedEvent('deviceready'); 
    }, 

    onDeviceOnline: function() { 
     app.receivedEvent('deviceonline'); 
    }, 

    onDeviceResume: function() { 
     app.receivedEvent('deviceresume'); 
    }, 

    receivedEvent: function(id) { 
     var parentElement = document.getElementById(id); 
     var listeningElement = parentElement.querySelector('.listening'); 
     var receivedElement = parentElement.querySelector('.received'); 

     listeningElement.setAttribute('style', 'display:none;'); 
     receivedElement.setAttribute('style', 'display:block;'); 

     console.log('Received Event: ' + id); 
    } 
}; 

podziękować za rady

Odpowiedz

2

Zdarzenia te należy wiązać wewnątrz „onDeviceReady”, to nie będzie działać przed zdarzeniem DeviceReady. Sprawdź ten Attach an event listener once the deviceready event fires

bindEvents: function() { 
    document.addEventListener('deviceready', this.onDeviceReady, false); 
    document.addEventListener('resume', this.onDeviceResume, false); 
}, 

onDeviceReady: function() { 
    app.receivedEvent('deviceready'); 
    document.addEventListener('online', this.onDeviceOnline, false); 
}, 

Zwróć uwagę, że wydarzenie online/offline nie jest zwolniony po uruchomieniu aplikacji, to wydarzenie się zwolniony dopiero, gdy zmiany stanu połączeń. Powiedzmy, że gdy aplikacja uruchamia się w trybie online, dopóki nie przejdzie w tryb offline, zdarzenie offline nie zostanie wyzwolone, tak samo w przypadku zdarzenia online.

Aby sprawdzić bieżące połączenia, należy użyć poniższy kod

onDeviceReady: function() { 
    app.receivedEvent('deviceready'); 
    document.addEventListener('online', this.onDeviceOnline, false); 
    if((navigator.network.connection.type).toUpperCase() != "NONE" && 
     (navigator.network.connection.type).toUpperCase() != "UNKNOWN") { 
     this.onDeviceOnline(); 
    } 
} 
+1

próbowałem go, ale nadal nie działa . Tylko wznowić, lub pauza jest w porządku. – user2374693

+2

W jaki sposób sprawdzasz wydarzenia? Zdarzenia te nie będą uruchamiane po uruchomieniu aplikacji, będą uruchamiane tylko w przypadku zmiany stanu łączności, tj. Aplikacja jest w trybie online, podczas uruchamiania i kiedy system przechodzi w tryb offline, zdarzenie offline jest uruchamiane i na odwrót. Jeśli chcesz sprawdzić bieżący stan łączności, zobacz zaktualizowaną odpowiedź. –

+0

Do wykorzystania w przyszłości; Od wersji Phonegap "sieć" zniknęła. Jest teraz "navigator.connection.type". Zobacz dokumentację, aby uzyskać więcej informacji: http://docs.phonegap.com/en/edge/cordova_connection_connection.md.html – NoobishPro

0

należy włożyć wtyczkę połączenia do projektu i wówczas wydarzenia będą zwalniani.

dodać Connection stosowanie wtyczek następującą komendę:

CMD> phonegap local plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-network-information.git 
8

jeśli chcesz wyświetlać online/offline statusu trzeba dodać informacji sieci wtyczki najpierw z wiersza poleceń

$ phonegap local plugin add org.apache.cordova.network-information 

po dodając, że wtyczka, która powinna działać w trybie online/offline, działa dobrze dla mnie

+1

Dla Cordova użyj: cordova plugin dodaj org.apache.cordova.informacja sieciowa –

+0

działa dobrze, ale dwa razy wywołuje zdarzenie offline – Abhishek

2

W corodova (nie phonegap) musisz dodać wtyczkę w ten sposób:
cordova plugin add org.apache.cordova.network-information

0

W projekcie folderu PhoneGap:

phonegap plugin add org.apache.cordova.network-information 

W index.js:

var app = {}; 
app.initialize = function() { 
    document.addEventListener("online", function(){alert('online : true') }, false); 
    document.addEventListener("offline", function(){alert('online : false') }, false); 
}; 

W index.html gdzieś:

<script type="text/javascript"> 
app.initialize(); 
</script> 
+0

dlaczego ta funkcja uruchamia się dwukrotnie w trybie offline lub w trybie online urządzenia? –

Powiązane problemy