Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
С помощью мастера в Visual Studio можно создавать push-уведомления из мобильной службы, созданной с помощью Azure мобильные службы. Мастер Visual Studio создает код, помогающий приступить к работе. В этом разделе объясняется, как мастер изменяет проект, что делает созданный код, как использовать этот код и что можно сделать рядом, чтобы получить большую часть push-уведомлений. Обзор служб push-уведомлений Windows (WNS).
Изменение проекта мастером
Мастер push-уведомлений изменяет проект следующим образом:
- Добавляет ссылку на управляемый клиент мобильные службы (MobileServicesManagedClient.dll). Неприменимо к проектам JavaScript.
- Добавляет файл в вложенную папку в службах и называет файл push.register.cs, push.register.vb, push.register.cpp или push.register.js.
- Создает таблицу каналов на сервере базы данных для мобильной службы. В таблице содержатся сведения, необходимые для отправки push-уведомлений в экземпляры приложений.
- Создает скрипты для четырех функций: удаление, вставка, чтение и обновление.
- Создает скрипт с пользовательским API, notifyallusers.js, который отправляет push-уведомление всем клиентам.
- Добавляет объявление в App.xaml.cs, App.xaml.vb или App.xaml.cpp-файл или добавляет объявление в новый файл, service.js для проектов JavaScript. Объявление объявляет объект MobileServiceClient, содержащий сведения, необходимые для подключения к мобильной службе. Вы можете получить доступ к этому объекту MobileServiceClient, который называется MyServiceNameClient, с любой страницы в приложении с помощью имени приложения.Клиент MyServiceName.
Файл 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-уведомлений. Магазин отслеживает установленные экземпляры приложения и предоставляет канал push-уведомлений. См. раздел PushNotificationChannelManager.
Клиентский код аналогичен как серверной части JavaScript, так и серверной части .NET. По умолчанию при добавлении push-уведомлений для серверной службы JavaScript пример вызова для уведомления пользовательского APIAllUsers вставляется в метод UploadChannel.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Microsoft.WindowsAzure.MobileServices;
using Newtonsoft.Json.Linq;
namespace App2
{
internal class mymobileservice1234Push
{
public async static void UploadChannel()
{
var channel = await Windows.Networking.PushNotifications.PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
try
{
await App.mymobileservice1234Client.GetPush().RegisterNativeAsync(channel.Uri);
await App.mymobileservice1234Client.InvokeApiAsync("notifyAllUsers");
}
catch (Exception exception)
{
HandleRegisterException(exception);
}
}
private static void HandleRegisterException(Exception exception)
{
}
}
}
Imports Microsoft.WindowsAzure.MobileServices
Imports Newtonsoft.Json.Linq
Friend Class mymobileservice1234Push
Public Shared Async Sub UploadChannel()
Dim channel = Await Windows.Networking.PushNotifications.PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync()
Try
Await App.mymobileservice1234Client.GetPush().RegisterNativeAsync(channel.Uri)
Await App.mymobileservice1234Client.GetPush().RegisterNativeAsync(channel.Uri, New String() {"tag1", "tag2"})
Await App.mymobileservice1234Client.InvokeApiAsync("notifyAllUsers")
Catch exception As Exception
HandleRegisterException(exception)
End Try
End Sub
Private Shared Sub HandleRegisterException(exception As Exception)
End Sub
End Class
#include "pch.h"
#include "services\mobile services\mymobileservice1234\mymobileservice1234Push.h"
using namespace AzureMobileHelper;
using namespace web;
using namespace concurrency;
using namespace Windows::Networking::PushNotifications;
void mymobileservice1234Push::UploadChannel()
{
create_task(PushNotificationChannelManager::CreatePushNotificationChannelForApplicationAsync()).
then([] (PushNotificationChannel^ newChannel)
{
return mymobileservice1234MobileService::GetClient().get_push().register_native(newChannel->Uri->Data());
}).then([]()
{
return mymobileservice1234MobileService::GetClient().invoke_api(L"notifyAllUsers");
}).then([](task<json::value> result)
{
try
{
result.wait();
}
catch(...)
{
HandleExceptionsComingFromTheServer();
}
});
}
void mymobileservice1234Push::HandleExceptionsComingFromTheServer()
{
}
(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, скрипты на стороне сервера выполняются при удалении, вставке, чтении или обновлении операций. Скрипты не реализуют эти операции, но выполняются при вызове от клиента к REST API Windows Mobile, активируют эти события. Затем скрипты передают управление операциями путем вызова request.execute или request.response, чтобы ответить на вызов контекста вызова. См. справочник по 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-уведомлениями. Общие сведения о уведомлениях см. в разделе "Выбор метода доставки уведомлений".
Всплывающие уведомления просты в использовании, и вы можете просмотреть пример кода Insert.js в таблице канала, созданной для вас. Если вы планируете использовать уведомления об плитке или индикаторе событий, необходимо создать XML-шаблон для плитки и индикатора событий, а также указать кодировку упакованных сведений в шаблоне. См. статью "Работа с плитками, индикаторами событий и всплывающих уведомлений".
Так как Windows реагирует на push-уведомления, он может обрабатывать большинство этих уведомлений, когда приложение не запущено. Например, push-уведомление может сообщить пользователю, когда новое почтовое сообщение доступно, даже если локальное почтовое приложение не запущено. Windows обрабатывает всплывающее уведомление, отображая сообщение, например первую строку текстового сообщения. Windows обрабатывает плитку или уведомление индикатора событий, обновив динамическую плитку приложения, чтобы отразить количество новых сообщений электронной почты. Таким образом, вы можете предложить пользователям приложения проверить его наличие новых сведений. Приложение может получать необработанные уведомления при запуске, и их можно использовать для отправки данных в приложение. Если приложение не запущено, можно настроить фоновую задачу для мониторинга push-уведомлений.
Вы должны использовать push-уведомления в соответствии с рекомендациями для приложений Windows, так как эти уведомления используют ресурсы пользователя и могут отвлекаться при чрезмерном использовании. Ознакомьтесь с рекомендациями и контрольным списком для push-уведомлений.
Если вы обновляете динамические плитки с push-уведомлениями, вы также должны следовать рекомендациям в руководстве и контрольном списке для плиток и индикаторов событий.
Следующие шаги
Использование служб push-уведомлений Windows (WNS)
Вы можете вызывать службы push-уведомлений Windows напрямую, если мобильные службы не обеспечивает достаточной гибкости, если вы хотите написать код сервера в C# или Visual Basic или если у вас уже есть облачная служба, и вы хотите отправить push-уведомления из него. Вызывая WNS напрямую, вы можете отправлять push-уведомления из собственной облачной службы, например рабочую роль, которая отслеживает данные из базы данных или другой веб-службы. Облачная служба должна пройти проверку подлинности с помощью WNS, чтобы отправлять push-уведомления в приложения. Узнайте, как выполнять проверку подлинности с помощью службы push-уведомлений Windows (JavaScript) или (C#/C++/VB).
Вы также можете отправлять push-уведомления, выполнив запланированную задачу в мобильной службе. См. статью "Расписание повторяющихся заданий" в мобильные службы.
Предупреждение После запуска мастера push-уведомлений еще раз не запустите мастер, чтобы добавить код регистрации для другой мобильной службы. Выполнение мастера несколько раз в каждом проекте создает код, который приводит к перекрывающимся вызовам метода CreatePushNotificationChannelForApplicationAsync , что приводит к исключению среды выполнения. Если вы хотите зарегистрировать push-уведомления для нескольких мобильных служб, запустите мастер один раз, а затем переопределите код регистрации, чтобы убедиться, что вызовы CreatePushNotificationChannelForApplicationAsync не выполняются одновременно. Например, это можно сделать, переместив созданный мастером код в push.register.* (включая вызов CreatePushNotificationChannelForApplicationAsync) за пределами события OnLaunched, но особенности этого приложения зависят от архитектуры вашего приложения.
См. также
- Обзор служб push-уведомлений Windows (WNS)
- Обзор необработанных уведомлений
- Подключение к Мобильные службы Windows Azure (JavaScript)
- Подключение к Мобильные службы Windows Azure (C#/C++/VB)
- Краткое руководство. Добавление push-уведомлений для мобильной службы (JavaScript)
Windows developer