Partilhar via


Expressões de encaminhamento e etiqueta

Descrição Geral

As expressões de etiquetas permitem-lhe direcionar conjuntos específicos de dispositivos, ou mais especificamente registos, ao enviar uma notificação push através dos Hubs de Notificação.

Segmentar registos específicos

A única forma de direcionar registos de notificações específicos é associar etiquetas às mesmas e, em seguida, direcionar essas etiquetas. Conforme discutido na Gestão de Registos, para receber notificações push, uma aplicação tem de registar uma alça de dispositivo num hub de notificação. Assim que a aplicação criar um registo num hub de notificação, o back-end da aplicação pode enviar notificações push para o mesmo. O back-end da aplicação pode escolher os registos a visar com uma notificação específica das seguintes formas:

  1. Difusão: todos os registos no hub de notificação recebem a notificação.
  2. Etiqueta: todos os registos que contêm a etiqueta especificada recebem a notificação.
  3. Expressão de etiqueta: todos os registos cujo conjunto de etiquetas correspondem à expressão especificada recebem a notificação.

Etiquetas

Uma etiqueta pode ser qualquer cadeia, até 120 carateres, que contenham carateres alfanuméricos e os seguintes carateres não alfanuméricos: "_", "@", "", "#", ".", ":", "-". O exemplo seguinte mostra uma aplicação a partir da qual pode receber notificações de alerta sobre grupos de música específicos. Neste cenário, uma forma simples de encaminhar notificações é etiquetar registos com etiquetas que representam as diferentes bandas, tal como na seguinte figura:

Descrição geral das etiquetas

Na figura, a mensagem marcada com Beatles atinge apenas o tablet que se registou com a etiqueta Beatles.

Para obter mais informações sobre como criar registos para etiquetas, veja Gestão de Registos.

Pode enviar notificações para etiquetas com os métodos de envio de notificações da Microsoft.Azure.NotificationHubs.NotificationHubClient classe no SDK dos Hubs de Notificação do Microsoft Azure . Também pode utilizar Node.js ou as APIs REST de Notificações Push. Eis um exemplo com 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 etiquetas não podem ser pré-aprovisionadas e podem referir-se a vários conceitos específicos da aplicação. Por exemplo, os utilizadores desta aplicação de exemplo podem comentar bandas e querem receber alertas, não só para os comentários nas respetivas bandas favoritas, mas também para todos os comentários dos seus amigos, independentemente da banda em que estão a comentar. A figura seguinte realça um exemplo deste cenário:

Etiquetas amigos

Neste exemplo, Alice está interessada em atualizações para os Beatles, e Bob está interessado em atualizações para os Wailers. Bob também está interessado nos comentários de Charlie, e Charlie está interessado nos Wailers. Quando é enviada uma notificação para o comentário de Charlie sobre os Beatles, os Notification Hubs enviam-na para Alice e Bob.

Embora possa codificar várias preocupações em etiquetas (por exemplo, band_Beatles ou follows_Charlie), as etiquetas são cadeias simples e não propriedades com valores. Um registo corresponde apenas à presença ou ausência de uma etiqueta específica.

Para obter um tutorial passo a passo completo sobre como utilizar etiquetas para enviar para grupos de interesses, consulte Notícias de Última Hora.

Nota

Os Hubs de Notificação do Azure suportam um máximo de 60 etiquetas por registo.

Utilizar etiquetas para utilizadores de destino

Outra forma de utilizar etiquetas é identificar todos os dispositivos associados a um determinado utilizador. Pode etiquetar um Registo com uma etiqueta que contém o ID de utilizador, tal como na seguinte figura:

Etiquetar utilizadores

Na figura, a mensagem etiquetada user_Alice atinge todos os dispositivos marcados com user_Alice.

Expressões de etiquetas

Existem casos em que as notificações têm de visar um conjunto de registos identificado não por uma única etiqueta, mas por uma expressão booleana com etiquetas.

Considere uma aplicação desportiva que envia um lembrete a todos em Boston sobre um jogo entre os Red Sox e os Cardinals. Se a aplicação cliente registar etiquetas sobre o interesse em equipas e localização, a notificação deve ser direcionada para todas as pessoas em Boston que estejam interessadas nos Red Sox ou nos Cardinals. Esta condição pode ser expressa com a seguinte expressão booleana:

(follows_RedSox || follows_Cardinals) && location_Boston

Expressões de etiquetas

As expressões de etiqueta suportam operadores booleanos comuns, como AND (&&), OR (||) e NOT (!); também podem conter parênteses. As expressões de etiquetas que utilizam apenas OR operadores podem referenciar 20 etiquetas; expressão com AND operadores, mas nenhum OR operador pode referenciar 10 etiquetas; caso contrário, as expressões de etiquetas estão limitadas a 6 etiquetas.

Eis um exemplo para enviar notificações com expressões de etiquetas com 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);