Інтеграція Apple Wallet для ключів від автомобіля/гостиниці у мобільному додатку
Apple Wallet у режимі цифрових ключів — не просто гарна карточка. Це зв'язка NFC Secure Element з Car Connectivity Consortium (CCC) Digital Key стандартом для автомобілів, або ASSA ABLOY/HID протоколом для гостинічних замків. І вся ця зв'язка вимагає спеціального Apple MFi-договору, який неможливо отримати в одиночку — потрібен партнер зі сторони виробника замку або автомобіля.
Архітектура: PassKit vs Wallet Keys
Критично розділяти два різних сценарії, які часто путають.
PassKit-проходки (PKPass) — звичайні карточки у Wallet: посадкові талони, купони, карти лояльності. Їх може добавляти будь-який розробник з сертифікатом Apple. Жодного NFC-доступу до Secure Element немає.
Apple Wallet Keys — цифрові ключі для авто та готелів. Використовують NFC через Secure Element, Express Mode (працює без розблокування телефона, навіть при розрядженому iPhone). Вимагають спеціального entitlement com.apple.developer.passkit.pass-type.digital-key, який Apple видає тільки через партнерську програму з виробником обладнання.
Якщо замовник хоче «цифровий ключ як у Apple Wallet» — перше питання: чи у них є договір з Apple та партнером з обладнання?
Реалізація для готельного сценарію
Для Hotel Key Apple використовує стандарт, сумісний з ASSA ABLOY Mobile Access та HID Mobile Access. Мобільний додаток добавляє ключ через PKAddPassesViewController:
import PassKit
func addHotelKey(passData: Data) {
guard let pass = try? PKPass(data: passData) else { return }
if PKAddPassesViewController.canAddPasses() {
let vc = PKAddPassesViewController(pass: pass)
vc.delegate = self
present(vc, animated: true)
}
}
// Серверна сторона генерує .pkpass bundle:
// manifest.json + signature + pass.json + фонове зображення
// Підписується сертифікатом Pass Type Certificate
pass.json для Hotel Key містить спеціальні поля, визначені партнером HID/ASSA ABLOY:
{
"passTypeIdentifier": "pass.com.hotel.room-key",
"serialNumber": "booking-12345-room-401",
"teamIdentifier": "XXXXXXXXXX",
"nfc": [
{
"message": "ENCRYPTED_ROOM_TOKEN",
"encryptionScheme": "EAP"
}
]
}
nfc.message шифрується ключами, наданими партнером замкової системи. Мобільний додаток не розшифровує — це робить Secure Element при контакті з NFC-ридером замку.
Express Mode
Найважливіше для готельного сценарію: користувач не повинен доставати телефон з кармана. PKPassLibrary.isContactlessPaymentSupported() — перевірка підтримки Express Mode. Для роботи без розблокування ключ повинен бути добавлений через правильний Pass Type з відповідним entitlement.
На iPhone з розрядженою батареєю (Power Reserve mode) Apple Pay та Express Travel Cards працюють ~5 годин. Hotel Keys — аналогічно, якщо виробник замку підтримує цей режим.
Car Key: CCC Digital Key
Для автомобільних ключів — CCC (Car Connectivity Consortium) Digital Key Release 3.0. Підтримується BMW, Hyundai, Genesis, KIA, Mini. Протокол використовує UWB для точного позиціонування (Hands-Free unlock при приближенні) та NFC як fallback.
Мобільний додаток автовиробника добавляє Car Key через запрошення від транспортного засобу (Vehicle Invitation):
// CarPlay + PassKit інтеграція
func handleVehicleInvitation(_ invitationToken: String) {
PKVehicleConnectionSession.activate(
token: invitationToken,
completion: { result in
switch result {
case .success(let pass):
// Ключ добавлено у Wallet
break
case .failure(let error):
// PKError.vehicleConnectionNotSupported — авто не підтримує
break
}
}
)
}
Обмін ключами — передача через iMessage з обмеженими правами (тільки відкриття без керування). Через PKShareablePassMetadata.
Серверна інфраструктура
Для Hotel Key — сервер повинен:
- Отримувати дані бронювання
- Запитувати токен у партнера (HID Origo API або ASSA ABLOY Mobile Access)
- Генерувати
.pkpassbundle з зашифрованим NFC-полем - Підписувати сертифікатом Pass Type
- Доставляти посилання користувачу через push або email
Термін дії ключа кодується в relevantDate та expirationDate у pass.json. При чекауті — сервер помічає pass як invalidated через Pass Update URL, ключ видаляється з пристрою.
Строки
Базова інтеграція PKPass з Hotel Key (при наявності договорів з Apple та партнером): 3–5 днів розробки мобільної частини + 1–2 тижні серверної інтеграції з HID/ASSA ABLOY API. Car Key інтеграція з UWB: окремий договір з CCC, строки від 2 місяців. Стоимість розраховується індивідуально.







