Microsoft Azure
Облачный бизнес
Вам понадобится

Microsoft Azure

Попробуйте платформу Microsoft Azure совершенно бесплатно.

Visual Studio

Бесплатная версия Visual Studio, позволяющая создавать приложения для платформы Microsoft Azure.

SDKs и дополнительные
инструменты

Инструменты разработки приложений для платформы Microsoft Azure.

Как начать работать с 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 и сразу же закройте приложение. Убедитесь, что всплывающее уведомление отображается.

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