- Работаем с уведомлениями в Windows Phone 8.1
- Уведомления
- Toast-уведомления
- Способы реализации уведомлений
- Push-уведомления
- Центр уведомлений
- Заключение
- Руководство. Отправка push-уведомлений в приложения Windows Phone с помощью Центров уведомлений Tutorial: Send push notifications to Windows Phone apps using Notification Hubs
- Предварительные требования Prerequisites
- Создание центра уведомлений Create your notification hub
- Настройка параметров Windows Phone (MPNS) Configure Windows Phone (MPNS) settings
- создание приложения для Windows Phone; Create a Windows Phone application
- тестовая отправка уведомления. Test send a notification
- Дальнейшие действия Next steps
Работаем с уведомлениями в Windows Phone 8.1
Посетителей: 615 | Просмотров: 697 (сегодня 0)
Уведомления
Уведомления в Windows Phone это важный способ взаимодействия приложения с пользователем. Они помогают пользователю узнать об обновлении информации в приложении, оповещают его о действиях других пользователей или напоминают о необходимых активностях.
Уведомления могут приходить от какой-либо службы или же локально от приложения.
В Windows/Windows Phone 8.1 существует несколько способов отображенияуведомлений:
Пользователь может получить уведомление в виде информации на плитке приложения или при помощи маленького черного значка.
Подробнее о возможностях живых плиток можно узнать из следующего курса.
В дополнение к этому доступны и следующие способы отображения уведомлений:
- Toast-уведомления – при получении этого типа уведомления в верхней части экрана устройства появляется текстовое оповещение. При этом на текущий момент приложение может быть неактивным. Нажав на это сообщение, можно быстро переключиться к соответствующему приложению.
- Raw-уведомления – при этом типе уведомления содержимое передается непосредственно приложению. Приложение обрабатывает содержимое уведомления по собственному алгоритму. Эти уведомления не имеют собственного UI. Как и остальные push-уведомления, WNS сервис доставляет их к приложению из облачной или любой другой внешней службы.
Toast-уведомления
Для работы с Toast-уведомлениями необходимо подключить этот способ отображения уведомлений в манифесте приложения. Мы не сможем посылать Toast-уведомления, пока не укажем, что приложение может их отправлять.
К счастью, это очень просто – переключить соответствующую настройку в Package.appxmanifest в положение «Yes»:
Отправляем Toast-уведомление, используя следующий XML-код:
Заметим, что эта XML-схема стандартна для любого вида уведомлений.
При нажатии на Toast-уведомление пользователь сможет запустить приложение.
Для платформы Windows доступно целых 8 шаблонов отображения Toast-уведомлений, но на Windows Phone 8.1 они имеют только один фиксированный вид, независимо от указанного разработчиком шаблона:
Однако логика работы Toast-уведомлений на обеих платформах будет одинакова.
Способы реализации уведомлений
Для всех Windows-устройств существуют несколько способов реализации механизма уведомлений:
- Уведомления по расписанию (Scheduled). Такие уведомления будут стоять в очереди задач системы и запускаться в заданное фиксированное время:
Как это работает:
Внутри приложения используется API планировщика уведомлений, который обращается к расписанию очереди системы. Система проверяет очередь и в указанное для уведомления время отправляет обновление на плитку или Toast.
При помощи класса ScheduledToastNotification создаем объект, отвечающий за уведомление по расписанию, в котором, используя ранее продемонстрированный XML-код, указываем содержание и устанавливаем время, в которое необходимо отобразить уведомление. А с помощью класса ToastNotificationManager создаем объект toastNotify, для которого реализована функция добавления уведомления в очередь системы AddToSchedule().
- Периодические обновления (Periodic) — добывают данные для уведомлений из указанного URL и отображают их с указанной периодичностью – раз в час/в 6 часов/в 12 часов;
Как это работает:
В приложении обращаемся к службам Windows System Services, указывая, что нам необходимы уведомления с периодичностью в 0.5/6/12 часов. Эти службы в свою очередь связываются с API обновлений для плиток и значков определенное количество раз, при помощи HTTP-запроса получают XML-данные уведомления, которые можно передать плитке или значку.
С помощью класса TileUpdateManager создаем объект periodic, обеспечивающий периодическое обновление плитки. Далее создаем URI-канал myTileFeed, в который будут транслироваться данные для уведомления в формате xml. Объект типа PeriodicUpdateRecurrence позволит установить необходимую периодичность уведомлений, поступающих из канала myTileFeed.
Существует более простой способ реализации периодических уведомлений, используя настройки файла Package.appxmanifest:
Необходимо только выбрать периодичность и указать URI-канал.
- Локальные уведомления приложения (Local);
Как это работает:
Приложение использует для уведомлений обновления плиток и значков, в фоновом режиме уже обращается к API Toast-уведомлений.
Создаем значок с помощью объекта типа BadgeNotification, и функцией Update(), реализованной для объекта типа BadgeUpdater, мгновенно обновляем значок.
Ниже представлена таблица возможности использования способов реализации уведомлений в зависимости от их типа:
Не оставим без внимания последний способ реализации уведомлений — push-уведомления. Рассмотрим его подробнее.
Push-уведомления
До текущего релиза для подобного типа уведомлений в Windows 8.0 и Windows Phone 8.0 использовались два различных сервиса: служба Microsoft Push Notification Services (MPNS) для телефонов и Windows Notification Services (WNS) для остальных устройств на Windows.
Однако, теперь Push-уведомления для любых устройств Windows/Windows Phone 8.1 реализуются через службу WNS.
Какие преимущества получат разработчики, используя WNS:
- Одинаковый подход для любых устройств на Windows;
- Единый процесс регистрации приложений для push-уведомлений;
- Единый шаблон push-уведомлений для платформ Windows/Windows Phone 8.1.
Как это работает:
- Приложение Windows Phone 8.1 связывается с платформой Windows Notification Client для получение URI-канала приложения, который уникален для каждого устройства и приложения;
- Далее URI-канал необходимо зарегистрировать в облачном сервисе;
- Облачный сервис проводит аутентификацию WNS-сервиса, предоставляя свои данные (пакет SID и секретный ключ), и предоставляет доступ, который позволяет сервису отправлять уведомления. Теперь можно отправлять push-уведомления с помощью этой службы;
- Облачная служба, в соответствующее время посылает push-уведомление службе WNS;
- WNS связывается с платформой Windows Notification Client, которая производит обновление любого из заданных типов уведомлений.
Подробнее о работе WNS-службы можно прочитать здесь.
Ниже реализуем механизм push-уведомлений в приложении по шагам, выполняя ряд необходимых действий:
Для начала произведем все необходимые приготовления в Центре разработки, используя свой аккаунт разработчика:
Нажимаем Submit App и резервируем имя предполагаемого приложения:
Заполним App Info:
Спустимся ниже и в More Options найдем необходимые для настройки WNS:
Переходим по ссылке here:
И получаем все необходимые данные для дальнейшей работы.
В Visual Studio создадим тестовое универсальное приложение:
В обозревателе решений нажимаем правой кнопкой мыши на проект для Windows Phone и выбираем Associate App with the Store:
Запустится мастер связывания:
Авторизуемся, используя аккаунт разработчика, и выберем приложение, которые мы регистрировали до этого:
Все данные заполнились автоматически:
После клика на Associate, в проекте Windows Phone будет создан файл Package.StoreAssociation.xml.
Авторизуемся в панели управления Azure и нажимаем кнопку Создать:
Нажимаем на Службы Приложений -> Service Bus -> Концентратор уведомлений
Нажимаем на Быстро создать и заполняем необходимые данные:
Создаем новый концентратор уведомлений (Notification Hub):
Нажимаем на только что созданное пространство имен TestDemoPushHub-ns и находим только что созданный концентратор уведомлений:
Перейдем в настройки концентратора уведомлений, где заполним отмеченными ранее данными необходимые поля:
Теперь концентратор уведомлений настроен, как WNS-служба. Следующая информация будет необходима для подключения приложения к концентратору уведомлений:
Эту информацию можно получить при нажатии на кнопку «Сведения о подключении»:
Подключаем свое приложение к концентратору уведомлений.
Правой кнопкой мыши нажимаем на решение в Visual Studio:
В диалоговом окне Manage NuGet Packages ищем WindowsAzure.Messaging.Managed и нажимаем Install:
Дальше выбираем установку пакета для нужного проекта:
Теперь мы загрузили, установили и добавили ссылки на библиотеки Azure Messaging во все проекты, используя WindowsAzure.Messaging.Managed NuGet package.
Открываем файл App.xaml.cs из общего проекта Shared и подключаем следующие библиотеки:
Там же добавляем метод InitNotifictionAsync:
Этот метод получает URI-канал для приложения от WNS, затем регистрирует этот URI канал в концентраторе уведомлений. При создании переменной hub не забудем указать имя нашего концентратора уведомлений и строку подключения с доступом Listen:
Где данные для необходимых переменных достаем из Сведений о подключении концентратора уведомлений в Azure:
hub name = TestDemoPush;
connection string listen access = DefaultListenSharedAccessSignature;
В обработчике события OnLaunched в App.xaml.cs добавим вызов метода InitNotificationsAsync().
Это необходимо для того, чтобы URI-канал для ваших уведомлений регистрировался при каждом запуске приложения.
В обозревателе решений найдем и настроим файл Package.appxmanifest:
Установим настройку Toast capable в положение Yes.
Теперь приложение готово к тому, чтобы принимать уведомления.
Основная функция приложения показывать результат регистрации канала:
Отправим уведомления приложению.
Создадим консольное приложение, через которое будем отправлять push-уведомления:
Нажимаем Tools-> NuGet Package Manager-> Package Manager Console
Таким образом, добавим ссылку на Azure Service Bus SDK.
Подключим в проекте следующую библиотеку: using Microsoft.ServiceBus.Notifications;
И добавим метод для отправки уведомлений:
В методе создаем объект типа NotificationHubClient, где заполняем необходимые данные для подключения:
connection string with full access = DefaultFullSharedAccessSignature (вашего Service Bus);
hub name = TestDemoPushHub.
А дальше создаем и заполним данные самой переменной, отвечающей за содержание уведомления:
В теле программы вызовем написанный метод:
SendNotificationAsync();
Запускаем и получаем push-уведомления от приложения TestDemoPush на телефон:
Посмотрим на уведомления в Центре уведомлений:
При нажатии на любое из них перейдем в приложение.
Центр уведомлений
Еще немного слов об одной из ключевых нововведений в Windows Phone 8.1 — Центре уведомлений (Action Center). Вызывается он свайпом вниз от верхней границы экрана. В него попадают все новые сообщения, уведомления, упоминания и напоминания от различных приложений. Так же в Центре уведомлений расположены четыре переключателя, которые можно поменять на вызов любых настроек.
Теперь пользователи выбирают, какие из приложений могут отображать уведомления в Центре уведомлений, а разработчики приложений получили специальные API, которые дают возможность выбирать, какие из действий будут доступны из центра уведомлений. При помощи этих API и механизмов разработчики приложений могут управлять всплывающими уведомлениями.
Новые возможности для разработчиков:
- Удаление одного или нескольких уведомлений;
- Тегирование и группы уведомлений;
- Замена устаревшего уведомления на новое;
- Установка срока действия уведомления;
- «Goast Toast»-уведомления, которые появляется только в Центре уведомлений.
Центр уведомлений доступен только для телефона.
Подробнее о возможностях Центра уведомления для разработчиков можно узнать из этого курса.
Заключение
Уведомления в Windows Phone 8.1 — это целый набор разнообразных инструментов, предоставляющий разработчику возможность самому выбрать способ общения своего приложения с пользователем. Особое внимание все же советую обратить на невероятно удобную и мощную службу WNS, чьи преимущества оказались особенно заметны на мобильных устройствах.
Руководство. Отправка push-уведомлений в приложения Windows Phone с помощью Центров уведомлений Tutorial: Send push notifications to Windows Phone apps using Notification Hubs
В этом руководстве показано, как использовать Центры уведомлений Azure для отправки push-уведомлений в приложения Silverlight на Windows Phone 8 или Windows Phone 8.1. This tutorial shows you how to use Azure Notification Hubs to send push notifications to a Windows Phone 8 or Windows Phone 8.1 Silverlight applications. Если вы намерены использовать платформу Windows Phone 8.1 (без Silverlight), перейдите к версии этого руководства для Windows Universal. If you are targeting Windows Phone 8.1 (non-Silverlight), see the Windows Universal version of this tutorial.
В этом учебнике вам предстоит создать пустое приложение Windows Phone 8, получающее push-уведомления с помощью службы push-уведомлений Майкрософт (MPNS). In this tutorial, you create a blank Windows Phone 8 app that receives push notifications by using the Microsoft Push Notification Service (MPNS). Создав это приложение, вы сможете рассылать через Центр уведомлений push-уведомления на все устройства, где запущено ваше приложение. After you create the app, you use your notification hub to broadcast push notifications to all the devices running your app.
Центры уведомлений Windows Phone SDK не поддерживают использование службы push-уведомлений Windows (WNS) с приложениями Windows Phone 8.1 Silverlight. The Notification Hubs Windows Phone SDK does not support using the Windows Push Notification Service (WNS) with Windows Phone 8.1 Silverlight apps. Использование WNS (вместо MPNS) с приложениями Windows Phone 8.1 Silverlight описано в статье Центр уведомлений: учебник для Windows Phone Silverlight, в котором используются API REST. To use WNS (instead of MPNS) with Windows Phone 8.1 Silverlight apps, follow the Notification Hubs — Windows Phone Silverlight tutorial, which uses REST APIs.
В этом руководстве описано следующее. In this tutorial, you learn how to:
- Создание концентратора уведомлений Create a notification hub
- создание приложения для Windows Phone; Create a Windows Phone application
- тестовая отправка уведомления. Test send a notification
Предварительные требования Prerequisites
- Подписка Azure. Azure subscription. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу. If you don’t have an Azure subscription, create a free Azure account before you begin.
- Visual Studio 2015 Express с компонентами для разработки мобильных приложений. Visual Studio 2015 Express with mobile development components
Завершение изучения этого учебника является необходимым условием для работы со всеми другими учебниками, посвященными Центрам уведомлений для приложений Windows Phone 8. Completing this tutorial is a prerequisite for all other Notification Hubs tutorials for Windows Phone 8 apps.
Создание центра уведомлений Create your notification hub
Войдите на портал Azure. Sign in to the Azure portal.
Выберите Все службы в меню слева и щелкните Центры уведомлений в разделе Мобильный. Select All services on the left menu, and then select Notification Hubs in the Mobile section. Щелкните значок звездочки рядом с именем службы, чтобы добавить ее в раздел Избранное в меню слева. Select the star icon next to the service name to add the service to the FAVORITES section on the left menu. После добавления Центров уведомлений в Избранное выберите их в меню слева. After you add Notification Hubs to FAVORITES, select it on the left menu.
На странице Центры уведомлений выберите Добавить на панели инструментов. On the Notification Hubs page, select Add on the toolbar.
На странице Концентратор уведомлений выполните следующие действия: On the Notification Hub page, do the following steps:
Введите имя в поле Центр уведомлений. Enter a name in Notification Hub.
Введите имя в поле Создать пространство имен. Enter a name in Create a new namespace. Пространство имен содержит один или несколько центров. A namespace contains one or more hubs.
Выберите значение в раскрывающемся списке Расположение. Select a value from the Location drop-down list box. Это значение определяет расположение, в котором создается центр. This value specifies the location in which you want to create the hub.
В поле Группа ресурсов выберите существующую группу ресурсов или укажите имя для новой группы ресурсов. Select an existing resource group in Resource Group, or create a name for a new resource group.
Нажмите кнопку Создать. Select Create.
Последовательно выберите Уведомления (значок колокольчика) и Перейти к ресурсу. Select Notifications (the bell icon), and then select Go to resource. Вы также можете обновить список на странице Центры уведомлений и выбрать свой центр. You can also refresh the list on the Notification Hubs page and select your hub.
Выберите Политики доступа в списке. Select Access Policies from the list. Обратите внимание, что станут доступны две строки подключения. Note that the two connection strings are available to you. Они потребуются позже для обработки push-уведомлений. You’ll need them later to handle push notifications.
Не используйте в приложении политику DefaultFullSharedAccessSignature. Do not use the DefaultFullSharedAccessSignature policy in your application. Этот параметр можно использовать только в серверной части. This is meant to be used in your back end only.
Настройка параметров Windows Phone (MPNS) Configure Windows Phone (MPNS) settings
Выберите Windows Phone (MPNS) в разделе Параметры уведомлений. Select Windows Phone (MPNS) under NOTIFICATION SETTINGS.
Выберите Enable authentication push (Включить push-уведомления для аутентификации). Select Enable authentication push.
На панели инструментов щелкните Сохранить. Select Save on the toolbar.
Концентратор будет создан и настроен для отправки уведомлений без проверки подлинности для Windows Phone. Your hub is now created and configured to send unauthenticated notification for Windows Phone.
В этом учебнике используется MPNS в режиме без проверки подлинности. This tutorial uses MPNS in unauthenticated mode. Режим MPNS без проверки подлинности налагает ограничения на использование уведомлений, отправляемых для каждого канала. MPNS unauthenticated mode comes with restrictions on notifications that you can send to each channel. Центры уведомлений поддерживают Режим работы MPNS с проверкой подлинности , позволяя отправить ваш сертификат. Notification Hubs supports MPNS authenticated mode by allowing you to upload your certificate.
создание приложения для Windows Phone; Create a Windows Phone application
В этом разделе объясняется, как создать приложение Windows Phone, которое регистрирует себя в Центре уведомлений. In this section, you create a Windows Phone application that registers itself with your notification hub.
В Visual Studio создайте новое консольное приложение Windows Phone 8. In Visual Studio, create a new Windows Phone 8 application.
В Visual Studio 2013 с обновлением 2 вместо этого вы создаете приложение Windows Phone Silverlight. In Visual Studio 2013 Update 2 or later, you instead create a Windows Phone Silverlight application.
В Visual Studio щелкните решение правой кнопкой мыши, а затем выберите пункт Управление пакетами NuGet. In Visual Studio, right-click the solution, and then click Manage NuGet Packages.
Выполните поиск по запросу WindowsAzure.Messaging.Managed , щелкните Установить, а затем примите условия использования. Search for WindowsAzure.Messaging.Managed and click Install, and then accept the terms of use.
Откройте файл App.xaml.cs и добавьте следующие инструкции using : Open the file App.xaml.cs and add the following using statements:
Добавьте следующий код в начало метода Application_Launching в файле App.xaml.cs : Add the following code at the top of Application_Launching method in App.xaml.cs :
Значение MyPushChannel — это индекс, который используется для поиска существующего канала в коллекции HttpNotificationChannel. The value MyPushChannel is an index that is used to lookup an existing channel in the HttpNotificationChannel collection. Если канал отсутствует, создайте новую запись с таким именем. If there isn’t one there, create a new entry with that name.
Вставьте имя центра и строку подключения с именем DefaultListenSharedAccessSignature , которые вы сохранили при работе с предыдущим разделом. Insert the name of your hub and the connection string called DefaultListenSharedAccessSignature that you noted in the previous section. Этот код получает универсальный код ресурса (URI) канала (ChannelURI) для приложения из MPNS, а затем регистрирует ChannelURI в вашем центре уведомлений. This code retrieves the channel URI for the app from MPNS, and then registers that channel URI with your notification hub. Он также гарантирует регистрацию ChannelURI в центре уведомлений при каждом запуске приложения. It also guarantees that the channel URI is registered in your notification hub each time the application is launched.
В этом учебнике на устройство отправляется всплывающее уведомление. This tutorial sends a toast notification to the device. Когда вы отправляете уведомления на плитке, необходимо вместо этого вызвать метод BindToShellTile в канале. When you send a tile notification, you must instead call the BindToShellTile method on the channel. Для поддержки всплывающего уведомления и уведомления на плитке следует вызвать оба метода: BindToShellTile и BindToShellToast . To support both toast and tile notifications, call both BindToShellTile and BindToShellToast .
В обозревателе решений разверните меню Свойства, откройте файл WMAppManifest.xml , перейдите на вкладку Capabilities (Возможности) и убедитесь, что установлен флажок ID_CAP_PUSH_NOTIFICATION. In Solution Explorer, expand Properties, open the WMAppManifest.xml file, click the Capabilities tab, and make sure that the ID_CAP_PUSH_NOTIFICATION capability is checked. Теперь ваше приложение может получать push-уведомления. Your app can receive push notifications now.
Нажмите клавишу F5 , чтобы запустить приложение. Press the F5 key to run the app. В приложении отобразится сообщение о регистрации. A registration message is displayed in the app.
Закройте приложение или перейдите на домашнюю страницу. Close the app or switch to the home page.
Для получения всплывающего push-уведомления приложение не должно выполняться в фоновом режиме. To receive a toast push notification, the application must not be running in the foreground.
тестовая отправка уведомления. Test send a notification
На портале Azure перейдите на вкладку «Обзор». In the Azure portal, switch to the Overview tab.
Выберите Тестовая отправка. Select Test Send.
В окне Тестовая отправка выполните следующие действия. In the Test Send window, take the following steps:
В поле Платформы выберите значение Windows Phone. For Platforms, select Windows Phone.
В поле Тип уведомления выберите значение Всплывающее уведомление. For Notification Type, select Toast.
Выберите Отправить. Select Send
Проверьте результат в списке в нижней части окна. See the result in the list at the bottom of the window.
В эмуляторе Windows Phone или на телефоне под управлением Windows проверьте, что уведомление получено. In the Windows Phone emulator or on the Windows phone, confirm that you see the notification message.
Дальнейшие действия Next steps
В этом простом примере осуществляется широковещательная рассылка push-уведомлений на все устройства Windows Phone 8. In this simple example, you broadcasted push notifications to all your Windows Phone 8 devices. Чтобы узнать, как отправлять push-уведомления на конкретные устройства, перейдите к следующему руководству: Advance to the following tutorial to learn how to push notifications to specific devices: