Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Alarm API

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 be ignoreTimezone or honorTimezone
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

관련 

문서 태그 및 공헌자

 이 페이지의 공헌자: lukavega
 최종 변경: lukavega,