2013-04-11 4 views
7

현재 네트워크 연결을 확인하기위한 표준 PhoneGap API (아래 참조)가 Ripple 에뮬레이터에서 결과를 업데이트하지 않는 것 같습니다. 내가 연결 유형을 변경하고 checkConnection()를 실행하면 (deviceready에서)이 기능PhoneGap의 네트워크 연결 상태가 Ripple에서 업데이트되지 않습니다.

function checkConnection() { // Checks current network status 
    networkState = navigator.connection.type; 
    console.log(networkState); 

    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'; 

    // DEBUG: notify on network state 
    console.log("Connection type: " + states[networkState]); 
} 

내가 할 필요가 무엇 있는가 (이벤트 리스너를 추가는?)에 대한 첫 번째 호출에서 연결 유형을 반환 이거 작동시켜? 일반적으로 장치는 상태가 온라인에서 오프라인으로 변경 될 때만 이벤트를 시작하지만 인터넷과 xG 연결을 '자유'로 구분해야합니다.

+1

정말 이렇게 가난한 질문입니까? 아니면 아무도이 문제에 직면하지 않았습니까? –

답변

-1

나는 전화를 지연시키기 위해 타임 아웃 기능을 추가하려고한다. 이 문제가 해결되었을 때 이미 비슷한 문제를 봤습니다. 다음

networkState = navigator.connection.type; 

: 우선은 할이이 값의 새로 고침 navigator.connection.type 시간 (이 예에서는 500 밀리) 제공

setTimeout(function(){ 

    networkState = navigator.connection.type; // have to do this second time to pick up the refreshed value 
    console.log(networkState); 

    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'; 

    // DEBUG: notify on network state 
    console.log("Connection type: " + states[networkState]); 
}, 500); 

.

+1

또는 onDeviceReady()를 사용할 수 있습니다. http://stackoverflow.com/a/17754340/1427338 – bleuscyther

+0

@bleuscyther 그것이 일관되게 작동하는 경우 더 좋은 해결책입니다. 네트워크 상태 초기화가'onDeviceReady()'이후에 실행되었다고 확신하지만 때때로 실패합니다. 다시 확인해야합니다;) 업데이트에 대한 건배 – benka

+0

시도했지만 작동하지 않습니다. – wmfairuz

6

분명히 navigator.connection.type이 Windows 플랫폼의 코드바에서 업데이트되지 않습니다. 코드를 살펴보면 navigator.connection.type은 'deviceready'이벤트 후에 한 번만 설정됩니다. 내 자신의 코드에서 리팩토링/복사 - 붙여 넣기 조각, 상자 밖으로 작동합니다 :

트릭 수동

var connection = navigator.connection; 
function errorCallback(e) { 
    console.warn(e); 
}; 
function updateConnection(info) { 
    connection.type = info; 
} 
document.addEventListener("resume", function() { 
    connection.getInfo(updateConnection, errorCallback); 
}); 
document.addEventListener("online", function() { 
    connection.getInfo(updateConnection, errorCallback); 
}); 
document.addEventListener("offline", function() { 
    connection.getInfo(updateConnection, errorCallback); 
}); 

면책 조항은 관련 이벤트

에 연결 # 된 getInfo()를 사용하여 업데이트하는 것입니다.

+0

이것은 완전히 작동하지만 도대체 어떻게 발견 했습니까? 나는 당신의 대답을 제외하고는 무엇을 찾을 수 없으며, 이제는 내가 무엇을 찾아야 할지를 코드바 소스라고합니다. –

관련 문제