Anderson Danilo

Desenvolvimento para a nova web

FirefoxOS: Alarme E Notificação

| Comments

Olá, Seja bem vindo ao primeiro Tutorial sobre o FirefoxoS que estou postando nesse Blog, Apesar desse Tutorial estar voltado para o FirefoxOS você pode usar esta API no navegador (veja a tabela de compatibilidade, que ainda é muito restrita).

Conceitos

O que a API de Notificação faz?

A API de Notificação, como o próprio nome indica, exibe uma notificação, essa é a sua única e exclusiva funcionalidade

O que a API de Alarme faz?

A API de Alarme “acorda” o seu aplicativo, somente isso, não espere nada de mais, no caso do FirefoxOS o seu aplicativo “acorda” em segundo plano

Exemplo

Criando um alarme

Suponhamos que você deseja fazer um “Alarme” para acordar o dono do celular na manhã de natal de 2014, o primeiro passo é criar um alarme para esta data:

1
2
3
4
5
6
7
8
    // No objeto Date do Javascript, o número do mês vai de 0 à 11
    var alarmDate = new Date(2014, 11, 25, 8, 0, 0);

    var request = navigator.mozAlarms.add(alarmDate, "ignoreTimezone", "Natal");
    return request.onsuccess = function() {
        var alarmId = this.result;
        // Pronto, você cadastrou o alarme para 25/11/2014
    };

Pronto, você tem um alarme, mas lembre-se que isso não vai exibir nenhum alerta, somente vai acordar o seu aplicativo. Agora você deve exibir uma notificação quando o alarme for chamado.

Criando uma notificação

O Nosso primeiro problema é que a implementação foi modificada e aparelhos das primeiras versões do FirefoxOS possuem uma interface diferente para criar uma notificação, portanto teremos que fazer uma função para lidar com isso, não vou reinventar a roda, estou colocando um código que é usado no aplicativo FireseaIRC de nickdesaulniers

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    if (window.Notification) {
        var sendNotification = function(title, options) {
            return new Notification(title, options);
        };
    } else if (navigator.mozNotification) {
        var sendNotification = function(title, options) {
            var result;
            result = navigator.mozNotification.createNotification(title, options.body, options.icon);
            return result.show();
        };
    } else {
        var sendNotification = function(title, options) {
            if (options.body) {
                return alert(title + ": " + options.body);
            } else {
                return alert(title);
            }
        };
    }

Capturando um alarme e exibindo uma notificação

Pronto, já possuimos uma implementação de sendNotification, agora precisamos capturar a chamada do alarme e exibir a notificação

1
2
3
4
5
    navigator.mozSetMessageHandler("alarm", function(mozAlarm) {
        if(mozAlarm.data == "Natal") {
            sendNotification("Hoje é Natal", "Acorde, já são 8 horas")
        };
    });

Entendo que no meio da leitura algumas dúvidas possam ter surgido, como: “Porque acordar as 8 horas?”, ou “O que significa ignoreTimezone?”, porém algumas destas dúvidas podem ser respondidas na documentação da mozilla.

https://developer.mozilla.org/en-US/docs/Web/API/notification

https://developer.mozilla.org/pt-BR/docs/WebAPI/Alarme

Comments