Ho cercato tutto il giorno per la risposta a questo e la sfera di Google non ha fornito alcuna risposta. Ho provato tutto ciò che so come fare e ho lavorato con le soluzioni e le risposte suggerite e niente ha funzionato.Connessione rete PhoneGay - Impossibile leggere la proprietà 'type' di undefined
In poche parole sto cercando di sviluppare un'applicazione per Phonegap
Android
e Apple
I dispositivi mobili e una delle caratteristiche di cui ho bisogno è quello di rilevare sia lo stato della rete e il tipo di connessione di rete. Di seguito è riportato il codice che sto usando.
L'avviso Firing device ready
si spegne e quindi viene visualizzato l'errore Cannot read property 'type' of undefined
seguito dal looping dell'oggetto Navigator
. Mentre passo attraverso ognuna di queste proprietà dell'oggetto non vedo la proprietà connection
o anche la proprietà network
come era usata nelle versioni precedenti.
Qualcuno ha qualche idea?
index.html
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- jQuery Core -->
<script src="js/jquery-1.11.1.min.js"></script>
<!-- The main engine for the software. -->
<script src="js/main.js"></script>
<!-- Third party plugins -->
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="barcodescanner.js"></script>
<script type="text/javascript" src="childbrowser.js"></script>
<script type="text/javascript" src="js/barcode.js"></script>
<title>index</title>
<script>
document.addEventListener("deviceready", onDeviceReady, false);
</script>
</head>
<body>
<script>
barcode_app.initialize();
</script>
</body>
</html>
main.js
function onDeviceReady(){
alert('Firing device ready');
try{
var networkState = navigator.connection.type;
var states = {};
states[Connection.UNKNOWN] = 'Unknown connection';
states[Connection.ETHERNET] = 'Ethernet connection';
states[Connection.WIFI] = 'WiFi connection';
states[Connection.CELL_2G] = 'Cell 2G connection';
states[Connection.CELL_3G] = 'Cell 3G connection';
states[Connection.CELL_4G] = 'Cell 4G connection';
states[Connection.NONE] = 'No network connection';
$("#system_popup").html('Connection type: ' + states[networkState]);
$("#system_popup").popup("open")
//alert('Connection type: ' + states[networkState]);
}catch(e){
alert(e);
$.each(navigator, function(key, value){
alert(key+' => '+value);
});
}
}
e nel mio config.xml ho:
<plugin
name="NetworkStatus"
value="org.apache.cordova.NetworkManager" />
<gap:config-file platform="android" parent="/manifest">
<uses-permission name="android.permission.ACCESS_NETWORK_STATE" />
</gap:config-file>
<gap:config-file platform="android" parent="/manifest">
<uses-permission name="android.permission.INTERNET" />
</gap:config-file>
<gap:config-file platform="android" parent="/manifest">
<uses-permission name="android.permission.READ_PHONE_STATE" />
</gap:config-file>
<feature name="http://api.phonegap.com/1.0/device" />
<feature name="NetworkStatus">
<param name="android-package" value="org.apache.cordova.NetworkManager" />
<param name="ios-package" value="CDVConnection" />
</feature>
UPDATE: SOLUZIONE
Una soluzione è stata infine formulato grazie agli sforzi congiunti di @Dawson Loudon e @benka. Dawson corretto il plugin che usavo che avrebbe dovuto essere:
<gap:plugin
name="org.apache.cordova.network-information"
version="0.2.7" />
E questo in realtà funziona correttamente solo dopo l'attuazione della breve ritardo di cui parla @benka. Così ora il codice di lavoro si presenta così in JavaScript:
function onDeviceReady(){
try{
var networkState = navigator.connection && navigator.connection.type;
setTimeout(function(){
networkState = navigator.connection && navigator.connection.type;
var states = {};
states[Connection.UNKNOWN] = 'Unknown connection';
states[Connection.ETHERNET] = 'Ethernet connection';
states[Connection.WIFI] = 'WiFi connection';
states[Connection.CELL_2G] = 'Cell 2G connection';
states[Connection.CELL_3G] = 'Cell 3G connection';
states[Connection.CELL_4G] = 'Cell 4G connection';
states[Connection.NONE] = 'No network connection';
alert('Connection type: ' + states[networkState]);
}, 500);
}catch(e){
alert(e);
$.each(navigator, function(key, value){
alert(key+' => '+value);
});
}
}
State voi costruendo localmente o in build.phonegap.com? –
build.phonegap.com –
Si desidera utilizzare il plugin trovato qui: https://build.phonegap.com/plugins/626 ' ' –