Руководство. Начальная настройка для получения push-уведомлений из Центров уведомлений Azure
В этом учебнике описано, как использовать Центры уведомлений Azure для отправки push-уведомлений в приложение iOS с помощью пакета SDK для Центров уведомлений Azure для Apple.
В этом руководстве рассматриваются следующие действия:
- создание примера приложения iOS;
- подключение приложения iOS к Центрам уведомлений Azure;
- отправка тестовых push-уведомлений;
- проверка получения уведомлений приложением.
Готовый код для этого руководства вы можете скачать на сайте GitHub.
Необходимые компоненты
Для работы с этим руководством вам потребуется:
- компьютер Mac с Xcode, а также действительный сертификат разработчика, установленный в цепочку ключей;
- устройство iPhone или iPad под управлением iOS 10 или более поздней версии;
- Физическое устройство, зарегистрированное на портале Apple, и связанное с вашим сертификатом.
Прежде чем продолжить, обязательно пройдите предыдущее руководство по началу работы с Центрами уведомлений Azure для приложений iOS, чтобы создать и настроить учетные данные для отправки push-уведомлений в центре уведомлений. Вы сможете выполнить следующие действия, даже если у вас нет опыта разработки в iOS.
Примечание.
В соответствии с требованиями к настройке push-уведомлений необходимо развернуть push-уведомления и протестировать их на физическом устройстве под управлением iOS (iPhone или iPad), но не в эмуляторе iOS.
Подключение приложения iOS к центрам уведомлений
В Xcode создайте проект Xcode и выберите шаблон вкладки iOS и приложения .
При настройке параметров нового проекта используйте те же имя продукта и идентификатор организации, которые вы использовали при указании идентификатора пакета на портале разработчиков Apple. Пакет, определенный в новом окне проекта, должен заполняться, чтобы соответствовать пакету, определенному на портале разработчика Apple. Ввод осуществляется с учетом регистра.
В разделе Project Navigator выберите имя проекта в разделе "Целевые объекты", а затем перейдите на вкладку "Подписывание " и "Возможности". Убедитесь, что выбрана соответствующая команда для учетной записи разработчика Apple. Среда XCode должна автоматически извлечь профиль подготовки, который вы создали ранее, используя ваш идентификатор пакета.
Если новый профиль подготовки, созданный в Xcode, не отображается, обновите профили для идентификатора подписи. В строке меню щелкните Xcode выберите Preferences (Настройки), откройте вкладку Account (Учетная запись), нажмите кнопку View Details (Просмотреть сведения), щелкните свой идентификатор подписи, а затем нажмите кнопку Refresh (Обновить) в нижнем правом углу.
На вкладке Signing & Capabilities (Подписывание и возможности) выберите + Capability (+ Возможность). Дважды щелкните Push-уведомления, чтобы включить их.
Добавьте модули пакета SDK для Центров уведомлений Azure.
Вы можете интегрировать пакет SDK для Центров уведомлений Azure в свое приложение с помощью Cocoapods или вручную, добавив двоичные файлы в свой проект.
Интеграция с Cocoapods: добавьте в podfile следующие зависимости, чтобы включить пакет SDK Центров уведомлений Azure в приложение:
pod 'AzureNotificationHubs-iOS'
Запустите "pod install", чтобы установить только что определенный объект pod, затем откройте файл с расширением .xcworkspace.
Если при выполнении pod install возникла ошибка типа Unable to find a specification for AzureNotificationHubs-iOS (Не удается найти спецификацию для AzureNotificationHubs-iOS), выполните
pod repo update
, чтобы получить последние объекты pod из репозитория Cocoapods, и еще раз выполните pod install.
Интеграция через Carthage: добавьте в файл Cartfile следующие зависимости, чтобы включить пакет SDK Центров уведомлений Azure в приложение:
github "Azure/azure-notificationhubs-ios"
- Затем обновите зависимости сборки:
$ carthage update
Дополнительные сведения об использовании Carthage см. в репозитории GitHub.
Интеграция путем копирования двоичных файлов в проект.
Для интеграции вы можете просто скопировать двоичные файлы в проект, как описано ниже.
Скачайте и распакуйте платформу для пакета средств разработки Центров уведомлений Azure, которая предоставляется в виде ZIP-файла.
В XCode щелкните проект правой кнопкой мыши и выберите параметр Add Files to (Добавить файлы в), чтобы добавить папку WindowsAzureMessaging.framework в проект XCode. Нажмите кнопку Options (Параметры), установите флажок Copy items if needed (Копировать элементы при необходимости) и нажмите кнопку Add (Добавить).
Добавьте или измените файл с именем DevSettings.plist, который содержит два свойства:
CONNECTION_STRING
для строки подключения к Центру уведомлений Azure иHUB_NAME
для имени Центра уведомлений Azure.Добавьте сведения для подключения к Центрам уведомлений Azure в соответствующем разделе
<string></string>
. Замените строковые литералы--HUB-NAME--
и--CONNECTION-STRING--
, выполняющие роль заполнителей, именем центра и значением DefaultListenSharedAccessSignature, которые вы получили ранее на портале:<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>HUB_NAME</key> <string>--HUB-NAME--</string> <key>CONNECTION_STRING</key> <string>--CONNECTION-STRING--</string> </dict> </plist>
В том же файле AppDelegate.m замените весь код после
didFinishLaunchingWithOptions
следующим:#import <WindowsAzureMessaging/WindowsAzureMessaging.h> #import <UserNotifications/UserNotifications.h> // Extend the AppDelegate to listen for messages using MSNotificationHubDelegate and User Notification Center @interface AppDelegate () <MSNotificationHubDelegate> @end @implementation AppDelegate @synthesize notificationPresentationCompletionHandler; @synthesize notificationResponseCompletionHandler; - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { NSString *path = [[NSBundle mainBundle] pathForResource:@"DevSettings" ofType:@"plist"]; NSDictionary *configValues = [NSDictionary dictionaryWithContentsOfFile:path]; NSString *connectionString = [configValues objectForKey:@"CONNECTION_STRING"]; NSString *hubName = [configValues objectForKey:@"HUB_NAME"]; if([connectionString length] != 0 && [hubName length] != 0) { [[UNUserNotificationCenter currentNotificationCenter] setDelegate:self]; [MSNotificationHub setDelegate:self]; [MSNotificationHub initWithConnectionString:connectionString withHubName:hubName]; return YES; } NSLog(@"Please setup CONNECTION_STRING and HUB_NAME in DevSettings.plist and restart application"); exit(-1); } - (void)notificationHub:(MSNotificationHub *)notificationHub didReceivePushNotification:(MSNotificationHubMessage *)message { // Send message using NSNotificationCenter with the message NSDictionary *userInfo = [NSDictionary dictionaryWithObject:message forKey:@"message"]; [[NSNotificationCenter defaultCenter] postNotificationName:@"MessageReceived" object:nil userInfo:userInfo]; } @end
Этот код подключается к центру уведомлений, используя сведения о подключении, указанные в файле DevSettings.plist. Затем он передает маркер устройства в центр уведомлений, чтобы тот мог отправлять уведомления.
Создание файла заголовка NotificationDetailViewController
Так же, как вы сделали это ранее, добавьте другой файл заголовка с именем SetupViewController.h. Замените содержимое нового файла приведенным ниже кодом:
#import <UIKit/UIKit.h> NS_ASSUME_NONNULL_BEGIN @interface SetupViewController : UIViewController @end NS_ASSUME_NONNULL_END
Добавьте файл реализации SetupViewController.m. Замените содержимое этого файла следующим кодом, который реализует методы UIViewController:
#import "SetupViewController.h" static NSString *const kNHMessageReceived = @"MessageReceived"; @interface SetupViewController () @end @implementation SetupViewController - (void)viewDidLoad { [super viewDidLoad]; // Listen for messages using NSNotificationCenter [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceivePushNotification:) name:kNHMessageReceived object:nil]; } - (void)dealloc { // Clean up subscription to NSNotificationCenter [[NSNotificationCenter defaultCenter] removeObserver:self name:kNHMessageReceived object:nil]; } - (void)didReceivePushNotification:(NSNotification *)notification { MSNotificationHubMessage *message = [notification.userInfo objectForKey:@"message"]; // Create UI Alert controller with message title and body UIAlertController *alertController = [UIAlertController alertControllerWithTitle:message.title message:message.body preferredStyle:UIAlertControllerStyleAlert]; [alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleCancel handler:nil]]; [self presentViewController:alertController animated:YES completion:nil]; // Dismiss after 2 seconds dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [alertController dismissViewControllerAnimated:YES completion: nil]; }); } @end
Выполните сборку приложения и запустите его на устройстве, чтобы убедиться в отсутствии сбоев.
Отправка тестовых push-уведомлений
Можно проверить, поступают ли в приложение уведомления, с помощью параметра Тестовая отправка на портале Azure. Этот параметр позволяет отправить на устройство тестовое push-уведомление.
Push-уведомления обычно отправляются во внутренней службе, например мобильных приложениях или службе ASP.NET, с помощью совместимой библиотеки. Если для серверной части библиотека недоступна, для отправки уведомлений также можно напрямую использовать REST API.
Ниже приведен список других учебников, касающихся отправки уведомлений:
- Мобильные приложения Azure. Пример отправки уведомлений из серверной части мобильных приложений, интегрированных с Центрами уведомлений, см. в статье "Добавление push-уведомлений" в приложение iOS.
- ASP.NET. Используйте Центры уведомлений для отправки push-уведомлений пользователям.
- Пакет SDK для Центров уведомлений Azure для Java: сведения об отправке уведомлений Java см. в статье Использование концентраторов уведомлений из Java. Было протестировано в Eclipse для разработки для Android.
- PHP: Использование Центров уведомлений из PHP.
Проверка получения push-уведомлений приложением
Для тестирования push-уведомлений в iOS необходимо развернуть приложение на физическом устройстве под управлением iOS. Через эмулятор iOS невозможно отправлять push-уведомления Apple.
Запустите приложение и убедитесь, что оно успешно зарегистрировано, а затем нажмите кнопку ОК.
Теперь отправьте тестовое push-уведомление с портала Azure, как описано в предыдущем разделе.
Push-уведомление отправляется на все устройства, зарегистрированные для получения уведомлений от используемого центра уведомлений.
Следующие шаги
В этом простом примере мы отправляем push-уведомления на все зарегистрированные устройства iOS. Сведения о том, как отправлять push-уведомления на конкретные устройства iOS, см. в следующем руководстве:
Руководство по отправке push-уведомлений на определенные устройства
Дополнительные сведения см. в следующих статьях:
- Общие сведения о Центрах уведомлений Azure
- Использование интерфейса REST центров уведомлений
- Пакет средств разработки Центров уведомлений для операций серверной части
- Пакет средств разработки для Центров уведомлений на GitHub
- Регистрация в серверной части приложения
- Управление регистрацией
- Работа с тегами
- Работа с пользовательскими шаблонами
- Управление доступом к служебной шине с помощью подписанных URL-адресов
- Программное создание маркеров SAS
- Безопасность в Apple: Common Crypto
- Формат времени UNIX Epoch
- Код проверки подлинности сообщений с помощью хэш-функций