2014-05-22 6 views
1

저는 에 매우 익숙합니다. Firefox OS. 현재로서는 백그라운드에서 geolocation 업데이트를 수신하는 일종의 서비스를 구현하는 데 어려움을 겪고 있습니다. 동시에 많은 앱이 실행되고 있다면 내 앱이 죽는 것처럼 보입니다. 응용 프로그램 관리자을 사용하여 디버깅하는 동안 자동으로 연결이 끊어집니다.Firefox OS에서 서비스 구현

나는 requestWakeLock('cpu')을 시도했으나 (this thread에서 제안 된대로) 성공했지만 성공하지는 못했습니다. 백그라운드 서비스 API가 구현되지 않았지만 인증 된 앱에서만 사용할 수 있습니다.

나는 항상 살아있을 수있는 ConnectA2과 같은 인증되지 않은 앱이 있다는 것을 알고 있으므로 방법이 있어야합니다.

아무도 내게 힌트를 줄 수 있습니까?

답변

1

Firefox OS는 의도적으로 백그라운드에서 서비스를 실행할 수있는 방법을 제공하지 않습니다. 우리가 대상으로하는 장치의 클래스 (예 : 128MB 장치)가 지속적으로 앱을 실행하는 것을 지원할 수 없기 때문입니다 백그라운드에서.

이러한 종류의 서비스를 구현하는 다른 방법이 있습니다. 예를 들어 mozAlarm API을 사용하여 특정 간격으로 애플리케이션을 깨우거나 SimplePush API을 사용하면 원격 서버에서 이벤트를 시작할 때 앱에 알릴 수 있습니다.

0

Alarm API을 사용하면 앱이 백그라운드에서 종료되지 않도록 할 수 있습니다. 알람은 일정 간격으로 앱을 깨 웁니다.

var alarmId = 0; 
function setAlarm() { 
    function onAlarmAdded() { 
     alarmId = request.result; 
    } 
    var alarmDate = new Date(Date.now() + (60 * 1000)); // 60 seconds later 
    var request = navigator.mozAlarms.add(alarmDate, "ignoreTimezone"); 
    request.onsuccess = onAlarmAdded; 
} 
function setHandler() { 
    function onAlarm(mozAlarm) { 
     // set next alarm 
     setAlarm(); 
    } 
    navigator.mozSetMessageHandler("alarm", onAlarm); 
} 
function startAlarm() { 
    setHandler(); 
    setAlarm(); 
} 
function stopAlarm() { 
    navigator.mozAlarms.remove(alarmId); 
}