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

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

Нацеливание на определенные регистрации

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

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

  1. Широковещательная рассылка: уведомление получают все регистрации в центре уведомлений.

  2. По тегу: уведомление получают все регистрации, которые содержат указанный тег.

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

Примечание

При отправке полезных данных определенной платформы (например, уведомлений Магазина Windows) уведомление получат только регистрации для этой платформы. При отправке уведомления шаблона его получат только регистрации, задающие шаблон. Дополнительные сведения см. в разделе "Управление регистрацией".

Теги

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

Tag Expressions

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

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

Вы можете отправлять уведомления в теги с помощью методов отправки уведомлений класса Microsoft.ServiceBus.Notifications.NotificationHubClient в пакете SDK. Вы также можете использовать Node.js или REST API push-уведомлений.

Обратите внимание на следующие примеры.

await hub.SendWindowsNativeNotificationAsync(wnsToast, "tag");
notificationHubService.wns.sendToastText01('tag', {
            text1: 'Hello World!'
        }, callback);

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

Tag Expressions

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

Важно!

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

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

Примечание

В предыдущем примере следует отправить одно уведомление по двум тегам (указав массив тегов или используя выражение с тегами и OR), а не два уведомления. Отправка двух уведомлений по отдельным тегам приведет к получению дубликатов в регистрациях, имеющих оба тега, а при использовании выражения с тегами такого не будет.

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

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

Tag Expressions

На этом рисунке сообщение с тегом uid:Alice поступает во все регистрации с тегом uid:Alice и, следовательно, на все устройства Элис.

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

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

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

(follows_RedSox || follows_Cardinals) && location_Boston

Tag Expressions

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

Уведомления можно отправлять в выражения тегов с помощью методов отправки уведомлений класса Microsoft.ServiceBus.Notifications.NotificationHubClient в пакете SDK. Вы также можете использовать Node.js или REST API push-уведомлений. Обратите внимание на следующие примеры.

await hub.SendWindowsNativeNotificationAsync(wnsToast, "(tagA && !tagB)");
notificationHubService.wns.sendToastText01('(tagA && !tagB)', {
            text1: 'Hello World!'
        }, callback);

См. также:

Другие ресурсы

Справочники по API
учебника по передаче экстренных новостей
Руководство по отправке уведомлений пользователям