Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Обзор
В этом руководстве вы добавите push-уведомления в проект быстрого запуска Windows, чтобы уведомление отправлялось на устройство при каждой вставке записи.
Если вы не используете скачанный проект сервера быстрого запуска, вам потребуется пакет расширения push-уведомлений. Дополнительные сведения см. в статье "Работа с пакетом SDK серверного сервера .NET для мобильных приложений Azure ".
Настройка центра уведомлений
Функция мобильных приложений Службы приложений Azure использует Центр уведомлений Azure для отправки push-уведомлений, поэтому вам нужно настроить центр уведомлений для вашего мобильного приложения.
На портале Azureперейдите к службам приложений, а затем выберите серверную часть вашего приложения. В разделе Параметрывыберите Push.
Чтобы добавить ресурс концентратора уведомлений в приложение, выберите Подключиться. Вы можете создать концентратор или подключиться к существующему.
Теперь вы подключили центр уведомлений к внутреннему проекту мобильных приложений. Позже вы настроите этот центр уведомлений для подключения к системе уведомлений платформы (PNS) для отправки на устройства.
Регистрация приложения для работы с push-уведомлениями
Вам нужно отправить приложение в Microsoft Store, а затем настроить серверный проект для интеграции со службами push-уведомлений Windows (WNS) для отправки push-уведомлений .
В Проводнике решений Visual Studio щелкните правой кнопкой мыши проект приложения UWP, выберите Store>Связать приложение с Магазином....
В мастере нажмите кнопку "Далее", войдите с помощью учетной записи Майкрософт, введите имя приложения в поле "Резервировать новое имя приложения", а затем нажмите кнопку "Резервировать".
После успешного создания регистрации приложения выберите новое имя приложения, нажмите кнопку Далее и нажмите кнопку "Связать". При этом в манифест приложения добавляются необходимые сведения о регистрации в Microsoft Store.
Перейдите на портал регистрации приложений и войдите с помощью учетной записи Майкрософт. Щелкните приложение Магазина Windows, связанное на предыдущем шаге.
На странице регистрации запишите значение в разделе "Секреты приложения " и идентификатор безопасности пакета, который будет использоваться для настройки серверной части мобильного приложения.
Это важно
Секрет клиента и идентификатор безопасности пакета являются важными учетными данными безопасности. Не делитесь этими значениями с кем-либо и не распространяйте их вместе с вашим приложением. Идентификатор приложения используется с секретом для настройки проверки подлинности учетной записи Майкрософт.
Центр приложений также содержит инструкции по настройке приложений UWP для push-уведомлений.
Настройка серверной части для отправки push-уведомлений
На портале Azure выберите Обзор всех>служб приложений. Затем выберите бэкэнд мобильных приложений. В настройкахвыберите Push-уведомления службы приложений. Затем выберите имя концентратора уведомлений.
Перейдите к Windows (WNS). Затем введите ключ безопасности (секрет клиента) и идентификатор безопасности пакета, полученный на сайте Live Services. Затем выберите Сохранить.
Теперь серверная часть настроена на использование WNS для отправки push-уведомлений.
Обновление сервера для отправки push-уведомлений
Используйте приведенную ниже процедуру, которая соответствует типу внутреннего проекта — серверной части .NET или Node.js серверной части.
Серверный проект на .NET
В Visual Studio щелкните правой кнопкой мыши проект сервера и выберите пункт "Управление пакетами NuGet", найдите Microsoft.Azure.NotificationHubs и нажмите кнопку "Установить". При этом устанавливается клиентская библиотека Центров уведомлений.
Разверните Контроллеры, откройте TodoItemController.cs и добавьте следующие инструкции using:
using System.Collections.Generic; using Microsoft.Azure.NotificationHubs; using Microsoft.Azure.Mobile.Server.Config;В методе PostTodoItem добавьте следующий код после вызова InsertAsync:
// Get the settings for the server project. HttpConfiguration config = this.Configuration; MobileAppSettingsDictionary settings = this.Configuration.GetMobileAppSettingsProvider().GetMobileAppSettings(); // Get the Notification Hubs credentials for the Mobile App. string notificationHubName = settings.NotificationHubName; string notificationHubConnection = settings .Connections[MobileAppSettingsKeys.NotificationHubConnectionString].ConnectionString; // Create the notification hub client. NotificationHubClient hub = NotificationHubClient .CreateClientFromConnectionString(notificationHubConnection, notificationHubName); // Define a WNS payload var windowsToastPayload = @"<toast><visual><binding template=""ToastText01""><text id=""1"">" + item.Text + @"</text></binding></visual></toast>"; try { // Send the push notification. var result = await hub.SendWindowsNativeNotificationAsync(windowsToastPayload); // Write the success result to the logs. config.Services.GetTraceWriter().Info(result.State.ToString()); } catch (System.Exception ex) { // Write the failure result to the logs. config.Services.GetTraceWriter() .Error(ex.Message, null, "Push.SendAsync Error"); }Этот код сообщает концентратору уведомлений отправить push-уведомление после вставки нового элемента.
Переопубликуйте серверный проект.
Node.js серверный проект
Настройте ваш бэкенд-проект.
Замените существующий код в файле todoitem.js следующим образом:
var azureMobileApps = require('azure-mobile-apps'), promises = require('azure-mobile-apps/src/utilities/promises'), logger = require('azure-mobile-apps/src/logger'); var table = azureMobileApps.table(); table.insert(function (context) { // For more information about the Notification Hubs JavaScript SDK, // see https://aka.ms/nodejshubs logger.info('Running TodoItem.insert'); // Define the WNS payload that contains the new item Text. var payload = "<toast><visual><binding template=\ToastText01\><text id=\"1\">" + context.item.text + "</text></binding></visual></toast>"; // Execute the insert. The insert returns the results as a Promise, // Do the push as a post-execute action within the promise flow. return context.execute() .then(function (results) { // Only do the push if configured if (context.push) { // Send a WNS native toast notification. context.push.wns.sendToast(null, payload, function (error) { if (error) { logger.error('Error while sending push notification: ', error); } else { logger.info('Push notification sent successfully!'); } }); } // Don't forget to return the results from the context.execute() return results; }) .catch(function (error) { logger.error('Error while running context.execute: ', error); }); }); module.exports = table;Это отправляет всплывающее уведомление WNS, содержащее элемент item.text при вставке нового элемента todo.
При редактировании файла на локальном компьютере повторно опубликуйте проект сервера.
Добавление push-уведомлений в приложение
Затем ваше приложение должно зарегистрироваться для получения push-уведомлений при запуске. Если вы уже включили проверку подлинности, убедитесь, что пользователь войдет в систему, прежде чем пытаться зарегистрировать push-уведомления.
Откройте файл проекта App.xaml.cs и добавьте следующие
usingинструкции:using System.Threading.Tasks; using Windows.Networking.PushNotifications;В том же файле добавьте в класс App следующее определение метода InitNotificationsAsync:
private async Task InitNotificationsAsync() { // Get a channel URI from WNS. var channel = await PushNotificationChannelManager .CreatePushNotificationChannelForApplicationAsync(); // Register the channel URI with Notification Hubs. await App.MobileService.GetPush().RegisterAsync(channel.Uri); }Этот код извлекает ChannelURI для приложения из WNS, а затем регистрирует этот ChannelURI в мобильном приложении App Service.
В верхней части обработчика событий OnLaunched в App.xaml.cs добавьте асинхронный модификатор в определение метода и добавьте следующий вызов к новому методу InitNotificationsAsync , как показано в следующем примере:
protected async override void OnLaunched(LaunchActivatedEventArgs e) { await InitNotificationsAsync(); // ... }Это гарантирует, что при каждом запуске приложения регистрируется кратковременный ChannelURI.
Перестройте проект приложения UWP. Теперь приложение готово к получению тост-уведомлений.
Тестирование push-уведомлений в приложении
Щелкните правой кнопкой мыши проект Магазина Windows, нажмите кнопку "Задать как начальный проект", а затем нажмите клавишу F5, чтобы запустить приложение Магазина Windows.
После запуска приложения устройство регистрируется для push-уведомлений.
Остановите приложение Магазина Windows и повторите предыдущий шаг для приложения Магазина Windows Phone.
На этом этапе оба устройства зарегистрированы для получения push-уведомлений.
Снова запустите приложение Магазина Windows и введите текст в поле "Вставка TodoItem" и нажмите кнопку "Сохранить".
Обратите внимание, что после завершения вставки приложения Магазина Windows и Windows Phone получают push-уведомление от WNS. Уведомление отображается на Windows Phone, даже если приложение не запущено.

Дальнейшие действия
Дополнительные сведения о push-уведомлениях:
- Использование управляемого клиента для мобильных приложений Azure Шаблоны обеспечивают гибкость отправки кроссплатформенных push-уведомлений и локализованных push-уведомлений. Узнайте, как зарегистрировать шаблоны.
- Диагностика проблем с push-уведомлением Существуют различные причины, по которым уведомления могут быть удалены или не заканчиваться на устройствах. В этом разделе показано, как проанализировать и выяснить первопричину сбоев push-уведомлений.
Рассмотрите возможность продолжения работы с одним из следующих руководств:
- Добавление проверки подлинности в приложение Узнайте, как пройти проверку подлинности пользователей приложения с помощью поставщика удостоверений.
- Включение автономной синхронизации для приложения Узнайте, как добавить автономную поддержку приложения с помощью серверной части мобильного приложения. Автономная синхронизация позволяет конечным пользователям взаимодействовать с мобильным приложением — просматривать, добавлять или изменять данные, даже если сетевого подключения нет.