Для отправки push-уведомлений в приложения Магазина Windows из мобильного сервиса, вы должны зарегистрировать ваше приложение в Магазине, после чего настроить соответствующим образом мобильный сервис для интеграции с WNS.
Перейдите на странице регистрации приложения - Submit an app, войдите с вашим аккаунтом Microsoft и нажмите Appname(рисунок 1).
Рис. 1. Добавление приложения в Магазин Windows
Введите название вашего приложения в поле App name, нажмите Reserve app name и Save(рисунок 2).
Рис. 2. Добавление приложения в Магазин Windows
Откройте созданный ранее проект и, нажав правой кнопкой мыши на названии проекта, нажмите Store=>Associate App with the Store.... (рисунок 3).
Рис. 3. Интерфейс Visual Studio 2012
Нажмите Sign in и войдите в систему с вашим аккаунтом Microsoft. Выберите зарегистрированное ранее приложение и нажмите Next=>Associate (рисунок 4).
Рис. 4. Добавление приложения в Магазин Windows
Перейдите на страницу My Applications page и выберите ваше приложение из списка (рисунок 5).
Рис. 5. Настройки приложения
В API Settings запишите значения Client secret и Package security identifier (SID) (рисунок 6).
Рис. 6. Настройки приложения
Перейдите на портал управления. Выберите на вкладке Mobile Services ваше приложение (рисунок 7).
Рис. 7. Портал управления Windows Azure
На вкладке Push введите записанные ранее значения Client secret и Package SID и нажмите Save(рисунок 8).
Рис. 8. Настройки push-уведомлений
Интеграция мобильного сервиса и приложения с WNS проведена успешно.
Добавьте в файл App.xaml.cs:
using Windows.Networking.PushNotifications;
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 значение Toast capable определено как Yes(рисунок 9).
Рис. 9. Включения уведомлений
Таким образом приложение сможет использовать всплывающие уведомления.
На портале управления перейдите на вкладку Data и выберите таблицу TodoItem (рисунок 10).
Рис. 10. Портал управления Windows Azure
На вкладке Script нажмите Insert(рисунок 11).
Рис. 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-уведомлений (вставленный текст) в канал, предоставленный запросов на вставку.
Запустите приложение, введите текст в поле Insert a TodoItem и нажмите Save(рисунок 12).
Рис. 12. Интерфейс приложения
Обратите внимание, что после вставки сущности приложение получит push-уведомление от WNS (рисунок 13).
Рис. 13. Интерфейс приложения
Сделаем теперь так, чтобы можно было отсылать push-уведомления пользователям приложения Магазина Windows.
На портале управления перейдите на вкладку Mobile Services и выберите ваше приложение (рисунок 14).
Рис. 14. Портал управления Windows Azure
На вкладке Data нажмите Create (рисунок 15).
Рис. 15. Портал управления Windows Azure
В открывшемся диалоге введите в поле Table name значение Channel, остальные значения оставьте стандартными (рисунок 16). Нажмите кнопку.
Рис. 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; }
var todoItem = new TodoItem { Text = TextInput.Text };
Добавьте код, создающий новый класс Channel:
public class Channel
[DataMember(Name = "uri")]
public string Uri { get; set; }
Замените в файле App.xaml.cs метод AcquirePushChannel:
IMobileServiceTable<Channel> channelTable = App.MobileService.GetTable<Channel>();
var channel = new Channel { Uri = CurrentChannel.Uri };
await channelTable.InsertAsync(channel);
В этом коде происходит вставка текущего канала в таблицу Channel.
На портале управления на вкладке Data выберите таблицу Channel (рисунок 18).
Рис. 18. Портал управления Windows Azure
На вкладке Script нажмите Insert(рисунок 19).
Рис. 19. Портал управления Windows Azure
Замените функцию вставки (Insert) и нажмите Save:
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).
Рис. 20. Портал управления Windows Azure
Замените функцию вставки и нажмите Save:
sendNotifications();
function sendNotifications() {
channelTable.read({
success: function(channels) {
channels.forEach(function(channel) {
push.wns.sendToastText04(channel.uri, {
Скрипт вставки будет отправлять push-уведомление с текстом вставленной сущности во все каналы, хранящиеся в таблице Channel.
Запустите приложение и введите текст в поле InsertaTodoItem, после чего нажмите Save(рисунок 21).
Рис. 21. Интерфейс приложения
Запустите на нескольких машинах ваше приложение и повторите процедуру, обратите внимание, что везде будет приходить push-уведомление от WNS (рисунок 22).
Рис. 22. Интерфейс приложения
В этом кратком руководстве-переводе мы рассмотрели разработку приложения Магазина Windows, использующего Windows Azure Mobile Services как облачный бэкенд в различных задачах.
Alexander Belotserkovskiy edited Original. Comment: added links