Notifications API 사용

chrome.notifications API를 사용하면 템플릿을 사용하여 알림을 만들고 사용자의 작업 표시줄에서 사용자에게 다음 알림을 표시할 수 있습니다.

작업 표시줄의 알림

표시 방식

리치 알림은 기본, 이미지, 목록, 진행률의 네 가지 종류로 제공됩니다. 모든 알림에는 제목, 메시지, 알림 메시지 왼쪽에 표시되는 작은 아이콘, 더 밝은 색상의 세 번째 텍스트 필드로 표시되는 contextMessage 필드가 포함됩니다.

기본 알림:

기본 알림

목록 알림에는 원하는 수의 목록 항목이 표시됩니다.

목록 알림

이미지 알림에는 이미지 미리보기가 포함됩니다.

이미지 알림

진행률 알림에는 진행률 표시줄이 표시됩니다.

진행 상황 알림

독자층의 행동

ChromeOS에서는 알림이 사용자의 작업 표시줄에 표시되며 사용자가 닫을 때까지 작업 표시줄에 유지됩니다. 작업 표시줄에는 모든 새 알림의 수가 표시됩니다. 사용자가 작업 표시줄에 알림이 표시되면 개수가 0으로 재설정됩니다.

알림에는 -2~2 사이의 우선순위가 할당될 수 있습니다. 0보다 낮은 우선순위는 ChromeOS 알림 센터에 표시되며 다른 플랫폼에서 오류가 발생합니다. 기본 우선순위는 0입니다. 0보다 큰 우선순위는 기간을 늘리기 위해 표시되며 우선순위가 높은 알림은 작업 표시줄에 표시될 수 있습니다.

priority 설정은 macOS의 알림 순서에 영향을 미치지 않습니다.

모든 알림 유형에는 정보 표시 외에도 최대 두 개의 작업 항목이 포함될 수 있습니다. 사용자가 작업 항목을 클릭하면 확장 프로그램이 적절한 작업으로 응답할 수 있습니다. 예를 들어 사용자가 답장을 클릭하면 이메일 앱이 열리고 사용자는 답장을 완료할 수 있습니다.

알림의 작업

개발 방법

이 API를 사용하려면 notifications.create() 메서드를 호출하고 options 매개변수를 사용하여 알림 세부정보를 전달합니다.

await chrome.notifications.create(id, options);

notifications.NotificationOptions에는 사용 가능한 알림 세부정보와 이러한 세부정보가 표시되는 방식을 정의하는 notifications.TemplateType가 포함되어야 합니다.

기본 알림 만들기

모든 템플릿 유형 (basic, image, list, progress)에는 알림 titlemessage은 물론 알림 메시지 왼쪽에 표시되는 작은 아이콘의 링크인 iconUrl도 포함되어야 합니다.

다음은 basic 템플릿의 예입니다.

var opt = {
  type: "basic",
  title: "Primary Title",
  message: "Primary message to display",
  iconUrl: "url_to_small_icon"
}

이미지 사용

image 템플릿 유형에는 알림 내에서 미리 볼 수 있는 이미지의 링크인 imageUrl도 포함됩니다. macOS에서는 사용자에게 이미지가 표시되지 않습니다.

var opt = {
  type: "image",
  title: "Primary Title",
  message: "Primary message to display",
  iconUrl: "url_to_small_icon",
  imageUrl: "url_to_preview_image"
}

목록 알림 만들기

list 템플릿은 items을 목록 형식으로 표시합니다. macOS 사용자에게는 첫 번째 항목만 표시됩니다.

var opt = {
  type: "list",
  title: "Primary Title",
  message: "Primary message to display",
  iconUrl: "url_to_small_icon",
  items: [{ title: "Item1", message: "This is item 1."},
          { title: "Item2", message: "This is item 2."},
          { title: "Item3", message: "This is item 3."}]
}```

### Create progress notification {: #progress }

The `progress` template displays a progress bar where current progress ranges from 0 to 100. On macOS the progress bar displays as a percentage value in the notification title instead of in the progress bar.

```js
var opt = {
  type: "progress",
  title: "Primary Title",
  message: "Primary message to display",
  iconUrl: "url_to_small_icon",
  progress: 42
}

이벤트 수신 대기 및 이벤트 응답

모든 알림에는 사용자 작업에 응답하는 이벤트 리스너와 이벤트 핸들러가 포함될 수 있습니다 (chrome.events 참고). 예를 들어 이벤트 핸들러를 작성하여 notifications.onButtonClicked 이벤트에 응답할 수 있습니다.

이벤트 리스너:

chrome.notifications.onButtonClicked.addListener(replyBtnClick);

이벤트 핸들러:

function replyBtnClick {
    //Write function to respond to user action.
}

확장 프로그램이 실행 중이 아닐 때도 알림이 팝업될 수 있도록 서비스 워커 내에 이벤트 리스너와 핸들러를 포함하는 것이 좋습니다.