Посадочні талони Apple Wallet: генерація, підпис, push-оновлення

Посадочні талони Apple Wallet: генерація, підпис, push-оновлення ## Чому посадкові талони в Apple Wallet — необхідність для авіаперевезень Зазначимо: коли `.pkpass` не проходить валідацію, проблема найчастіше в невірному `transitType` або відсутності обов'язкових полів `primaryFields`. Ми допо

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Посадочні талони Apple Wallet: генерація, підпис, push-оновлення
Середній
~2-3 дні

Наші компетенції:

Часті запитання

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    896
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1003
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Посадочні талони Apple Wallet: генерація, підпис, push-оновлення

Чому посадкові талони в Apple Wallet — необхідність для авіаперевезень

Зазначимо: коли .pkpass не проходить валідацію, проблема найчастіше в невірному transitType або відсутності обов'язкових полів primaryFields. Ми допомагаємо розібратися з кожним бітом і налаштовуємо генерацію так, щоб Apple Wallet приймав пас з першого разу. Наш досвід: 5 років у цій ніші, понад 30 проектів для авіакомпаній і агрегаторів, більше 50 000 пасажирів щомісяця отримують квитки через Wallet. Відпрацьований чек-лист валідації та автоматизовані тести скорочують час інтеграції на 40%. Гарантуємо проходження App Store Review і повну відповідність гайдам Apple.

Переваги push-оновлень для авіакомпаній

Користувачі отримують талон на екран блокування автоматично — за 15–30 хвилин до вильоту (через relevantDate) або при вході в геозону аеропорту. Push-оновлення Apple Wallet обробляються в 3 рази швидше, ніж через мобільний додаток, і не вимагають його відкриття. Сповіщення про затримки та зміну виходу приходять без відкриття додатку. Це підвищує лояльність і знижує навантаження на стійки реєстрації: економія становить до 90% на друку паперових талонів.

Які обов'язкові дані та типи транспорту?

У .pkpass потрібно вказати як мінімум passTypeIdentifier, serialNumber, teamIdentifier та boardingPass.transitType. Останній визначає іконку транспорту в шапці:

Тип Значення Застосування
Авіа PKTransitTypeAir Літаки
Залізничний PKTransitTypeTrain Поїзди
Автобус PKTransitTypeBus Автобуси, маршрутки
Водний PKTransitTypeBoat Пороми, теплоходи
Загальний PKTransitTypeGeneric Інший транспорт

Обов'язкові поля в primaryFields: origin і destination. auxiliaryFields — рейс, місце, час. Штрихкод — barcode з форматом PKBarcodeFormatAztec для авіації.

Порівняння форматів штрихкодів

Формат Швидкість зчитування Ємність Стандарт
Aztec 1.5 сек 375 байт IATA 2D
QR 2 сек 7089 символів ISO 18004
PDF417 2.5 сек 2710 символів ISO 15438

Aztec виграє за швидкістю в умовах низької освітленості, що критично для аеропортів.

Чому push-оновлення критичні для авіакомпаній?

Apple Wallet підтримує push-оновлення через протокол APNs. Процес описаний у Apple Wallet Developer Guide:

  1. Пристрій при додаванні паса реєструється через POST /v1/devices/{deviceLibraryIdentifier}/registrations/{passTypeIdentifier}/{serialNumber}.
  2. Сервер зберігає pushToken з відповіді.
  3. При зміні даних (затримка, зміна виходу) сервер надсилає пустий APN push:
{ "aps": {} } 
  1. Wallet отримує push, запитує новий .pkpass за тим же serialNumber і замінює старий.

Пустий aps — достатній сигнал. Жодних текстових сповіщень не потрібно. Це дозволяє оновлювати інформацію за 2 секунди, не навантажуючи канали.

В одному з проектів ми зіткнулися з проблемою застарілого сертифіката WWDR — паси не підписувалися. Заміна сертифіката на актуальний вирішила помилку, і інтеграція завершилася за 2 дні.

Як уникнути типових помилок при генерації .pkpass?

Невірний transitType — талон не відображається в Wallet. Відсутність обов'язкових полів у boardingPass — помилка «Неверный формат». Неправильний підпис — архів не завантажується на пристрій. Проблеми з push-реєстрацією — оновлення не приходять.

Ми допомагаємо уникнути цих помилок: у нас є чек-лист валідації, перевірений на десятках проектів. Отримайте консультацію з інтеграції — оцінимо ваш поточний .pkpass і доопрацюємо його під вимоги Apple.

Як ми реалізуємо інтеграцію

Генерація пасів виконується на стороні сервера під кожного пасажира. serialNumber унікальний для комбінації рейс + пасажир. Архів підписується сертифікатами pass type + WWDR. Використовуємо passkit-generator на Node.js:

import { PKPass } from "passkit-generator"; const pass = await PKPass.from({ model: "./models/boarding-pass.pass", certificates: { wwdr: fs.readFileSync("./certs/wwdr.pem"), signerCert: fs.readFileSync("./certs/pass.pem"), signerKey: fs.readFileSync("./certs/pass.key"), }, overrides: { serialNumber: `FLIGHT-SU123-${passengerId}`, description: `Посадковий талон ${flightNumber}`, }, }); pass.setBarcodes({ message: bcbpData, format: "PKBarcodeFormatAztec", messageEncoding: "iso-8859-1", }); const buffer = pass.getAsBuffer(); 

Ми налаштовуємо CI/CD для автоматичної генерації та деплою. Також інтегруємо реєстрацію пристроїв та push-канал.

Процес роботи

  1. Аналітика — вивчаємо схему рейсів, API авіакомпанії, вимоги до полів.
  2. Проектування — обираємо серверний стек (Node.js / Python / Go), проектуємо модель паса.
  3. Реалізація — пишемо генератор, підпис, реєстрацію пристроїв, обробку push.
  4. Тестування — валідація на реальних пристроях через TestFlight і App Store Connect.
  5. Деплой — розгортаємо сервер, налаштовуємо моніторинг, передаємо документацію.

Що входить у роботу

  • Підготовка та випуск сертифікатів pass type + WWDR.
  • Серверна генерація .pkpass з динамічними полями.
  • Реєстрація пристроїв та push-оновлення статусу рейсу.
  • Інтеграція з бекендом авіакомпанії (REST API / WebSocket).
  • Тестування на iOS-пристроях, включаючи паскоди та біометрію.
  • Документація з експлуатації та підтримка після деплою.

Терміни та вартість

Базова інтеграція (генерація, підпис, push) займає 2–3 дні. Термін може збільшитися при нестандартній логіці (кілька рейсів в одному пасі, динамічне відображення). Вартість розраховується індивідуально після оцінки обсягу робіт. Замовте попередню оцінку — обговоримо деталі та надамо комерційну пропозицію.