2014-07-08 4 views
0

regardant la documentation, il ressemble à l'api d'alarme peut être utilisé pour redémarrer une application à un certain momentalarme Firefox OS pour réveiller l'application fermée

J'ai changé le code de l'exemple boilerplate de cette manière

// Alarm API 
var alarmDate = new Date("Jul 8, 2014 19:35:00"), 
    addAlarm = document.querySelector("#add-alarm"), 
    alarmDisplay = document.querySelector("#alarm-display"); 
if (addAlarm) { 
    addAlarm.onclick = function() { 
     var alarm = navigator.mozAlarms.add(alarmDate, "honorTimezone", { 
      "optionalData" : "I am data" 
     }); 

     alarm.onsuccess = function() { 

     var request = window.navigator.mozApps.getSelf(); 
    request.onsuccess = function() { 
    navigator.mozSetMessageHandler("alarm", function (mozAlarm) { 
     request.result.launch(); 
     alert("alarm fired: " + JSON.stringify(mozAlarm.data)); 
    }); 
}; 

request.onerror = function() { 
    alert("Error: " + request.error.name); 
}; 
}; 

Le code ne semble afficher l'application que si l'application est en cours d'exécution (même en arrière-plan) MAIS pas si l'application est fermée.

Est-ce le comportement souhaité? Un moyen de redémarrer une application fermée?

Est-il possible d'afficher l'application à l'avant-plan et de la faire déverrouiller l'écran?

Merci

MISE À JOUR Une précision, la question apparaît lorsque la charge de la mémoire système exige d'avoir tué une application. Android permet de planifier le redémarrage d'une application (alors que iOS, afaik, ne le fait pas ...). Il serait utile qu'une application puisse être redémarrée au moment où elle est requise. C'est aussi économiser beaucoup de batterie ...

Répondre

2

Votre code est erroné: le setMessageHandler est créé dans le gestionnaire onsuccess de mozAlarms.add. Ce code ne sera pas exécuté lorsque l'alarme se déclenchera. Vous devez toujours ajouter l'écouteur au démarrage de l'application.

Voici un code simple qui ajoute et répond à une alarme (à partir de app-days-dhaka).

var request = navigator.mozAlarms.add(new Date((+new Date()) + 30000), 'ignoreTimezone', { 
    type: 'yolo' 
}); 

console.log('setting to', new Date((+new Date()) + 30000) + '') 

request.onsuccess = function() { 
    console.log('success'); 
} 

request.onerror = function() { 
    console.error('err'); 
} 

navigator.mozSetMessageHandler('alarm', function() { 
    console.log('alarm'); 
    launchSelf(); 
}); 

function launchSelf() { 
    var request = window.navigator.mozApps.getSelf(); 
    request.onsuccess = function() { 
    if (request.result) { 
     request.result.launch(); 
    } 
    }; 
} 

Ouvrez l'application (cela activera l'alarme), puis fermez l'application immédiatement (en appuyant longtemps sur la maison). Après 30 secondes, l'application s'ouvre à nouveau automatiquement.

+0

Génial! Merci. Cela fonctionne parfaitement et définitivement Firefoxos comme le système d'exploitation le plus facile à avoir cette configuration correctement (au moins pour les personnes utilisant javascript)! – lui

Questions connexes