Подписаться

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

Есть два способа отправлять push-уведомления на устройство:

1. Отправка уведомлений реализована на вашем сервере (Рекомендуемый)

Вы можете прислать нам URL вашего сервера, на который с сервера LiveTex будут поступать вебхуки с сообщениями в формате JSON. Ваш сервер на основе полученных данных сможет отправить push-уведомление.

Плюсы такого подхода:

  • Безопасность. Вам не требуется передавать третьей стороне ключи и пароли для работы с уведомлениями для вашего приложения. 
  • Гибкость. Вы сами регулируете содержание уведомлений и контролируете их отправку.

Сервер LiveTex посылает вебхук при новом сообщении от оператора в том случае, если связь с приложением прервалась и приложение не восстанавливает соединение с сервером LiveTex заданное время. Из всех сообщений, которые были высланы оператором за время отведённое на восстановление соединения, в вебхуке будет только последнее сообщение. Для отображения в приложении всех сообщений, которые были отправлены, пока отсутствовало соединение, при возвращении на экран чата необходимо загрузить историю при помощи метода getHistory/messageHistory.

Отправляемые в JSON данные:

Поле Тип данных Обязательность Описание
version string + Строка, версия протокола (сейчас только 1) обязательно
platform string + "ios" | "android" - перечисление может быть либо ios либо android
to string + id устройства пользователя
text string - текст сообщения
url string - ссылка на файл

Возможные варианты комбинации text/url:
 - задан text, не задан url - текстовое сообщение;
- не задан text, задан url - сообщение содержащее файл;
- задан text, задан url - отправлен файл с комментарием.

 

2. Отправка уведомлений с сервера LiveTex.

Сервер LiveTex может отсылать уведомления при отсутствии соединения с приложением.

Для проверки подлинности 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 (Sandbox) или 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
Еще есть вопросы? Отправить запрос

Комментарии