This is an experimental technology
Because this technology's specification has not stabilized, check the compatibility table for the proper prefixes to use in various browsers. Also note that the syntax and behavior of an experimental technology is subject to change in future versions of browsers as the spec changes.
개요
Alarm API는 스케줄 알림, 또는 어플리케이션이 동작할 특정 시간을 설정한다. 알람 같은 어플리케이션 -시계, 달력, 자동 업데이트 등-은 특정 시간의 동작을 활성화해주는 Alarm API가 필요하다.
알람은 시스템 메시지 API를 통해 어플리케이션으로 전달된다. 알람 메시지에 허가된 어플리케이션은 알람을 사용할 수 있다.
알람은 MozAlarmsManager
인터페이스의 인스턴스 객체인 window.navigator.mozAlarms
로 설정한다.
알람 일정 설정하기
알람을 사용할 때는 시간 설정 부터 시작한다. 표준 시간대(타임존) 기준으로 두가지의 알람이 있지만 공통적으로 MozAlarmsManager.add
메소드를 사용한다.
Note: 알람이 특정 어플리케이션에 타겟팅 되지 않았다면 시스템은 알람을 기다리는 모든 어플리케이션에 신호를 전달할 것이다.
표준 시간대를 무시하는 알람
이 알람은 기기의 로컬 시간대에 맞춰 전송된다. 사용자가 시간대를 변경하면, 알람은 새로운 시간대에 맞춰 전송될 것이다. 예를 들면, 파리의 사용자가 CET (Central European Time) 기준으로 오후 12시에 알람을 설정하다가 샌프란시스코로 이동하면 PDT (Pacific Daylight Time) 기준의 오후 12시에 알람을 받는다.
// 알람 일정 var myDate = new Date("May 15, 2012 16:20:00"); // 알람이 울릴 때 사용할 임의의 데이터 var data = { foo: "bar" } // 표준시간대를 무시하도록 "ignoreTimezone" 설정 var request = navigator.mozAlarms.add(myDate, "ignoreTimezone", data); request.onsuccess = function () { console.log("The alarm has been scheduled"); }; request.onerror = function () { console.log("An error occurred: " + this.error.name); };
표준 시간대 기준의 알람
이 알람은 알람 일정을 정한 당시의 표준 시간에 맞춰 알람 신호가 전송된다. 사용자가 시간대를 변경하더라도 표준 시간대에 맞춰 알람이 울릴 것이다. 예를 들면, 파리의 사용자가 CET 기준 오후 12시에 설정하고 샌프란시스코로 이동한다면 PDT 기준 오전 3시에 알람이 울릴 것이다.
// 알람 일정 var myDate = new Date("May 15, 2012 16:20:00"); // 알람이 울릴 때 사용할 임의의 데이터 var data = { foo: "bar" } // 표준 시간대를 반영한 알람을 사용하도록 "honorTimezone" 설정 var request = navigator.mozAlarms.add(myDate, "honorTimezone", data); request.onsuccess = function () { console.log("The alarm has been scheduled"); }; request.onerror = function () { console.log("An error occurred: " + this.error.name); };
알람 관리
알람을 한번 생성하면 계속 관리할 수 있다.
MozAlarmsManager.getAll
메소드는 현재 설정된 모든 알람 리스트를 반환한다. 이 리스트는 mozAlarm 객체의 배열이다.
mozAlarm
Those objects are anonymous JavaScript objects with the following properties:
-
id
- A number representing the id of the alarm
-
date
- A Date object representing the scheduled time for the alarm
-
respectTimezone
-
A string indicating if the alarm must respect or ignore the timezone information of the
date
object. Its value can beignoreTimezone
orhonorTimezone
-
data
- A JavaScript object contaning any data that were stored with the alarm
var request = navigator.mozAlarms.getAll(); request.onsuccess = function () { this.result.forEach(function (alarm) { console.log('Id: ' + alarm.id); console.log('date: ' + alarm.date); console.log('respectTimezone: ' + alarm.respectTimezone); console.log('data: ' + JSON.stringify(alarm.data)); }); }; request.onerror = function () { console.log("An error occurred: " + this.error.name); };
MozAlarmsManager.remove
: 알람 설정 해제
var alarmId; // 알람 설정 & request 변수에 알람 id 저장 var request = navigator.mozAlarms.add(new Date("May 15, 2012 16:20:00"), "honorTimezone"); request.onsuccess = function () { alarmId = this.result.id; } // ... // 알람 해제 if (alarmId) { navigator.mozAlarms.remove(alarmId); }
알람 다루기
시스템이 알람 신호를 전송할 때는 모든 어플리케이션에서 받아 쓸 수 있다. 어플리케이션에서 알람을 사용하려면 알람 핸들러의 권한을 추가해야 한다. 이는, 시스템 메시징 API의 두 단계를 거치면 된다.:
1, application manifest 의 message property에 alarm property를 추가하고 알람 신호를 받아서 사용할 콜백 함수가 등록된 문서의 URL 경로를 입력한다.
"messages": [ { "alarm": "/index.html" } ]
2. 어플리케이션에 alarm
message에 대한 콜백 함수를 추가한다. navigator.mozSetMessageHandler
메소드를 사용한다. 이 콜백 함수는 알람 관련 데이터가 포함된 mozAlarm 객체에 접근할 수 있다.
navigator.mozSetMessageHandler("alarm", function (mozAlarm) { alert("alarm fired: " + JSON.stringify(mozAlarm.data)); });
어플리케이션이 시스템 레벨에서 아직 동작하지 않은 알람의 유무를 파악하고 싶다면 navigator.mozHasPendingMessage
메소드의 value를 "alarm"으로 설정하면 된다.
navigator.mozHasPendingMessage("alarm");
명세
Specification | Status | Comment |
---|---|---|
Web Alarms API | Working Draft | Initial specification. |
브라우저 호환
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | ? | 16 (16) moz | Not supported | Not supported | Not supported |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | ? | Not supported | 10.0 (10) moz | Not supported | Not supported | Not supported |