Поделиться через


Добавление push-уведомлений в приложение Windows

Обзор

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

Если вы не используете скачанный проект сервера быстрого запуска, вам потребуется пакет расширения push-уведомлений. Дополнительные сведения см. в статье "Работа с пакетом SDK серверного сервера .NET для мобильных приложений Azure ".

Настройка центра уведомлений

Функция мобильных приложений Службы приложений Azure использует Центр уведомлений Azure для отправки push-уведомлений, поэтому вам нужно настроить центр уведомлений для вашего мобильного приложения.

  1. На портале Azureперейдите к службам приложений, а затем выберите серверную часть вашего приложения. В разделе Параметрывыберите Push.

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

    Настройка концентратора

Теперь вы подключили центр уведомлений к внутреннему проекту мобильных приложений. Позже вы настроите этот центр уведомлений для подключения к системе уведомлений платформы (PNS) для отправки на устройства.

Регистрация приложения для работы с push-уведомлениями

Вам нужно отправить приложение в Microsoft Store, а затем настроить серверный проект для интеграции со службами push-уведомлений Windows (WNS) для отправки push-уведомлений .

  1. В Проводнике решений Visual Studio щелкните правой кнопкой мыши проект приложения UWP, выберите Store>Связать приложение с Магазином....

    Связывание приложения с Microsoft Store

  2. В мастере нажмите кнопку "Далее", войдите с помощью учетной записи Майкрософт, введите имя приложения в поле "Резервировать новое имя приложения", а затем нажмите кнопку "Резервировать".

  3. После успешного создания регистрации приложения выберите новое имя приложения, нажмите кнопку Далее и нажмите кнопку "Связать". При этом в манифест приложения добавляются необходимые сведения о регистрации в Microsoft Store.

  4. Перейдите на портал регистрации приложений и войдите с помощью учетной записи Майкрософт. Щелкните приложение Магазина Windows, связанное на предыдущем шаге.

  5. На странице регистрации запишите значение в разделе "Секреты приложения " и идентификатор безопасности пакета, который будет использоваться для настройки серверной части мобильного приложения.

    Связывание приложения с Microsoft Store

    Это важно

    Секрет клиента и идентификатор безопасности пакета являются важными учетными данными безопасности. Не делитесь этими значениями с кем-либо и не распространяйте их вместе с вашим приложением. Идентификатор приложения используется с секретом для настройки проверки подлинности учетной записи Майкрософт.

Центр приложений также содержит инструкции по настройке приложений UWP для push-уведомлений.

Настройка серверной части для отправки push-уведомлений

  1. На портале Azure выберите Обзор всех>служб приложений. Затем выберите бэкэнд мобильных приложений. В настройкахвыберите Push-уведомления службы приложений. Затем выберите имя концентратора уведомлений.

  2. Перейдите к Windows (WNS). Затем введите ключ безопасности (секрет клиента) и идентификатор безопасности пакета, полученный на сайте Live Services. Затем выберите Сохранить.

    Задайте ключ WNS на портале

Теперь серверная часть настроена на использование WNS для отправки push-уведомлений.

Обновление сервера для отправки push-уведомлений

Используйте приведенную ниже процедуру, которая соответствует типу внутреннего проекта — серверной части .NET или Node.js серверной части.

Серверный проект на .NET

  1. В Visual Studio щелкните правой кнопкой мыши проект сервера и выберите пункт "Управление пакетами NuGet", найдите Microsoft.Azure.NotificationHubs и нажмите кнопку "Установить". При этом устанавливается клиентская библиотека Центров уведомлений.

  2. Разверните Контроллеры, откройте TodoItemController.cs и добавьте следующие инструкции using:

    using System.Collections.Generic;
    using Microsoft.Azure.NotificationHubs;
    using Microsoft.Azure.Mobile.Server.Config;
    
  3. В методе 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-уведомление после вставки нового элемента.

  4. Переопубликуйте серверный проект.

Node.js серверный проект

  1. Настройте ваш бэкенд-проект.

  2. Замените существующий код в файле 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.

  3. При редактировании файла на локальном компьютере повторно опубликуйте проект сервера.

Добавление push-уведомлений в приложение

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

  1. Откройте файл проекта App.xaml.cs и добавьте следующие using инструкции:

    using System.Threading.Tasks;
    using Windows.Networking.PushNotifications;
    
  2. В том же файле добавьте в класс 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.

  3. В верхней части обработчика событий OnLaunched в App.xaml.cs добавьте асинхронный модификатор в определение метода и добавьте следующий вызов к новому методу InitNotificationsAsync , как показано в следующем примере:

    protected async override void OnLaunched(LaunchActivatedEventArgs e)
    {
        await InitNotificationsAsync();
    
        // ...
    }
    

    Это гарантирует, что при каждом запуске приложения регистрируется кратковременный ChannelURI.

  4. Перестройте проект приложения UWP. Теперь приложение готово к получению тост-уведомлений.

Тестирование push-уведомлений в приложении

  1. Щелкните правой кнопкой мыши проект Магазина Windows, нажмите кнопку "Задать как начальный проект", а затем нажмите клавишу F5, чтобы запустить приложение Магазина Windows.

    После запуска приложения устройство регистрируется для push-уведомлений.

  2. Остановите приложение Магазина Windows и повторите предыдущий шаг для приложения Магазина Windows Phone.

    На этом этапе оба устройства зарегистрированы для получения push-уведомлений.

  3. Снова запустите приложение Магазина Windows и введите текст в поле "Вставка TodoItem" и нажмите кнопку "Сохранить".

    Обратите внимание, что после завершения вставки приложения Магазина Windows и Windows Phone получают push-уведомление от WNS. Уведомление отображается на Windows Phone, даже если приложение не запущено.

Дальнейшие действия

Дополнительные сведения о push-уведомлениях:

Рассмотрите возможность продолжения работы с одним из следующих руководств:

  • Добавление проверки подлинности в приложение Узнайте, как пройти проверку подлинности пользователей приложения с помощью поставщика удостоверений.
  • Включение автономной синхронизации для приложения Узнайте, как добавить автономную поддержку приложения с помощью серверной части мобильного приложения. Автономная синхронизация позволяет конечным пользователям взаимодействовать с мобильным приложением — просматривать, добавлять или изменять данные, даже если сетевого подключения нет.