Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
С помощью мастера в 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, с любой страницы в вашем приложении, используя имя 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-уведомлений. Магазин отслеживает установленные экземпляры приложения и предоставляет канал push-уведомлений. See PushNotificationChannelManager.
Клиентский код аналогичен как серверной части JavaScript, так и серверной части .NET. По умолчанию при добавлении push-уведомлений для серверной службы JavaScript в метод UploadChannel вставляется пример вызова пользовательского API notifyAllUsers.
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-уведомлений без указания тегов или регистрации с тегами, предоставив второй аргумент, массив тегов. При регистрации с одним или несколькими тегами вы получаете только уведомления, соответствующие этим тегам.
Скрипты на стороне сервера (только backend JavaScript)
Для мобильных служб, использующих серверную часть JavaScript, скрипты на стороне сервера выполняются при удалении, вставке, чтении или обновлении операций. Скрипты не реализуют эти операции, но они выполняются, когда вызов клиента к REST API 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-уведомлениями. Общие сведения о уведомлениях см. в разделе "Выбор метода доставки уведомлений".
Всплывающие уведомления легко использовать, и вы можете просмотреть пример кода Insert.js в таблице канала, созданной для вас. Если вы планируете использовать уведомления об плитке или индикаторе событий, необходимо создать XML-шаблон для плитки и индикатора событий, а также указать кодировку упакованных сведений в шаблоне. См. Работа с плитками, индикаторами событий и всплывающими уведомлениями.
Так как Windows реагирует на push-уведомления, он может обрабатывать большинство этих уведомлений, когда приложение не запущено. Например, push-уведомление может сообщить пользователю, когда новое почтовое сообщение доступно, даже если локальное почтовое приложение не запущено. Windows обрабатывает всплывающее уведомление, отображая сообщение, например, первую строку текстового сообщения. Windows обрабатывает уведомление о значке, обновляя динамическую плитку приложения, чтобы показать количество новых сообщений электронной почты. Таким образом, вы можете предложить пользователям вашего приложения проверить наличие новых сведений. Приложение может получать необработанные уведомления при запуске, и их можно использовать для отправки данных в приложение. Если приложение не запущено, можно настроить фоновую задачу для мониторинга push-уведомлений.
Вы должны использовать push-уведомления в соответствии с рекомендациями для приложений Windows, так как эти уведомления используют ресурсы пользователя и могут отвлекаться при чрезмерном использовании. Ознакомьтесь с рекомендациями и контрольным списком для push-уведомлений.
Если вы обновляете живые плитки с помощью push-уведомлений, вы также должны следовать инструкциям в руководствах и контрольном списке для плиток и значков.
Next steps
Использование служб 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, но особенности этого приложения зависят от архитектуры вашего приложения.
Related topics
- Обзор служб push-уведомлений Windows (WNS)
- Обзор необработанных уведомлений
- Подключение к Мобильные службы Windows Azure (JavaScript)
- Подключение к Мобильные службы Windows Azure (C#/C++/VB)
- Быстрый старт: Добавление push-уведомлений для мобильной службы (JavaScript)
Windows developer