Маршрутизация и выражения тегов

Обзор

Выражения тегов позволяют выбирать определенные целевые наборы устройств, а точнее регистраций, при отправке push-уведомлений через центры уведомлений.

Выбор регистраций

Единственный способ выбрать определенные регистрации для получения уведомлений — это связать с ними теги, а затем указывать эти теги в качестве назначения. Как описано в статье Управление регистрациями, для получения push-уведомлений приложение должно зарегистрировать маркер устройства в центре уведомлений. После создания приложением регистрации в центре уведомлений серверная часть приложения может отправлять ей push-уведомления. Серверная часть приложения выбирает целевые регистрации для отправки определенных уведомлений следующим образом.

  1. Широковещательная рассылка: уведомление получают все регистрации в центре уведомлений.
  2. По тегу: уведомление получают все регистрации, которые содержат указанный тег.
  3. По выражению тега: уведомление получают все регистрации, набор тегов которых соответствует указанному выражению.

Теги

Тегом может быть любая строка длиной до 120 знаков, содержащая буквы, цифры и следующие знаки: _, @, #, ., :, -. В следующем примере показано приложение, из которого можно получать всплывающие уведомления об определенных музыкальных группах. В этом случае для маршрутизации уведомлений удобно пометить регистрации тегами различных групп, как показано на рисунке ниже.

Общие сведения о тегах

На этом рисунке сообщение с тегом Beatles поступает только на планшет, зарегистрированный с тегом Beatles.

Дополнительные сведения о создании регистраций по тегам см. в статье Управление регистрацией.

Можно отправлять уведомления для тегов, используя методы отправки уведомлений класса Microsoft.Azure.NotificationHubs.NotificationHubClient из пакета SDK центров уведомлений Microsoft Azure . Также можно использовать Node.js или интерфейсы API REST push-уведомлений. Ниже приведен пример с использованием пакета 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");

Теги необязательно определяются заранее и могут быть связаны с несколькими аспектами приложения. Например, пользователи приложения из этого примера могут оставлять свои комментарии по группам и хотят получать всплывающие уведомления не только о комментариях по своим любимым группам, но и обо всех комментариях от своих друзей, независимо от того, какую группу они комментируют. На рисунке ниже показан пример такого сценария.

Пометка друзей

В этом примере Алиса интересуется новостями о Beatles, а Боб — о Wailers. Боба также интересуют комментарии Чарли, а Чарли интересуется Wailers. Когда отправляется уведомление о комментарии Чарли по Beatles, его получают от Центров уведомлений и Алиса, и Боб.

Несмотря на то, что теги могут соответствовать нескольким характеристикам сразу (например, band_Beatles или follows_Charlie), они являются простыми строками: это не свойства со значениями. Успешное сопоставление с регистрацией происходит только при наличии или отсутствии конкретного тега.

Полное пошаговое руководство по использованию тегов для отправки сообщений по группам интересов см. в статье Использование Центров уведомлений для передачи экстренных новостей.

Примечание

Центры уведомлений Azure поддерживают не более 60 тегов для каждой регистрации.

Использование тегов для выбора конечных пользователей

Теги также могут использоваться для идентификации всех устройств, связанных с определенным пользователем. Регистрацию можно пометить тегом, который содержит идентификатор пользователя, как показано на рисунке ниже.

Пометка пользователей

На этом рисунке показано, что сообщение с тегом user_Alice поступает на все устройства с тегом user_Alice.

Выражения тегов

Бывают случаи, когда уведомление должно направляться в ряд регистраций, которые определяются не одним тегом, а логическим выражением с тегами.

Рассмотрим спортивное приложение, которое отправляет напоминание всем пользователям в Бостоне об игре между командами Red Sox и Cardinals. Если в клиентском приложении регистрируются теги об интересе к командам и месту, то уведомление должно отправляться всем пользователям в Бостоне, интересующимся Red Sox или Cardinals. Это условие можно задать с помощью следующего логического выражения:

(follows_RedSox || follows_Cardinals) && location_Boston

Выражения тегов

Выражения тегов поддерживают общие логические операторы, такие как AND ( && ), OR ( || ) и NOT ( ! ); они также могут содержать круглые скобки. Выражения тегов, использующие только операторы OR, могут ссылаться на 20 тегов; выражение с операторами AND и без операторов OR может ссылаться на 10 тегов; в противном случае выражения тегов могут содержать до 6 тегов.

Ниже приведен пример отправки уведомлений с помощью выражения тегов и пакета 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);