Для перевірки справжності push-запитів з iOS-додатки Apple використовує цифрові сертифікати з відкритим ключем, тому необхідно зареєструвати свій додаток в Apple.
Потім необхідно визначити кожен пристрій, на яке встановлюється додаток.
Щоб зареєструвати свій додаток для передачі push-повідомлень, необхідно створити пару ключів (секретного і відкритого) для перевірки автентичності API-викликів, звернених до серверів Apple Push Notification (APNs).
Після завантаження цифрового сертифікату двічі клацніть на ньому. "Зв'язка ключів" автоматично імпортує цифровий сертифікат і зв'яже його з секретним ключем, що згенерував при створенні запиту (див. Приклад №3).
Тепер все API-запити до push-серверам APNs будуть шифруватися за допомогою секретного ключа з файлу p12 і забезпечуватися відкритим ключем з цифровим підписом, щоб гарантувати, що це дійсно API-виклик від вашої програми.
- В iOS-додатку з'являється діалогове вікно, яке вимагає дозволу користувача на отримання повідомлень.
- Після отримання дозволу iOS-додаток підключається до служби APNs для отримання рядка унікального ідентифікатора, встановленого на пристрої з додатком.
- iOS-додаток передає ідентифікатор з додатком на сервері.
- При відправці push-повідомлення сервер додатків перевіряє справжність push-серверів Apple і використовує ідентифікатор для вказівки одержувача повідомлення.
- Прийом і обробка повідомлення пристроєм користувача здійснюється в режимі онлайн.
У режимі офлайн повідомлення ставиться в чергу і доставляється, як тільки пристрій користувача вийде на зв'язок. - Сервер додатків за допомогою APNs періодично перевіряє список ідентифікаторів додатків. Така перевірка виключає ідентифікатори користувачів, що видалили додаток або змінили свій push-in статус.
Запит і збереження маркера пристрої
Ваше iOS-додаток повинен запитувати дозвіл користувача на отримання повідомлень на ті пристрої, на яких воно встановлено.
Цей процес здійснюється в додатку (application delegate) за допомогою простого API-виклику (див. Приклад №1)
Приклад №1. Запит дозволу користувача.
UIUserNotificationType types = UIUserNotificationTypeBadge |