Przez cały dzień szukałem odpowiedzi, a sfera Google nie dostarczyła żadnych odpowiedzi. Próbowałem wszystkiego, co umiem, i pracowałem nad proponowanymi rozwiązaniami i odpowiedziami i nic nie zadziałało.Połączenie sieciowe Phonegap - Nie można odczytać właściwości typu "niezdefiniowana"
Krótko mówiąc, próbuję stworzyć aplikację Phonegap
dla urządzeń Android
i Apple
. Jedną z funkcji, których potrzebuję, jest wykrywanie statusu sieci i rodzaju połączenia sieciowego. Poniżej znajduje się kod, którego używam.
Alert Firing device ready
odpala, a następnie pojawia się błąd Cannot read property 'type' of undefined
, po którym następuje zapętlenie obiektu Navigator
. Przechodząc przez każdą z tych właściwości obiektu, nie widzę właściwości connection
ani nawet właściwości network
, która była używana w starszych wersjach.
Ktoś ma jakieś pomysły?
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);
});
}
}
iw moim config.xml mam:
<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: roztwór
roztwór ostatecznie formułowane przez połączone wysiłki @Dawson Loudon i @benka. Dawson poprawione wtyczki używałem które powinny być:
<gap:plugin
name="org.apache.cordova.network-information"
version="0.2.7" />
I to naprawdę działa tylko poprawnie po wdrożeniu krótkie opóźnienie wspomniany przez @benka. Teraz kod wygląda następująco pracy w 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);
});
}
}
ty budowania lokalnie lub w build.phonegap.com? –
build.phonegap.com –
Chcesz użyć wtyczki znalezionej tutaj: https://build.phonegap.com/plugins/626 ' ' –