O Projeto.
Vamos criar um alarme simples, que deve servir como base para o projeto de App de Hidratação. Este exemplo compara a hora corrente com outra previamente armazenada. Por se tratar de um exemplo, não irei usar locastorage para armazenar a hora do alarme, irei programar diretamente no código.
Preparando o projeto.
- Certifique-se que esteja utilizando a versão mais recente do IntelXDK.
- Inicie um novo projeto no Intel XDK, HTML 5 + Cordova e não habilite o App Designer.
- Nas propriedades do projeto, vá em Plugin Manager.
- Adicione o plugin background-mode – https://github.com/katzer/cordova-plugin-background-mode (veja aqui como fazer a importação)
- Adicione também o plugin local-notifications – https://github.com/katzer/cordova-plugin-local-notifications
- Adicione agora o plugin autostart https://github.com/ToniKorin/cordova-plugin-autostart
Comparando Horas.
Para trabalhar com horas e datas você deve instanciar um objeto Date() no JavaScript.
hora=new Date(); var horaAtual = hora.getHours() + ":" + hora.getMinutes(); document.write("A hora atual é " + horaAtual);
Para aplicações que necessitem de cálculos, você precisa ler este artigo.
Exemplo de Aplicação.
O código a seguir não pode ser testado no simulador do Intel XDK ou no App Preview. Gere o APK e instale em seu dispositivo, ou use uma instalação do BlueStacks.
<!DOCTYPE html> <html> <head> <title>Alarme</title> <meta http-equiv="Content-type" content="text/html; charset=utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"> <style> @-ms-viewport { width: 100vw ; zoom: 100% ; } @viewport { width: 100vw ; zoom: 100% ; } @-ms-viewport { user-zoom: fixed ; } @viewport { user-zoom: fixed ; } </style> <script src="cordova.js"></script> <script src="js/app.js"></script> <script src="xdk/init-dev.js"></script> <script> document.addEventListener('deviceready', function () { cordova.plugins.backgroundMode.enable(); setInterval(function() { //captura a hora atual hora=new Date(); var horaAtual = hora.getHours() + ":" + hora.getMinutes(); //captura a hora agendada var horaAgenda = document.getElementById('Agendamento').value; //compara a hora atual com a hora agendada if (horaAtual == horaAgenda) { var notificacao = 'Chegou o momento tão esperado!!!'; //mensagem da notificação. alert(notificacao); document.write(notificacao); // Envia a notificação se as horas foram iguais. var sound = device.platform == 'Android' ? 'file://alarme.mp3' : 'file://alarme.caf'; var dataAtual = new Date(); cordova.plugins.notificacao.local.schedule({ id: 1, title: "Notificação de Alarme", message: notificacao, at: dataAtual, sound: sound, icon: "http://etecarmine.com.br/wp/wp-content/uploads/2015/11/cropped-logo-azul.jpg" }); } }, 60000); //60 segundos }, false); </script> </head> <body> <h1>alarme</h1> <p>Agende o alarme:</p> <input type="time" id="Agendamento" required> <button onclick="alert('Agendado para ' + document.getElementById('Agendamento').value)">Checar</button> <!-- Não precisa criar nenhuma função aqui, o background-mode já está lendo estes valores --> <script> // plugin para inicializar o app automaticamente, junto com o Android / iOS cordova.plugins.autoStart.enable(); </script> </body> </html>