Подписаться

Push-уведомления для iOS

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

Регистрация приложения

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

  1. Создайте файл запроса на оформление сертификата. Для этого выберите в меню пункты: Связка ключей > Ассистент сертификации > Запросить сертификат у бюро сертификации.
    В файле запроса содержится сгенерированная пара из открытого ключа и соответствующего секретного ключа, которая сохраняется в "Связке ключей".
  2. Выберите в диалоговом окне пункт Сохранен на диске.
  3. Перейдите на портал http://developer.apple.com для управления профилями пользователей и доступом к приложениям Apple.
  4. Загрузите на портал свой запрос, связанный с соответствующим профилем.
  5. Сгенерируйте и загрузите два файла запроса: отладочный профиль для разработки (development) и рабочий профиль (production) для App Store (большинство приложений их имеет).
  6. После отправки запроса на портал, получите цифровой сертификат для загрузки. Сертификат содержит открытый ключ, который серверы APNs будут распознавать как ключ, связанный с данным приложением.
  7. После загрузки цифрового сертификата дважды щелкните на нём. "Связка ключей" автоматически импортирует цифровой сертификат и свяжет его с секретным ключом, сгенерированным при создании запроса (см. пример №3).

  8. Экспортируйте пару ключей в файл, используя формат Personal Information Exchange (p12).  
    При создании файла p12 "Связка ключей" потребует назначить пароль для защиты секретного ключа. Обязательно укажите пароль. Полученный файл (p12) необходимо отправить на электронный адрес почты Livetex - sdk.customers@livetex.ru с указанием установленного пароля. Обязательно укажите, для какого профиля сертификат, development или production.

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

Проверка устройств

  1. В iOS-приложении появляется диалоговое окно с запросом разрешения пользователя на получение уведомлений.
  2. После получения разрешения iOS-приложение подключается к службе APNs для получения строки уникального идентификатора, установленного на устройстве с приложением.
  3. iOS-приложение передает идентификатор приложению на сервере.
  4. При отправке push-сообщения сервер приложений проверяет подлинность push-серверов Apple и использует идентификатор для указания получателя сообщения.
  5. Приём и обработка сообщения устройством пользователя осуществляется в режиме онлайн.
    В режиме офлайн сообщение ставится в очередь и доставляется, как только устройство пользователя выйдет на связь.
  6. Сервер приложений при помощи APNs периодически проверяет список идентификаторов приложений. Такая проверка исключает идентификаторы пользователей, удаливших приложение или изменивших свой push-in статус.

Запрос и сохранение маркера устройства

Ваше iOS-приложение должно запрашивать разрешение пользователя на получение уведомлений на те устройства, на которых оно установлено.
Этот процесс осуществляется в приложении (application delegate) посредством простого API-вызова (см. пример №1)

Пример №1. Запрос разрешения пользователя.

- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
UIUserNotificationType types = UIUserNotificationTypeBadge |
UIUserNotificationTypeSound | UIUserNotificationTypeAlert;
UIUserNotificationSettings *mySettings =
[UIUserNotificationSettings settingsForTypes:types categories:nil];
[[UIApplication sharedApplication]
registerUserNotificationSettings:mySettings];
 
// Register the supported interaction types.
[[UIApplication sharedApplication] registerForRemoteNotifications];
}

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

Маркер позволяет APNs идентифицировать конкретное приложение, установленное на конкретном устройстве в качестве места назначения сообщения.

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

После ответа сервера APNs вызывается метод didRegisterForRemoteNotificationsWithDeviceToken в приложении с маркером устройства, передаваемом в качестве параметра вызова. Сохраните маркер устройства и загрузите его на сервер push-уведомлений (см. пример №2)

Пример №2. Получение идентификатора и его загрузка на сервер Livetex

- (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
NSString *token = [devToken description];
token = [token stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
token = [token stringByReplacingOccurrencesOfString:@" " withString:@""];
LTMobileSDKInitializationParams *parameters = [LTMobileSDKInitializationParams new];
parameters.livetexUrl = yourURL; 
parameters.applicationId = yourID;
parameters.sdkKey = yourKey;
parameters.APNDeviceId = token;
LTMobileSDK *mobileSDK = [LTMobileSDK alloc] initWithPatams:parameters];
}
 

Возможные проблемы и их устранение

Если не приходят push-уведомления. Возможные причины:

  1. Уведомления отключены в настройках iOS
    • Зайдите в Настройки -> Уведомления -> Ваше приложение.
    • Нажмите на приложение, чтобы попасть в меню настроек его уведомлений.
    • Убедитесь, что активны опции «Разрешить Уведомления», «На заблокированном Экране» или иные настройки при необходимости.
  2. Сертификат на push-уведомления для приложения, созданный в Apple Developer в ходе процесса загрузки, либо некорректен, либо истек срок использования.

    Необходимо сгенерировать новый сертификат взамен нерабочего(см. описание выше).

  3. При использовании отладочного профиля(Development) для разработки параметр sdkKey(см. Листинг 2) должен иметь добавочный суффикс «-dev». Пример parameters.sdkKey = myKey.gmail.com-dev 

    Необходимо обратиться в техническую поддержку Livetex. 

  4. При получении идентификатора и его загрузки на сервер Livetex, как показано в листинге 2, убедиться в корректности вводимых данных.

    Внимательно проверить все параметры и исправить ошибки при их обнаружении.

 

Была ли эта статья полезной?
Пользователи, считающие этот материал полезным: 0 из 0
Еще есть вопросы? Отправить запрос

Комментарии