Интеграция Apple Wallet для пропусков и бейджей в мобильном приложении
Пропуск сотрудника, который не обновляется при смене отдела — это головная боль службы безопасности и самого сотрудника. Мы снимаем эту проблему с помощью Apple Wallet: пропуск всегда актуален, отзывается мгновенно, а процесс выдачи полностью автоматизирован. За 5 лет работы мы реализовали такие решения для компаний с парком от 200 до 5000 сотрудников — гарантируем стабильную работу даже при высокой нагрузке.
Почему стоит интегрировать Apple Wallet для пропусков?
Apple Wallet превращает смартфон в универсальный идентификатор. Сотруднику не нужна пластиковая карта — достаточно iOS-устройства. Пропуск в Wallet работает офлайн, поддерживает push-обновления и может содержать фото, отдел, зоны доступа и даже роль на конференции. Для бизнеса это снижает затраты на выпуск и замену карт на 30-40%, а для сотрудников — упрощает повседневное использование.
Как устроен pass.json для корпоративного пропуска?
Пропуск сотрудника — это generic-тип .pkpass. Generic — самый гибкий тип: нет строгих ограничений на семантику полей, структура определяется задачей. Для корпоративных пропусков часто добавляют фото сотрудника через thumbnail.png (90×90 @1x, 180×180 @2x) — оно отображается в правом углу карточки.
{
"formatVersion": 1,
"passTypeIdentifier": "pass.com.yourcompany.badge",
"serialNumber": "BADGE-EMP-1042",
"teamIdentifier": "ABCDE12345",
"organizationName": "YourCompany",
"description": "Пропуск сотрудника",
"foregroundColor": "rgb(255,255,255)",
"backgroundColor": "rgb(0,80,160)",
"generic": {
"primaryFields": [
{
"key": "name",
"value": "Иван Петров",
"label": "Сотрудник"
}
],
"secondaryFields": [
{
"key": "department",
"value": "Разработка",
"label": "Отдел"
},
{
"key": "access",
"value": "A, B, C",
"label": "Зоны доступа"
}
],
"auxiliaryFields": [
{
"key": "role",
"value": "Senior Developer",
"label": "Должность"
}
],
"backFields": [
{
"key": "emergency",
"label": "Экстренная связь",
"value": "+7 (495) 123-45-67"
},
{
"key": "valid",
"label": "Действителен до",
"value": "31.12.2024"
}
],
"barcode": {
"message": "BADGE-EMP-1042",
"format": "PKBarcodeFormatQR",
"messageEncoding": "iso-8859-1"
}
}
}thumbnail.png добавляется просто как файл в архив — PassKit подхватывает его автоматически по имени.
NFC или QR: что выбрать для контроля доступа?
| Критерий | NFC | QR-код |
|---|---|---|
| Требуется партнёрство с Apple | Да (Value Added Services) | Нет |
| Скорость считывания | <0,5 с | 1-2 с |
| Безопасность | Шифрование RSA/EC | Зависит от генерации |
| Устройства на входе | Специализированный NFC-ридер | Камера смартфона/сканера |
Generic-пасс поддерживает NFC через поле nfc в pass.json — только для устройств с iOS 13+:
"nfc": {
"message": "BADGE-EMP-1042-NFC-TOKEN",
"encryptionPublicKey": "base64-encoded-ec-public-key"
}NFC-ридер на турникете считывает зашифрованное message. Но есть ограничение: NFC в Wallet для стороннего ридера работает только через Apple's Value Added Services Program — требует партнёрского соглашения с Apple. Без программы NFC-функция пасса не активируется.
Альтернатива без партнёрства — QR-сканер. Работает надёжно, требует лишь камеру на входе.
Как управлять жизненным циклом пропуска?
Пропуск сотрудника имеет чёткий цикл: выдача → работа → отзыв (увольнение, смена должности). Отзыв реализуется двумя способами:
-
Через
expirationDate— пасс автоматически становится недействительным. Подходит для временных пропусков (конференция, подрядчик). -
Через
voided: trueс push-обновлением — для немедленного отзыва. Сервер получает событие (HR-система, увольнение) → отправляет APN push → устройство скачивает обновлённый пасс сvoided: true→ Wallet отображает пропуск как недействительный.
Сервер при скачивании обновлённого пасса должен вернуть HTTP 200 с новым .pkpass. Если вернуть HTTP 304 — устройство ничего не обновит.
Временные пропуска для мероприятий
Бейдж участника конференции — та же логика, но relevantDate выставляется на первый день мероприятия, expirationDate — на последний. Можно добавить расписание дня через backFields:
"backFields": [
{
"key": "schedule",
"label": "Программа",
"value": "09:00 Регистрация\n10:00 Keynote\n14:00 Воркшопы"
}
] Интеграция с HR-системой
Пропуск должен автоматически создаваться при найме и отзываться при увольнении. Webhook от HR-системы (1С, Bamboo HR, SAP) → сервер генерирует .pkpass и отправляет сотруднику email со ссылкой.
Для интеграции через email: ссылка вида https://api.yourcompany.com/badges/{token}.pkpass — iOS открывает через Safari и предлагает «Добавить в Wallet». MIME-тип ответа должен быть application/vnd.apple.pkpass.
При смене должности — не отзыв пасса, а его обновление: PATCH-запрос на web-сервис URL обновляет поля department и role. Wallet подтягивает изменения автоматически.
Что входит в работу по интеграции?
- Аудит текущей инфраструктуры и HR-системы
- Проектирование структуры pass.json под ваши поля
- Генерация сертификатов и provisioning profile в Apple Developer
- Настройка push-уведомлений (APNs) для обновления/отзыва
- Интеграция с HR-системой через webhook или REST API
- Тестирование на реальных устройствах (iOS 15+)
- Документация и обучение администраторов
Сроки и стоимость
Оценка проекта занимает от 2 часов до 1 дня в зависимости от сложности. Базовая интеграция (генерация пропусков + push-обновления) — от 5 до 10 рабочих дней. Для проектов с NFC и кастомной HR-интеграцией срок увеличивается до 20 дней. Стоимость рассчитывается индивидуально, но вы можете запросить предварительную оценку — свяжитесь с нами, мы подготовим коммерческое предложение.
Гарантия: мы даём 12 месяцев технической поддержки после внедрения. За 5+ лет мы не потеряли ни одного клиента — все проекты работают стабильно.







