Skip to content
November 7, 2012 / ahriman hpc mode

Windows Azure Mobile Services. Краткое руководство по разработке. Часть 4. Push-уведомления.

Оглавление:

Windows Azure Mobile Services. Краткое руководство по разработке. Часть 1. Введение.
Windows Azure Mobile Services. Краткое руководство по разработке. Часть 2. Хранение данных в Mobile Services
Windows Azure Mobile Services. Краткое руководство по разработке. Часть 3. Аутентификация.
Windows Azure Mobile Services. Краткое руководство по разработке. Часть 4. Push-уведомления.

Для того, чтобы отправлять push-уведомления в ваше приложение с использованием Windows Azure Mobile Services, необходимо воспользоваться сервисом Windows Push Notification (WNS). Результатом этой части руководства будет то, что мобильный сервис будет посылать push-уведомление всякий раз, когда будет вставлена новая запись. .

Регистрация в Магазине Windows

Для отправки push-уведомлений в приложения Магазина Windows из мобильного сервиса, вы должны зарегистрировать ваше приложение в Магазине, после чего настроить соответствующим образом мобильный сервис для интеграции с WNS.

Перейдите на странице регистрации приложения – Submit an app, войдите с вашим аккаунтом Microsoft и нажмите Appname(рисунок 1).

clip_image002

Рис. 1. Добавление приложения в Магазин Windows

Введите название вашего приложения в поле Appname, нажмите Reserveappname и Save(рисунок 2).

clip_image004

Рис. 2. Добавление приложения в Магазин Windows

Откройте созданный ранее проект и, нажав правой кнопкой мыши на названии проекта, нажмите Store=>AssociateAppwiththeStore. (рисунок 3).

clip_image006

Рис. 3. Интерфейс Visual Studio 2012

Нажмите Sign in и войдите в систему с вашим аккаунтом Microsoft. Выберите зарегистрированное ранее приложение и нажмите Next=>Associate (рисунок 4).

clip_image008

Рис. 4. Добавление приложения в Магазин Windows

Перейдите на страницу My Applications page и выберите ваше приложение из списка (рисунок 5).

clip_image010

Рис. 5. Настройки приложения

В API Settings запишите значения Client secret и Package security identifier (SID) (рисунок 6).

clip_image012

Рис. 6. Настройки приложения

Перейдите на портал управления. Выберите на вкладке MobileServices ваше приложение (рисунок 7).

clip_image014

Рис. 7. Портал управления Windows Azure

На вкладке Push введите записанные ранее значения Clientsecret и PackageSID и нажмите Save(рисунок 8).

clip_image016

Рис. 8. Настройки push-уведомлений

Интеграция мобильного сервиса и приложения с WNS проведена успешно.

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

Добавьте в файл App.xaml.cs:

using Windows.Networking.PushNotifications;

Добавьте в файл App.xaml.cs:

public static PushNotificationChannel CurrentChannel { get; private set; }

private async void AcquirePushChannel()

{

CurrentChannel =

await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();

}

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

Вставьте в начало обработчика OnLaunched вызов нового метода, что будет гарантировать, что при каждом запуске приложения будет инициализироваться свойство CurrentChannel :

AcquirePushChannel();

Добавьте в MainPage.xaml.cs в класс TodoItem новое свойство:

[DataMember(Name = “channel”)]

public string Channel { get; set; }

Замените метод ButtonSave_Click:

private void ButtonSave_Click(object sender, RoutedEventArgs e)

{

var todoItem = new TodoItem { Text = TextInput.Text, Channel = App.CurrentChannel.Uri };

InsertTodoItem(todoItem);

}

Если вы используете собственный проект, а не сгенерированный на портале управления, откройте Package.appxmanifest file и убедитесь, что на вкладке ApplicationUI значение Toastcapable определено как Yes(рисунок 9).

clip_image018

Рис. 9. Включения уведомлений

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

Обновление скрипта на портале управления

На портале управления перейдите на вкладку Data и выберите таблицу TodoItem (рисунок 10).

clip_image020

Рис. 10. Портал управления Windows Azure

На вкладке Script нажмите Insert(рисунок 11).

clip_image022

Рис. 11. Портал управления Windows Azure

Замените функцию вставки на следующий код, и нажмите Save:

function insert(item, user, request) {

request.execute({

success: function() {

// записать в ответ и отослать

// уведомление в фоне

request.respond();

push.wns.sendToastText04(item.channel, {

text1: item.text

}, {

success: function(pushResponse) {

console.log(“Sent push:”, pushResponse);

}

});

}

});

}

Таким образом регистрируется новый скрипт, обрабатывающий операцию вставки и отсылающий push-уведомлений (вставленный текст) в канал, предоставленный запросов на вставку.

Запуск приложения

Запустите приложение, введите текст в поле InsertaTodoItem и нажмите Save(рисунок 12).

clip_image024

Рис. 12. Интерфейс приложения

Обратите внимание, что после вставки сущности приложение получит push-уведомление от WNS (рисунок 13).

clip_image026

Рис. 13. Интерфейс приложения

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

Создание новой таблицы

На портале управления перейдите на вкладку MobileServicesи выберите ваше приложение (рисунок 14).

clip_image027

Рис. 14. Портал управления Windows Azure

На вкладке Data нажмите Create(рисунок 15).

clip_image029

Рис. 15. Портал управления Windows Azure

В открывшемся диалоге введите в поле Tablenameзначение Channel, остальные значения оставьте стандартными (рисунок 16). Нажмите кнопку.

clip_image031

Рис. 16. Создание новой таблицы

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

Обновление приложения

Удалите из MainPage.xaml.cs свойство Channel в классе TodoItem . Класс должен выглядеть так:

public class TodoItem

{

public int Id { get; set; }

[DataMember(Name = “text”)]

public string Text { get; set; }

[DataMember(Name = “complete”)]

public bool Complete { get; set; }

}

Замените метод ButtonSave_Click:

private void ButtonSave_Click(object sender, RoutedEventArgs e)

{

var todoItem = new TodoItem { Text = TextInput.Text };

InsertTodoItem(todoItem);

}

Добавьте код, создающий новый класс Channel:

public class Channel

{

public int Id { get; set; }

[DataMember(Name = “uri”)]

public string Uri { get; set; }

}

Замените в файле App.xaml.cs метод AcquirePushChannel:

private async void AcquirePushChannel()

{

CurrentChannel =

await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();

IMobileServiceTable<Channel> channelTable = App.MobileService.GetTable<Channel>();

var channel = new Channel { Uri = CurrentChannel.Uri };

await channelTable.InsertAsync(channel);

}

В этом коде происходит вставка текущего канала в таблицу Channel.

Обновление серверных скриптов

На портале управления на вкладке Data выберите таблицу Channel (рисунок 18).

clip_image033

Рис. 18. Портал управления Windows Azure

На вкладке Script нажмите Insert(рисунок 19).

clip_image035

Рис. 19. Портал управления Windows Azure

Замените функцию вставки (Insert) и нажмите Save:

function insert(item, user, request) {

var channelTable = tables.getTable(‘Channel’);

channelTable

.where({ uri: item.uri })

.read({ success: insertChannelIfNotFound });

function insertChannelIfNotFound(existingChannels) {

if (existingChannels.length > 0) {

request.respond(200, existingChannels[0]);

} else {

request.execute();

}

}

}

Скрипт проверяет таблицу Channel на наличие каналов с идентичным URI и, в том случае, если такового нет, происходит вставка канала.

Нажмите Script и выберите Insert(рисунок 20).

clip_image036

Рис. 20. Портал управления Windows Azure

Замените функцию вставки и нажмите Save:

function insert(item, user, request) {

request.execute({

success: function() {

request.respond();

sendNotifications();

}

});

function sendNotifications() {

var channelTable = tables.getTable(‘Channel’);

channelTable.read({

success: function(channels) {

channels.forEach(function(channel) {

push.wns.sendToastText04(channel.uri, {

text1: item.text

}, {

success: function(pushResponse) {

console.log(“Sent push:”, pushResponse);

}

});

});

}

});

}

}

Скрипт вставки будет отправлять push-уведомление с текстом вставленной сущности во все каналы, хранящиеся в таблице Channel.

Запуск приложения

Запустите приложение и введите текст в поле InsertaTodoItem, после чего нажмите Save(рисунок 21).

clip_image037

Рис. 21. Интерфейс приложения

Запустите на нескольких машинах ваше приложение и повторите процедуру, обратите внимание, что везде будет приходить push-уведомление от WNS (рисунок 22).

clip_image038

Рис. 22. Интерфейс приложения

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

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: