Передача повідомлень в ios-пристрої

Доставка мультимедійних повідомлень безпосередньо в iOS-додатку

Довідкова інформація

двосторонні повідомлення

Apple і Google побудували інфраструктури на базі Інтернету, що дозволяють доставляти повідомлення з серверних додатків відповідно на iOS- і Android-пристрої. Push -Повідомлення спочатку призначені для взаємодії з додатками, встановленими на мобільних пристроях. Вони дозволяють передавати текст, файли мультимедіа і спеціальні дані, такі як мелодії дзвінків та бейджі для відображення на значках додатки.

У цій статті пояснюється, як технологія push-повідомлень працює на платформі iOS і як включити її в свої додатки. Щоб отримати максимальний ефект від статті, потрібно володіти деяким досвідом програмування на платформі iOS і Java.

Основи push-технології iOS

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

Потім необхідно визначити кожен пристрій, яке встановлює додаток і буде отримувати push-повідомлення для цього додатка. Послідовність така:

Альтернатива своєму власному серверу: Urban Airship

Urban Airship - це служба, яка дозволяє передавати push-повідомлення без необхідності створювати свій власний сервер (див. Розділ Ресурси). Ви завантажуєте свої секретні ключі в Urban Airship і використовуєте його Web-консоль для розсилки push-повідомлень своїм користувачам. Urban Airship надає SDK для iOS, який полегшує реєстрацію додатком кожного підключеного пристрою на сервері, так що ці пристрої відображаються на консолі управління повідомленнями. Служба Urban Airship спрощує роботу, але може виявитися дорогою - і все одно основи технології push-повідомлень потрібно знати.

APNs також дозволяють серверу додатків періодично перевіряти список ідентифікаторів додатків. Це створює можливості для виключення ідентифікаторів тих користувачів, які видалили додаток або змінили свій push-in статус.

Може здатися, що чекає багато роботи, і так воно і є. Ось чому існують комерційні служби посередників типу Urban Airship (див. Врізку).

Ми покажемо, як зареєструвати свій додаток, а потім заглибимося в подробиці розробки iOS-додатки push-повідомлень і його серверних компонентів за допомогою Java-бібліотеки з відкритим вихідним кодом.

Реєстрація додатки

Щоб зареєструвати свій додаток для передачі push-повідомлень, необхідно спочатку створити пару секретного / відкритого ключів для перевірки справжності API-викликів, звернених до серверів APNs. На Mac це робиться за допомогою "Зв'язки ключів" (KeyChain Access). Виберіть Зв'язка ключів> Асистент сертифікації> Запросити сертифікат у бюро сертифікації. щоб створити файл запиту на оформлення сертифіката. Файл запиту містить сгенерированную пару з відкритого ключа та відповідного особистого ключа, збережену в "зв'язці ключів". Не забудьте вибрати в діалоговому вікні пункт Зберегти на диск. як показано на малюнку 1.

Малюнок 1. Створення пари ключів і запиту на оформлення з програми "Зв'язка ключів" на комп'ютері Mac

Передача повідомлень в ios-пристрої

Далі, відвідайте портал управління профілями користувачів і доступом до додатків Apple (див. Розділ Ресурси) і завантажте туди свій запит, який буде пов'язаний з відповідним профілем. Більшість додатків має оцінний профіль для розробки і робочий профіль для App Store, так що вам, швидше за все, доведеться згенерувати і завантажити два файли запиту. Відправивши запит на портал, ви отримаєте цифровий сертифікат для завантаження. Сертифікат містить відкритий ключ, який тепер сервери APNs будуть розпізнавати як пов'язаний з даним додатком. На малюнку 2 показаний приклад.

Малюнок 2. Цифровий сертифікат Apple

Передача повідомлень в ios-пристрої

Завантажте цифровий сертифікат і двічі клацніть на завантаженому файлі. "Зв'язка ключів" автоматично імпортує цифровий сертифікат і зв'яже його з секретним ключем, що згенерував при створенні запиту. На малюнку 3 показана пара відкритого і секретного ключів в "зв'язці ключів".

Малюнок 3. Пара відкритого і секретного ключів в "зв'язці ключів"

Передача повідомлень в ios-пристрої

Тепер можна експортувати пару ключів в файл, використовуючи формат Personal Information Exchange (p12). При створенні файлу p12 "Зв'язка ключів" попросить призначити пароль для захисту секретного ключа. При бажанні можна використовувати порожній пароль.

З цього моменту всі ваші API-запити до push-серверам APNs будуть шифруватися за допомогою секретного ключа з файлу p12 і забезпечуватися відкритим ключем з цифровим підписом, щоб гарантувати, що це дійсно API-виклик від вас. Я продемонструю, як використовувати ключі, нижче, коли буду описувати взаємодію з серверами APNs. (При використанні Urban Airship вас попросять передати файл p12 разом з паролем на сервер, щоб він міг відправляти push-повідомлення від вашого імені.)

Тепер, маючи push-сертифікати, потрібно перезавантажити і перевстановити свої профілі управління доступом - тому що вони змінилися і тепер підтримують push-повідомлення для додатка.

Запит і збереження маркера пристрої

Ваше iOS-додаток повинен запитувати дозвіл користувача на отримання повідомлень на пристрої, на яких воно встановлено. Як правило, це робиться в уповноваженому додатку (application delegate) за допомогою простого API-виклику, як показано в лістингу 1.

Лістинг 1. Запит дозволу користувача

Якщо користувач дає дозвіл, додаток автоматично звертається до сервера APNs за маркером пристрою. Маркер дозволяє APNs ідентифікувати це конкретне додаток, встановлений на даному конкретному пристрої, як кінцевий пункт повідомлення. Це автоматичний процес, що відбувається у фоновому режимі. Для нього не потрібно писати ніякого коду.

Після відповіді сервера APNs викликається метод didRegisterForRemoteNotificationsWithDeviceToken в уповноваженому додатку з маркером пристрої, переданому в якості параметра виклику. Збережіть маркер пристрої і завантажте його на свій сервер push-повідомлення, як показано в лістингу 2.

Лістинг 2. Отримання ідентифікатора і його завантаження на сервер

Сервер повинен зберегти маркер і пов'язану з ним ідентифікаційну інформацію в базі даних. У більшості додатків вони зберігаються в базі даних профілів користувачів.

Відправка push-повідомлення

Щоб відправити push-повідомлення, сервер виконує наступні дії.

У сервера APNs складний API Web-сервісів. На щастя, для Java-розробників існує бібліотека з відкритим вихідним кодом JavaPNS, яка значно спрощує роботу з ним. У розділі Ресурси наведені посилання на завантаження і документацію JavaPNS.

Код, наведений у лістингу 3, показує, як відправити SMS-подібне повідомлення на пристрій за допомогою бібліотеки JavaPNS.

Лістинг 3. Відправлення push-повідомлення

Значення, що повертається виклику методу - це список об'єктів PushedNotification. які можна використовувати для з'ясування статусу push-доставки, як показано в лістингу 4.

Лістинг 4. Перевірка статусу push-доставки

Якщо об'єкт повідомлення говорить вам, що маркер певного пристрою більше не активний, - наприклад, якщо користувач видалив додаток з пристрою або відключив повідомлення в параметрах налаштування програми, - то потрібно видалити маркер з бази даних, щоб не відправляти більше повідомлень в цей пристрій.

Ще один спосіб оновлення списку маркерів активних пристроїв - періодично звіряти сервер додатків з серверами APNs. Лістинг 5 демонструє, як запросити службу зворотного зв'язку APNs за допомогою JavaPNS, щоб отримати список недійсних маркерів пристроїв від отладочного сервера APNs.

Лістинг 5. Перевірка для поновлення списку дійсних маркерів пристроїв

Важливо не витрачати ресурси на розсилку повідомлень в пристрої, з яких додаток видалено або які відмовилися від отримання повідомлень.

додаткові міркування

Push-повідомлення можна перевірити на емуляторах iOS; для тестування програми його необхідно встановити на реальному пристрої. Оскільки цифровий сертифікат, який використовується для перевірки автентичності повідомлення, пов'язаний з профілем управління доступом до даних додатка, в процесі розробки або поширення його потрібно тестувати з налагоджувальний сертифікатом. Після перевірки програми та його приміщення в App Store потрібно перейти на робочий сертифікат.

Крім того, важливо розуміти, що настройка і відправка push-повідомлень для великої бази користувачів - це ресурсномістка завдання. Наприклад, може знадобитися переглядати базу даних в мільйон користувальницької кожні 5 секунд, щоб виявити 10 користувачів, яким в даний момент необхідно відправити повідомлення. Щоб підтримувати часту розсилку повідомлень великій кількості користувачів, потрібна ретельно спроектована і спланована інфраструктура з боку сервера. І навпаки, відправка push-повідомлення мільйону користувачів відразу створює інтенсивний трафік, яким, можливо, краще управляти через пул потоків, а не блокувати єдиний потік. Бібліотека JavaPNS надає простий API, який використовує пули потоків для розсилки повідомлень на велику кількість пристроїв одночасно.

висновок

Push-технологія дозволяє серверу додатків обійти операторів зв'язку і відправляти повідомлення безпосередньо на додатки iOS-пристроїв через Інтернет. Хоча реалізація push-повідомлень не тривіальна - потрібні SSL-сертифікати на стороні клієнта для перевірки справжності на серверах Apple, - допомога посередників, таких як Urban Airship, або бібліотеки JavaPNS може полегшити розсилку повідомлень. SMS і MMS займають своє місце і залишаються більш надійними, ніж push-технологія, зате реалізувавши службу push-повідомлень, iOS-додатку можна зробити багатшим і різноманітнішим.

Отримати продукти і технології