Expressões de marca e roteamento

Visão geral

As expressões de marcas permitem que você direcione conjuntos específicos de dispositivos, ou mais especificamente, registros, ao enviar uma notificação por push por meio de Hubs de notificação.

Como direcionar registros específicos

A única maneira de direcionar registros de notificações específicos é associar marcas a eles e, então, direcionar essas marcas. Conforme informado em Gerenciamento de registro, para receber notificações por push, um aplicativo precisa registrar um identificador do dispositivo em um hub de notificações. Quando um aplicativo cria um registro em um hub de notificações, o back-end do aplicativo pode enviar notificações por push para ele. O back-end do aplicativo pode escolher os registros para direcionar uma notificação específica das seguintes maneiras:

  1. Difusão: todos os registros no hub de notificação recebem a notificação.
  2. Marca: todos os registros que contêm a marca especificada recebem a notificação.
  3. Expressão de marca: todos os registros cujos conjuntos de marcas correspondem à expressão especificada recebem a notificação.

Marcações

Uma marca pode ser qualquer cadeia de caracteres com até 120 caracteres que contenha caracteres alfanuméricos e os seguintes caracteres não alfanuméricos: '_', '@', '#', '.', ':', '-'. O exemplo a seguir mostra um aplicativo do qual você pode receber notificações de aviso sobre grupos musicais específicos. Nesse cenário, uma forma simples de encaminhar as notificações é rotular os registros com marcas que representem as diferentes bandas, como na seguinte imagem:

Visão geral das marcas

Na figura, a mensagem marcada como Beatles atinge somente o tablet registrado com a marca Beatles.

Para mais informações sobre a criação de registros para marcas, consulte Gerenciamento de registro.

Você pode enviar notificações para marcas usando os métodos de notificações de envio da classe Microsoft.Azure.NotificationHubs.NotificationHubClient no SDK dos Hubs de Notificação do Microsoft Azure. Você também pode usar o Node. js ou as APIs de REST de notificações por push. Aqui está um exemplo usando o SDK.

Microsoft.Azure.NotificationHubs.NotificationOutcome outcome = null;

// Windows 8.1 / Windows Phone 8.1
var toast = @"<toast><visual><binding template=""ToastText01""><text id=""1"">" +
"You requested a Beatles notification</text></binding></visual></toast>";
outcome = await Notifications.Instance.Hub.SendWindowsNativeNotificationAsync(toast, "Beatles");

// Windows 10
toast = @"<toast><visual><binding template=""ToastGeneric""><text id=""1"">" +
"You requested a Wailers notification</text></binding></visual></toast>";
outcome = await Notifications.Instance.Hub.SendWindowsNativeNotificationAsync(toast, "Wailers");

As marcas não podem ser pré-provisionadas e podem se referir a vários conceitos específicos do aplicativo. Por exemplo, os usuários deste aplicativo de exemplo podem comentar sobre as bandas e desejar receber notificações do sistema, não apenas dos comentários sobre suas bandas favoritas, mas também de todos os comentários dos seus amigos, independentemente da banda sobre a qual eles estão comentando. A seguinte figura destaca um exemplo desse cenário:

Marcas de amigos

Neste exemplo, Alice está interessada em atualizações dos Beatles e Fábio está interessado em atualizações dos Wailers. Fábio também está interessado nos comentários de Carlos, e Carlos está interessado nos Wailers. Quando uma notificação é enviada para o comentário de Carlos sobre os Beatles, os Hubs de Notificação a enviam a Alice e Fábio.

Embora você possa codificar vários interesses nas marcas (por exemplo, band_Beatles ou follows_Charlie), as marcas são cadeias de caracteres simples, e não propriedades com valores. Um registro é correspondente somente na presença ou ausência de uma marca específica.

Para obter um tutorial passo a passo completo sobre como usar marcas para enviar para grupos de interesse, consulte as Últimas notícias.

Observação

Os Hubs de Notificação do Azure dão suporte a um máximo de 60 marcas por registro.

Como usar marcas para usuários de destino

Outra maneira de usar marcas é identificar todos os dispositivos associados a um usuário específico. Você pode marcar um Registro com uma marca que contém a ID de usuário, como na seguinte figura:

Marcar usuários

Na figura, a mensagem marcada como user_Alice atinge todos os dispositivos marcados como user_Alice.

Expressões de marca

Há casos em que as notificações precisam ter como destino um conjunto de registros identificados não por uma só marca, mas por uma expressão booliana usando marcas.

Considere um aplicativo de esportes que envia um lembrete para todos em Boston sobre um jogo entre o Red Sox e o Cardinals. Se o aplicativo cliente registrar marcas sobre interesse em times e localização, a notificação deverá ser direcionada para todos em Boston interessados no Red Sox ou no Cardinals. Essa condição pode ser expressada com a seguinte expressão booliana:

(follows_RedSox || follows_Cardinals) && location_Boston

Expressões de marca

As expressões de marca dão suporte a operadores boolianos comuns, como AND (&&), OR (||) e NOT (!). Elas também podem conter parênteses. Expressões de marca que usam apenas operadores OR podem referenciar 20 marcas. Uma expressão com operadores AND, mas sem nenhum operador OR, pode referenciar 10 marcas. Caso contrário, as expressões de marca são limitadas a 6 marcas.

Este é um exemplo de envio de notificações com expressões de marca usando o SDK:

Microsoft.Azure.NotificationHubs.NotificationOutcome outcome = null;

String userTag = "(location_Boston && !follows_Cardinals)";

// Windows 8.1 / Windows Phone 8.1
var toast = @"<toast><visual><binding template=""ToastText01""><text id=""1"">" +
"You want info on the Red Sox</text></binding></visual></toast>";
outcome = await Notifications.Instance.Hub.SendWindowsNativeNotificationAsync(toast, userTag);

// Windows 10
toast = @"<toast><visual><binding template=""ToastGeneric""><text id=""1"">" +
"You want info on the Red Sox</text></binding></visual></toast>";
outcome = await Notifications.Instance.Hub.SendWindowsNativeNotificationAsync(toast, userTag);