Код, генерируемый мастером push-уведомлений

С помощью мастера Visual Studio можно формировать push-уведомления из мобильной службы, созданной средствами мобильных служб Windows Azure. Мастер Visual Studio формирует код, облегчая начало работы. В этом разделе объясняется, как мастер изменяет ваш проект, что делает сформированный код, как его использовать и что надо сделать дальше для максимально полного использования преимуществ push-уведомлений. См. общую информацию о службах push-уведомлений Windows (WNS).

Изменения, вносимые мастером в ваш проект

Мастер push-уведомлений изменяет ваш проект следующим образом.

  • Добавление ссылки на управляемый клиент мобильных служб (MobileServicesManagedClient.dll). Неприменимо для проектов на JavaScript.
  • Добавление файла в подпапку служб и присвоение ему имени push.register.cs, push.register.vb, push.register.cpp или push.register.js.
  • Создание для мобильной службы таблицы каналов на сервере базы данных. Таблица содержит сведения, необходимые для отправки push-уведомлений в экземпляры программы.
  • Создание сценариев для четырех функций: удаление, вставка, чтение и обновление.
  • Создание сценария notifyallusers.js с пользовательским API для отправки push-уведомлений всем клиентам.
  • Добавление объявления в файл App.xaml.cs, App.xaml.vb или App.xaml.cpp либо добавление объявления в новый файл service.js (для проектов на JavaScript). Объявляется объект MobileServiceClient, который содержит необходимую информацию для подключения к мобильной службе. Обращаться к объекту MobileServiceClient с именем MyServiceNameClient можно с любой страницы приложения, используя имя App.MyServiceNameClient.

Файл services.js содержит следующий код:



var <mobile-service-name>Client = new Microsoft.WindowsAzure.MobileServices.MobileServiceClient(
                "https://<mobile-service-name>.azure-mobile.net/",
                "<your client secret>");

Регистрация для push-уведомлений

В файле push.register.* метод UploadChannel регистрирует устройство для получения push-уведомлений. Магазин Windows отслеживает установленные экземпляры вашего приложения и обеспечивает канал для push-уведомлений. См. PushNotificationChannelManager.

Клиентский код напоминает серверные компоненты JavaScript и .NET. По умолчанию при добавлении push-уведомлений для службы серверного компонента JavaScript образец вызова notifyAllUsers пользовательского API вставляется в метод UploadChannel.



(function () {
    "use strict";

    var app = WinJS.Application;
    var activation = Windows.ApplicationModel.Activation;

    app.addEventListener("activated", function (args) {
        if (args.detail.kind == activation.ActivationKind.launch) {
            Windows.Networking.PushNotifications.PushNotificationChannelManager.createPushNotificationChannelForApplicationAsync()
                .then(function (channel) {
                    mymobileserviceclient1234Client.push.registerNative(channel.Uri, new Array("tag1", "tag2"))
                    return mymobileservice1234Client.push.registerNative(channel.uri);
                })
                .done(function (registration) {
                    return mymobileservice1234Client.invokeApi("notifyAllUsers");
                }, function (error) {
                    // Error

                });
        }
    });
})();


Теги push-уведомлений предоставляют способ ограничить уведомления до подмножества клиентов. можно использовать для метода registerNative (или RegisterNativeAsync), чтобы зарегистрироваться на все push-уведомления без указания тегов, или можно зарегистрироваться с тегами, предоставив второй аргумент — массив тегов. При регистрации с одним или несколькими тегами вы получите только уведомления, соответствующие этим тегам.

Серверные сценарии (только внутренний сервер JavaScript)

Для мобильных служб, которые используют внутренний сервер JavaScript, серверные сценарии выполняются только при удалении, вставке, чтении или обновлении. Сценарии не осуществляют эти операции, но выполняются после того, как соответствующие события активируются вызовом API REST в Windows Mobile со стороны клиента. После этого сценарии передают управление самим операциям, вызывая request.execute или request.respond, чтобы обеспечить ответ на контекст вызова. См. Справочник по REST API для мобильных служб Azure.

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

Также создается следующий код пользовательского API в файле Notifyallusers.js:



exports.post = function(request, response) {
    response.send(statusCodes.OK,{ message : 'Hello World!' })
    
    // The following call is for illustration purpose only
    // The call and function body should be moved to a script in your app
    // where you want to send a notification
    sendNotifications(request);
};

// The following code should be moved to appropriate script in your app where notification is sent
function sendNotifications(request) {
    var payload = '<?xml version="1.0" encoding="utf-8"?><toast><visual><binding template="ToastText01">' +
        '<text id="1">Sample Toast</text></binding></visual></toast>';
    var push = request.service.push; 
    push.wns.send(null,
        payload,
        'wns/toast', {
            success: function (pushResponse) {
                console.log("Sent push:", pushResponse);
            }
        });
}

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

Совет  Сведения о получении справки по редактированию сценариев см. в разделе Активация IntelliSense для серверного JavaScript.

Типы push-уведомлений

Windows поддерживает уведомления, которые не относятся к push-уведомлениям. Общие сведения об уведомлениях см. в разделе Доставка запланированных, периодических и push-уведомлений.

Всплывающие уведомления просты в использовании; вы можете ознакомиться с примером в сформированном коде insert.js в таблице каналов. Если вы планируете использовать уведомления на плитке или в индикаторе событий, необходимо создать XML-шаблон для плитки и индикатора событий, а также указать кодировку упакованных данных в шаблоне. См. раздел Работа с плитками, индикаторами событий и всплывающими уведомлениями.

Поскольку Windows отвечает на push-уведомления, эта ОС может обрабатывать большую часть таких уведомлений, пока приложение неактивно. Например, push-уведомление позволяет сообщить пользователю о поступлении нового сообщения по электронной почте, даже если локальный почтовый клиент не запущен. Windows обрабатывает всплывающее уведомление, отображая сообщение, например первую строку текстового сообщения. Windows обрабатывает плиточное уведомление или уведомление на индикаторе событий путем обновления живой плитки приложения, отображая количество новых сообщений в почте. Таким образом можно приглашать пользователей приложения проверить наличие новой информации. Ваше приложение может получать необработанные уведомления после его запуска, и их можно использовать для отправки данных в приложение. Если приложение не запущено, можно создать фоновую задачу для контроля push-уведомлений.

Push-уведомления следует использовать согласно рекомендациям для универсальных приложений Windows, так как эти уведомления задействуют ресурсы пользователя, а при чрезмерном использовании могут отвлекать внимание. См. Руководство и контрольный список для push-уведомлений.

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

Следующие действия

Использование WNS

WNS можно вызывать напрямую, если мобильные службы не обеспечивают достаточную гибкость, если вы хотите написать код для сервера на C# или Visual Basic либо если у вас уже есть облачная служба и вы хотите отправлять push-уведомления из нее. Вызывая WNS напрямую, можно отправлять push-уведомления из собственной облачной службы — например, из рабочей роли, которая контролирует данные, поступающие из базы данных или от другой веб-службы. Чтобы отправлять push-уведомления в приложения, ваша облачная служба должна пройти проверку подлинности WNS. См. раздел Проверка подлинности с помощью службы push-уведомлений WNS (JavaScript) или (C#/C++/VB).

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

Предупреждение  После запуска мастера push-уведомлений не запускайте его вторично для добавления кода регистрации для другой мобильной службы. Если запустить мастер в одном проекте несколько раз, то в созданном коде появятся перекрывающиеся вызовы метода CreatePushNotificationChannelForApplicationAsync, что вызовет исключение во время выполнения. Чтобы зарегистрироваться для получения push-уведомлений в нескольких мобильных службах, запустите мастер один раз, а затем перепишите код регистрации, чтобы гарантировать, что вызовы CreatePushNotificationChannelForApplicationAsync не будут совершаться одновременно. Например, для этого можно переместить код, созданный мастером в файле push.register.* (в том числе вызов CreatePushNotificationChannelForApplicationAsync), за пределы события OnLaunched, но конкретная реализация зависит от архитектуры приложения.

Связанные разделы

Обзор WNS
Обзор необработанных уведомлений
Подключение к мобильным службам Windows Azure (JavaScript)
Подключение к мобильным службам Windows Azure (C#/C++/VB)
Краткое руководство: добавление push-уведомлений в мобильную службу (JavaScript)

 

 

Показ:
© 2015 Microsoft