Отправка push-уведомлений с помощью Центров уведомлений Azure и Node.js

Обзор

Важно!

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

В этом руководстве показано, как отправлять push-уведомления с помощью службы "Центры уведомлений Azure" непосредственно из приложения Node.js.

Описанные сценарии включают отправку push-уведомлений в приложения на следующих платформах:

  • Android
  • iOS
  • Универсальная платформа Windows
  • Windows Phone

Центры уведомлений

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

Создание приложения Node.js

Первый шаг этого руководства представляет собой создание пустого приложения Node.js. Указания по созданию приложения Node.js см. в статьях Создание и развертывание простого веб-приложения Node.js, Построение и развертывание приложения Node.js в облачной службе Azure (с использованием Windows PowerShell) или Создание и развертывание веб-приложения Node.js в Azure с использованием WebMatrix.

Настройка приложения для использования центров уведомлений

Для использования центров уведомлений Azure необходимо загрузить и использовать пакет Azureдля Node.js, который включает встроенный набор вспомогательных библиотек, взаимодействующих со службами push-уведомлений REST.

Использование диспетчера пакета Node (NPM) для получения пакета

  1. В интерфейсе командной строки, например PowerShell (Windows), Terminal (Mac) или Bash (Linux), перейдите к папке, в которой вы создали пустое приложение.
  2. Выполните команду npm install azure-sb в командном окне.
  3. Выполнив команду ls или dir вручную, вы можете убедиться, что папка node_modules создана.
  4. В этой папке найдите пакет azure , который содержит библиотеки для доступа к центру уведомлений.

Примечание

Дополнительные сведения об установке NPM доступны в официальном блоге о NPM.

Импорт модуля

С помощью текстового редактора добавьте в начало файла server.js приложения следующее:

var azure = require('azure-sb');

Настройка подключения к центру уведомлений Azure

Объект NotificationHubService позволяет работать с концентраторами уведомлений. Следующий код создает объект NotificationHubService для центра уведомлений hubname. Добавьте его в начало файла server.js после оператора импорта модуля Аzure.

var notificationHubService = azure.createNotificationHubService('hubname','connectionstring');

Получите значение connectionstring подключения на портале Azure, выполнив следующие действия.

  1. В области навигации слева щелкните Обзор.
  2. Выберите Центры уведомлений, затем щелкните центр, который хотите использовать. Если вам нужна помощь в создании центра уведомлений, обратитесь к учебнику по началу работы с центрами уведомлений для Windows.
  3. Выберите Параметры.
  4. Щелкните Политики доступа. Вы увидите строки подключения как для общего, так и для полного доступа.

Портал Azure — центры уведомлений

Примечание

Вы также можете получить строку подключения с помощью командлета Get-AzureSbNamespace в Azure PowerShell или команды azure sb namespace show в классическом интерфейсе командной строки Azure.

Общая архитектура

Объект NotificationHubService предоставляет следующие экземпляры объекта для отправки push-уведомлений определенным устройствам и приложениям.

  • Android — используйте объект GcmService, доступный в notificationHubService.gcm;
  • iOS — используйте объект ApnsService, доступный в notificationHubService.apns;
  • Windows Phone — используйте объект MpnsService, доступный в notificationHubService.mpns;
  • универсальная платформа Windows — используйте объект WnsService, доступный в notificationHubService.wns.

Примечание

Служба push-уведомлений (Майкрософт) (MPNS) устарела и больше не поддерживается.

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

Объект GcmService предоставляет метод send, который может использоваться для отправки push-уведомлений в приложения Android. Метод send принимает следующие параметры:

  • Tags — идентификатор тега. Если тег отсутствует, уведомление отправляется всем клиентам.
  • Payload — полезные данные JSON или строковые полезные данные сообщения.
  • Callback — функция обратного вызова.

Дополнительные сведения о формате полезных данных см. в документации по полезным данным.

В следующем коде для отправки push-уведомления всем зарегистрированным клиентам используется экземпляр GcmService, предоставляемый NotificationHubService.

var payload = {
  data: {
    message: 'Hello!'
  }
};
notificationHubService.gcm.send(null, payload, function(error){
  if(!error){
    //notification sent
  }
});

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

Как и в случае с описанными выше приложениями Android, объект ApnsService предоставляет метод send, который может использоваться для отправки push-уведомлений в приложения iOS. Метод send принимает следующие параметры:

  • Tags — идентификатор тега. Если тег отсутствует, уведомление отправляется всем клиентам.
  • Payload — полезные данные JSON или строковые полезные данные сообщения.
  • Callback — функция обратного вызова.

Дополнительные сведения о формате полезных данных см. в разделе Содержимое уведомленийдокументации по UserNotification.

В следующем коде используется экземпляр ApnsService, предоставляемый NotificationHubService, для отправки оповещений всем клиентам:

var payload={
    alert: 'Hello!'
  };
notificationHubService.apns.send(null, payload, function(error){
  if(!error){
      // notification sent
  }
});

Практическое руководство. Отправка push-уведомлений в приложения Windows Phone

Объект MpnsService предоставляет метод send, который может использоваться для отправки push-уведомлений в приложения Windows Phone. Метод send принимает следующие параметры:

  • Tags — идентификатор тега. Если тег отсутствует, уведомление отправляется всем клиентам.
  • Payload — полезные данные XML сообщения.
  • TargetName - toast — уведомлений во всплывающем окне. token для уведомлений на плитке.
  • NotificationClass — приоритет уведомления. Допустимые значения см. в разделе HTTP Header Elements (Элементы заголовка HTTP) документа Pushing Notifications from a Server (Windows Phone) (Push-уведомления от сервера (Windows Phone)).
  • Options — необязательные заголовки запроса.
  • Callback — функция обратного вызова.

Перечень допустимых значений TargetName, NotificationClass и параметров заголовка см. на странице XNA Game Studio 4.0 Refresh.

В следующем примере кода для отправки всплывающего push-уведомления используется экземпляр MpnsService, предоставляемый NotificationHubService.

var payload = '<?xml version="1.0" encoding="utf-8"?><wp:Notification xmlns:wp="WPNotification"><wp:Toast><wp:Text1>string</wp:Text1><wp:Text2>string</wp:Text2></wp:Toast></wp:Notification>';
notificationHubService.mpns.send(null, payload, 'toast', 22, function(error){
  if(!error){
    //notification sent
  }
});

Практическое руководство. Отправка push-уведомлений в приложения универсальной платформы Windows (UWP)

Объект WnsService предоставляет метод send, который может использоваться для отправки push-уведомлений в приложения универсальной платформы Windows. Метод send принимает следующие параметры:

  • Tags — идентификатор тега. Если тег отсутствует, уведомление отправляется всем зарегистрированным клиентам.
  • Payload — полезные данные XML сообщения.
  • Type — тип уведомления.
  • Options — необязательные заголовки запроса.
  • Callback — функция обратного вызова.

Список допустимых типов и заголовков запроса см. в разделе Заголовки запроса и ответа службы push-уведомлений (приложения среды выполнения Windows).

В следующем коде для отправки всплывающего push-уведомления в приложение UWP используется экземпляр WnsService, предоставляемый NotificationHubService.

var payload = '<toast><visual><binding template="ToastText01"><text id="1">Hello!</text></binding></visual></toast>';
notificationHubService.wns.send(null, payload , 'wns/toast', function(error){
  if(!error){
      // notification sent
  }
});

Next Steps

Примеры фрагментов выше позволяют легко создать инфраструктуру службы для отправки push-уведомлений на широкий спектр устройств. Теперь, когда вы познакомились с основами использования Центров уведомлений с Node.js, используйте приведенные ниже ссылки, чтобы получить дополнительные сведения о том, как можно дальше расширить эти возможности.