There is no Apple Wallet support in Craft:
PassKit 0
PKPass 0(and no Google Wallet on the Android side)
The case
Any app with a membership, a ticket, a class booking or a door credential eventually renders it as a QR code on a screen. That works, and it is strictly worse than a pass for the moment it is used:
- a pass is on the lock screen. Double-tap, it is there. A screen-rendered code is: unlock, find the app, wait for a view to load, hold it up — at a turnstile with people behind you.
- a pass works with the app closed, and offline. A gym basement with no signal is the normal case, not the edge case.
- a pass can surface itself. A geofenced pass appears on the lock screen when you arrive at the venue, which is exactly when it is wanted and never otherwise.
- a pass updates server-side by push. A cancelled membership or an expired class pack stops working without the person ever opening the app. A rendered code can only be revoked when the app next runs.
- it is where people already keep this. Boarding passes, event tickets, loyalty cards, transit. A gym card living somewhere else is the odd one out.
Rough shape
Reading an already-signed .pkpass is most of the value and is not much API:
craft.wallet.isAvailable()craft.wallet.add(passData | url)→ presents the system add-pass sheetcraft.wallet.has(serialNumber)→ so the app can show "Add to Wallet" or "In Wallet" honestly- Android: the Google Wallet equivalent
Signing stays on the server, where the certificate belongs — the app should never hold a pass type certificate, and Craft should not be in the business of signing. This is the presentation half only.
The update path (PKPassLibrary + the pass's own web service) is a reasonable second step, and the first step is useful without it.
Where this came from
HQ.training, built on Craft, already has the whole server half: GetMembershipCardAction, RotateMembershipCardAction, and check-in screens including aggregator check-ins for Urban Sports Club / ClassPass / Wellhub. The card is rotatable, which is exactly the property a Wallet pass's update service wants. What it cannot do is put any of it on the lock screen.
Filed alongside craft-native/craft#372 — both came out of asking which native capabilities a training app on Craft still cannot reach. That one is foundational; this one is a day at a turnstile.