Как начать работать с push-уведомлениями в Mobile Services

Для знакомства с возможностями платформы  вы можетеактивировать Windows Azure бесплатно!

Тема практической работы — использование службы Windows Azure Mobile Services для отправки push-уведомлений в приложение iOS. Учимся добавлять функцию принудительной отправки уведомлений в проект быстрого запуска с помощью службы push-уведомлений Apple (Apple Push Notification, APNS). После выполнения всех рассматриваемых действий ваша мобильная служба будет отправлять push-уведомление при каждой вставке записи.

Вы можете просмотреть видеоверсию этой практической работы, щелкнув по ролику справа.

Смотреть обучающий ролик Воспроизвести видео 10:37

ПРИМЕЧАНИЕ

В практической работе демонстрируется простой способ отправки push-уведомлений посредством закрепления маркера устройства создания push-уведомлений за вставленной записью. После выполнения этой практической работы рекомендуется выполнить следующую, чтобы лучше понять, как встраивать функции push-уведомлений в реальные приложения.

При выполнении практической работы рассмотрим следующие основные этапы для включения функции push-уведомлений:

1. Генерация запроса подписи сертификата

2. Регистрация приложения и включение push-уведомлений

3. Создание профиля выделения ресурсов для приложения

4. Настройка службы Mobile Services

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

6. Обновление скриптов для отправки push-уведомлений

7. Вставка данных для получения уведомлений

Для выполнения практической работы необходимо следующее:

  • Mobile Services iOS SDK
  • XCode 4.5
  • Устройство, поддерживающее iOS версии 5.0 или выше
  • Членство в программе iOS Developer Program

ПРИМЕЧАНИЕ

Вследствие специфических требований к конфигурации для работы с push-уведомлениями развертывание и проверка push-уведомлений должны выполняться на устройстве, поддерживающем iOS (iPhone или iPad), а не в эмуляторе.

Эта практическая работа построена на основе проекта быстрого запуска Mobile Services. Предварительно необходимо выполнить практическую работу Как начать работать с Mobile Services.

Служба push-уведомлений Apple (APNS) использует сертификаты для проверки подлинности мобильных служб. Следуйте приведенным ниже инструкциям, чтобы создать необходимые сертификаты и передать их в вашу мобильную службу. Чтобы ознакомиться с официальной документацией, содержащей описание функций APNS, перейдите на страницу Apple Push Notification Service (Служба push-уведомлений Apple).

Генерация файла с запросом подписи сертификата

Вначале вам необходимо создать файл с запросом подписи сертификата (CSR), который Apple использует для генерации подписанного сертификата.

1. В папке Utilities (Служебные программы) выполните инструмент Keychain Access (Связка ключей).

2. Нажмите Keychain Access (Связка ключей), разверните пункт меню Certificate Assistant (Ассистент сертификации) и нажмите Request a Certificate from a Certificate Authority... (Запросить сертификат у бюро сертификации...).

3. В поле User Email Address (E-mail пользователя) введите свой адрес электронной почты и заполните поля Common Name (Общее имя) и CA Email Address (Адрес e-mail CA). Убедитесь, что установлен переключатель Saved to disk (Сохранен на диске), и нажмите Continue (Продолжить).

4. Напечатайте имя файла с запросом подписи сертификата (CSR) в поле Save As (Сохранить как), выберите для него место хранения в поле Where (Где) и нажмите Save (Сохранить).

Файл CSR будет сохранен в указанном месте (по умолчанию Desktop (Рабочий стол)). Запомните место, в котором сохранен файл.

Далее необходимо зарегистрировать приложение в Apple, включить push-уведомления и передать экспортированный файл CSR для создания push-сертификата.

Регистрация приложения для работы с push-уведомлениями

Чтобы мобильные службы могли отправлять push-уведомления в приложение iOS, необходимо зарегистрировать приложение в Apple, а также выполнить регистрацию для использования функции push-уведомлений.

1. Если вы еще не зарегистрировали свое приложение, перейдите на страницу iOS Provisioning Portal (Портал выделения ресурсов iOS) в центре разработчиков Apple, выполните вход, указав свой идентификатор Apple ID, выберите App IDs (Идентификаторы приложений) и нажмите New App ID (Новый идентификатор приложения).

2. Введите имя своего приложения в разделе Description (Описание), значение MobileServices.Quickstart в разделе Bundle Identifier (Идентификаторы группы) и нажмите Submit (Отправить).

После этого будет сгенерирован идентификатор вашего приложения.

ПРИМЕЧАНИЕ

Если в разделе Bundle Identifier (Идентификатор группы) вы указываете значение, отличное от MobileServices.Quickstart, необходимо соответствующим образом изменить значение идентификатора группы в вашем проекте Xcode.

3. Найдите только что созданный идентификатор приложения и нажмите Configure (Настроить).

4. Установите флажок Enable for Apple Push Notification service (Включить для службы push-уведомлений Apple) и нажмите на кнопку Configure (Настроить) для пункта Development Push SSL Certificate (SSL-сертификат уровня разработки для push-уведомлений).

Откроется окно Apple Push Notification service SSL Certificate Assistant (Ассистент SSL-сертификации службы push-уведомлений Apple).

ПРИМЕЧАНИЕ

В практической работе используется сертификат уровня разработки. Тот же самый процесс используется и для сертификата уровня распространения (production certificate). Убедитесь, что вы задали верный тип сертификата при передаче сертификата в службу Mobile Services.

5. Нажмите Browse (Просмотреть), выберите сохраненный файл CSR, который вы создали на первом этапе, и нажмите Generate (Создать).

6. После создания сертификата нажмите Continue (Продолжить) и в следующем экране нажмите Download (Загрузить).

Подписанный сертификат будет загружен и сохранен на диске вашего компьютера в папке Downloads (Загрузки).

ПРИМЕЧАНИЕ

По умолчанию загруженный сертификат уровня разработки сохраняется под именем aps_development.cer.

7. Дважды щелкните по загруженному push-сертификату aps_development.cer.

Происходит установка сертификата, и он появляется в связке ключей, как показано ниже:

ПРИМЕЧАНИЕ

Имя вашего сертификата может отличаться от указанного, но в любом случае будет иметь префикс Apple Development iOS Push Notification Services:.

В дальнейшем вы будете использовать этот сертификат для генерации файла .p12 и его передачи в Mobile Services для включения проверки подлинности с помощью APNS.

Создание профиля выделения ресурсов для приложения

1. Вернитесь на страницу iOS Provisioning Portal (Портал выделения ресурсов iOS), выберите Provisioning (Выделение ресурсов) и нажмите New Profile (Новый профиль).

2.     Заполните поле Profile Name (Имя профиля), выберите Certificates (Сертификаты) и Devices (Устройства), которые используются для проверки, выберите App ID (Идентификатор приложения) и нажмите Submit (Отправить).

Будет создан новый профиль выделения ресурсов.

3. Найдите новый профиль в списке профилей выделения ресурсов и нажмите соответствующую ему кнопку Download (Загрузить).

Профиль будет загружен на диск локального компьютера.

ПРИМЕЧАНИЕ

Обновите страницу, чтобы увидеть новый профиль.

4. В Xcode откройте Organizer (Организатор) и выберите представление Devices (Устройства). Выберите Provisioning Profiles (Профили выделения ресурсов) в разделе Library (Библиотека) на левой панели и нажмите кнопку Import (Импорт) в нижней части средней панели.

5. Найдите загруженный профиль выделения ресурсов и нажмите Open (Открыть).

6. В разделе Targets (Целевые объекты) выберите Quickstart, разверните пункт Code Signing Identity (Идентификация для подписи кода) и выберите новый профиль в разделе Debug (Отладка).

После этого проект Xcode будет использовать новый профиль для подписи кода. Далее необходимо передать сертификат в службу Mobile Services.

Настройка службы Mobile Services для отправки push-запросов

После регистрации приложения в APNS и настройки проекта необходимо интегрировать вашу мобильную службу в APNS.

1. В программе Keychain Access (Связка ключей) щелкните правой кнопкой мыши по новому сертификату, выберите Export (Экспорт), задайте для своего файла имя QuickstartPusher, выберите формат .p12 и нажмите Save (Сохранить).

Запишите имя файла и место хранения экспортированного сертификата.

ПРИМЕЧАНИЕ

В этой практической работе рассматривается процесс создания файла QuickstartPusher.p12. Имя и место хранения вашего файла могут отличаться.

2. Перейдите на портал управления Windows Azure, нажмите Mobile Services и выберите свое приложение.

3. Выберите вкладку Push и нажмите Upload (Передать).

Откроется диалоговое окно Upload Certificate (Передача сертификата).

4. Нажмите File (Файл), выберите экспортированный файл сертификата QuickstartPusher.p12, введите пароль в поле Password (Пароль), установите в соответствующее положение переключатель Mode (Режим), нажмите на кнопку подтверждения и затем нажмите Save (Сохранить).

ПРИМЕЧАНИЕ

В практической работе используются сертификаты уровня разработки.

Мобильная служба готова к работе с APNS.

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

1. В Xcode откройте файл AppDelegate.h и добавьте следующее свойство после свойства *window:

@property (strong, nonatomic) NSString *deviceToken;

ПРИМЕЧАНИЕ

Если в мобильной службе включена динамическая схема, новый столбец 'deviceToken' будет добавляться в таблицу TodoItem автоматически при вставке нового элемента, содержащего данное свойство.

2. В файле AppDelegate.m замените метод обработчика в механизме реализации следующим кодом:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions { // Регистрация для обработки удаленных уведомлений.  [[UIApplicationsharedApplication] registerForRemoteNotificationTypes: UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound];  return YES; }

10. В файле AppDelegate.m добавьте следующий метод обработчика в механизм реализации:

// Мы зарегистрировались и теперь сохраним идентификатор устройства как строку в экземпляре AppDelegate. // Вначале удалим угловые скобки. - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken: (NSData *)deviceToken { NSCharacterSet *angleBrackets = [NSCharacterSet characterSetWithCharactersInString:@"<>"]; self.deviceToken = [[deviceToken description] stringByTrimmingCharactersInSet:angleBrackets]; }

17. В файле AppDelegate.m добавьте следующий метод обработчика в механизм реализации:

// Обработка сбоев регистрации. Задаем пустое строковое значение для deviceToken. // Это позволит избежать ошибок при вставке. - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError: (NSError *)error { NSLog(@"Failed to register for remote notifications: %@", error); self.deviceToken = @""; }

24. В файле AppDelegate.m добавьте следующий метод обработчика в механизм реализации:

// Во время работы приложения всплывающие уведомления не появляются, поэтому приложение обрабатывает их. // Для отображения UIAlertView используется объект userInfo в полезных данных. - (void)application:(UIApplication *)application didReceiveRemoteNotification: (NSDictionary *)userInfo { NSLog(@"%@", userInfo); UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Notification" message: [userInfo objectForKey:@"inAppMessage"] delegate:nil cancelButtonTitle: @"OK" otherButtonTitles:nil, nil]; [alert show]; }

34. В TodoListController.m выполните импорт файла AppDelegate.h file, чтобы можно было использовать делегата для получения маркера устройства:

#import "AppDelegate.h"

35. В TodoListController.m измените операцию (IBAction)onAdd, найдя следующую строку:

NSDictionary *item = @{ @"text" : itemText.text, @"complete" : @(NO) };

Замените строку следующим кодом:

// Получение ссылки на AppDelegate для простого извлечения deviceToken AppDelegate *delegate = [[UIApplication sharedApplication] delegate]; NSDictionary *item = @{ @"text" : itemText.text, @"complete" : @(NO), // добавляем свойство маркера устройства в полезные данные нашего элемента todo @"deviceToken" : delegate.deviceToken };

Этот код добавляет ссылку на AppDelegate для получения маркера устройства и затем изменяет полезные данные запроса для включения этого маркера.

ПРИМЕЧАНИЕ

Этот код необходимо добавить до вызова метода addItem.

Теперь ваше приложение обновлено и поддерживает push-уведомления.

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

1. В портале управления нажмите вкладку Data (Данные), затем выберите таблицу TodoItem.

2. В разделе todoitem нажмите вкладку Script (Скрипт) и выберите операцию Insert (Вставить).

Отображается функция, которая вызывается при вставке элемента в таблицу TodoItem.

3. Замените функцию вставки следующим кодом и нажмите Save (Сохранить):

function insert(item, user, request) {  request.execute();  // Задаем задержку для уведомления, чтобы приложение на устройстве // могло закрыться и отобразить всплывающие уведомления.  setTimeout(function() {  push.apns.send(item.deviceToken, { alert: "Toast: " + item.text,   payload: {   inAppMessage: "Hey, a new item arrived: '" + item.text + "'" } }); }, 2500); }

Этот код регистрирует новый скрипт вставки, в котором объект apns используется для отправки push-уведомления (вставленного текста) в устройство, предоставленное по запросу вставки.

ПРИМЕЧАНИЕ

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

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

1. Нажмите Run (Выполнить), чтобы создать проект и запустить приложение на устройстве, поддерживающем iOS, и затем нажмите ОК, чтобы включить функцию push-уведомлений.

ПРИМЕЧАНИЕ

Вы должны явным образом разрешить получать push-уведомления от вашего устройства. Этот запрос появляется только при первом запуске приложения.

2. Напечатайте значащий текст в приложении, например A new Mobile Services task (Новая задача Mobile Services), и нажмите значок (+).

3. Убедитесь, что уведомление получено, и нажмите OK, чтобы закрыть его.

4. Повторите шаг 2 и сразу же закройте приложение. Убедитесь, что всплывающее уведомление отображается.

Вы успешно выполнили эту практическую работу.