API de notificações avançadas

Diferença de plataforma:no Chrome versão 59, as notificações aparecem de maneira diferente para usuários do Mac OS X. Em vez das notificações do Chrome, os usuários veem notificações nativas do Mac OS X. Saiba mais neste artigo.

A API de notificações avançadas permite criar notificações usando modelos e mostrar essas notificações aos usuários na bandeja do sistema:

Notificações na bandeja do usuário do sistema

Como elas aparecem

As notificações avançadas vêm em quatro tipos diferentes: básicas, de imagem, de lista e de progresso. Todas as notificações incluem um título, uma mensagem, um ícone pequeno exibido à esquerda da mensagem de notificação e um campo contextMessage, que é exibido como um terceiro campo de texto em uma fonte de cor mais clara.

Uma imagem básica:

Notificação básica

As notificações de lista mostram qualquer número de itens de lista:

Listar notificações

As notificações de imagem incluem uma visualização da imagem:

Notificação de imagem

As notificações de progresso mostram uma barra de progresso:

Notificação de progresso

Como elas se comportam

No ChromeOS, as notificações aparecem na bandeja do sistema de um usuário e permanecem lá até que o usuário as dispense. A bandeja do sistema mantém uma contagem de todas as novas notificações. Quando um usuário vê as notificações na bandeja do sistema, a contagem é redefinida para zero.

As notificações podem receber uma prioridade entre -2 e 2. As prioridades < 0 são mostradas na Central de notificações do ChromeOS e produzem um erro em outras plataformas. A prioridade 0 é a padrão. As prioridades > 0 são mostradas por uma duração crescente, e mais notificações de alta prioridade podem ser exibidas na bandeja do sistema.

Além de mostrar informações, todos os tipos de notificação podem incluir até dois itens de ação. Quando os usuários clicam em uma ação necessária, seu app pode responder com a ação apropriada. Por exemplo, quando o usuário clica em "Responder", o app de e-mail é aberto e o usuário pode concluir a resposta:

Ação na notificação

Como desenvolver

Para usar essa API, chame o método notifications.create, transmitindo os detalhes da notificação via o options parâmetro:

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

O notifications.NotificationOptions precisa incluir um notifications.TemplateType, que define os detalhes de notificação disponíveis e como eles são mostrados.

Criar notificação básica

Todos os tipos de modelo (basic, image, list e progress) precisam incluir um title e uma message de notificação, bem como um iconUrl, que é um link para um ícone pequeno exibido à esquerda da mensagem de notificação.

Confira um exemplo de modelo basic:

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

Criar notificação de imagem

O tipo de modelo image também inclui um imageUrl, que é um link para uma imagem visualizada na notificação:

Diferença de plataforma:as imagens não serão mostradas aos usuários que usam o Chrome versão 59 ou mais recente no Mac OS X.
var opt = {
  type: "basic",
  title: "Primary Title",
  message: "Primary message to display",
  iconUrl: "url_to_small_icon",
  imageUrl: "url_to_preview_image"
}

Nos apps do Chrome, devido a uma política de segurança de conteúdo rigorosa, esses URLs precisam apontar para um recurso local ou usar um blob ou URL de dados. Use uma proporção de 3:2 para a imagem. Caso contrário, uma borda preta enquadra a imagem.

Criar notificação de lista

O modelo list mostra items em formato de lista:

Diferença de plataforma:apenas o primeiro item da lista é mostrado aos usuários no Chrome versão 59 ou mais recente no Mac OS X.
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."}]
}

Criar notificação de progresso

O modelo progress mostra uma barra de progresso em que o progresso atual varia de 0 a 100:

Diferença de plataforma:no Chrome versão 59 ou mais recente no Mac OS X, a barra de progresso é mostrada como um valor percentual no título da notificação em vez de mostrar uma barra de progresso.
var opt = {
  type: "progress",
  title: "Primary Title",
  message: "Primary message to display",
  iconUrl: "url_to_small_icon",
  progress: 42
}

Detectar e responder a eventos

Todas as notificações podem incluir listeners e manipuladores de eventos que respondem às ações do usuário (consulte chrome.events). Por exemplo, é possível escrever um manipulador de eventos para responder a um notifications.onButtonClicked evento.

Listener de eventos:

chrome.notifications.onButtonClicked.addListener(replyBtnClick);

Manipulador de eventos:

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

Considere incluir listeners e manipuladores de eventos na página de eventos para que as notificações possam aparecer mesmo quando o app ou a extensão não estiver em execução.