Как использовать теги концентратора уведомлений Azure для push-сообщений в приложениях UWP

Я хочу отправлять push-сообщения приложениям по определенным каналам, например «en-us» и «fr-fr», чтобы локализовать push-уведомления.

Сначала я следовал этому руководству, и все сработало: https://learn.microsoft.com/en-us/azure/notification-hubs/notification-hubs-windows-store-dotnet-get-started-wns-push-notification

рабочая регистрация есть:

var result = await hub.RegisterNativeAsync(channel.Uri);

Но это для отправки одного сообщения всем клиентам. Затем я последовал этому руководству: https://learn.microsoft.com/en-us/azure/notification-hubs/notification-hubs-windows-notification-dotnet-push-xplat-segmented-wns

и из того, что я смог извлечь из этой запутанной смеси с кодом uwp, есть эта строка:

var hub = new NotificationHub("AppName", "endpoint");
            
            const string templateBodyWNS = "<toast><visual><binding template=\"ToastText01\"><text id=\"1\">$(messageParam)</text></binding></visual></toast>";

            var result = await hub.RegisterTemplateAsync(channel.Uri, templateBodyWNS, "simpleWNSTemplateExample", new string[] { "en-us" });

Результат также дает мне действительную регистрацию.

Затем я попытался протестировать его с помощью консоли концентратора уведомлений Azure (которая работала с предыдущим шагом, чтобы отправить его всем клиентам:

в результате приложение получило уведомление (оно не фильтрует «en-us»). Затем я попытался поместить «en-us» в «выражение отправки тега»:

При этом всплывающее сообщение не приходит.

Затем я попытался отправить сообщение через пакет Microsoft.Azure.NotificationHubs.

Этот код работает:

NotificationHubClient Hub = NotificationHubClient.CreateClientFromConnectionString(endpoint,  name);
            string toast = @"<?xml version='1.0' encoding='utf-8'?>
  <toast>
  <visual><binding template='ToastText01'>
     <text id='1'> Test message </text>
          </binding>
          </visual>
          </toast>
          ";
      var result = await     Hub.SendWindowsNativeNotificationAsync(toast);
   

Приходит тост-сообщение. Но как только я изменю последнюю строку на:

var result = await Hub.SendWindowsNativeNotificationAsync(toast, "en-us");

Ничего не приходит. Итак, Notification Hub успешно подключается к клиенту через WNS, но с помощью тегов вообще не работает. Что я делаю неправильно?

Почему в Python есть оператор &quot;pass&quot;?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
2
0
765
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Хорошо, я понял, вот для тех, у кого такой же вопрос:

Во-первых, поскольку кто-то еще может запутаться в этом, нам нужно понять, что концепция определения шаблонов push отличается от того, как работает FCM (для Android). В FCM вы определяете макет и содержимое push-сообщений на стороне сервера.

В UWP это происходит на стороне клиента при использовании тегов. При разработке всплывающего уведомления вы можете поместить в него переменные, которые затем будут заполнены на стороне сервера.

Это рабочий код.

Сторона клиента:

var hub = new NotificationHub("Hubname", "endpoint");
string toast = @"<toast>
<visual><binding template='ToastGeneric'>
<text id='1'>$(Title)</text>
<text id='2'>$(Message)</text>

<text placement='attribution'>via SMS</text>
</binding>
</visual>
</toast>
";
var result = await hub.RegisterTemplateAsync(channel.Uri, toast, localizedWNSTemplateExample", new string[] { "myTag" });

На стороне сервера:

NotificationHubClient Hub = NotificationHubClient.CreateClientFromConnectionString(endpoint, name);
Dictionary<string, string> templateParams = new Dictionary<string, string>();
templateParams["Title"] = "Title here";
templateParams["Message"] = "Message here";
await Hub.SendTemplateNotificationAsync(templateParams, "myTag");

А из Интернета вы можете отправлять сообщения с помощью платформы «Пользовательский шаблон»:

Не уверен, что «Пользовательский шаблон» также можно использовать с Android и iOS. Это было бы замечательно.

Другие вопросы по теме