When you change a value in one, or many, of the fields in a pass, or a pass template, PassKit updates the corresponding Pass record(s) almost instantly. The pass record(s) in your PassKit account database is thus updated.
To get the actual pass(es) updated in the wallet app, PassKit then delivers the update to the corresponding pass(es) in Apple Wallet and Google Wallet.
In most cases the update to the pass will appear 'instantaneously', but there are instances where updates can take some time, or rarely an update will not appear. Rest assured that the Pass record is updated in your PassKit account, but occasionally (fortunately rarely) the pass in your customers' phone may be out of sync.
Apple and Google Wallet use different technologies to update the pass as detailed below.
Apple Wallet
The following is a simplified, non-technical, summary of how Apple Wallet passes are updated; sometimes referred to as the 5 way handshake.
For Apple Wallet passes, updates are delivered using the Apple Push Network Service (APNS) .
When a pass record is updated, PassKit sends a notification to Apple informing Apple that PassKit has new content for a pass.
Apple then pings the device to inform it that PassKit has new content.
The device then calls PassKit and asks "what have you got"?
PassKit tells the device the serial number of the pass we have with new content and asks the device if they want it.
The device says "yes" and PassKit sends the latest version of the pass.
In effect, the device pulls content from PassKit. PassKit can't push content directly to Apple Wallet.
The update process uses the following pieces of information:
Information | Source | Purpose |
Web Service URL | PassKit defines this in the pass | Tells Wallet how to contact the PassKit server |
Pass Type Identifier Serial number | PassKit defines both in the pass | Together they uniquely identify the pass |
Device library identifier | Device defines | Identifies the device and authorizes requests |
Authentication token | PassKit defines this in the pass | Authorizes requests |
Push token | Device defines | Allows the PassKit server to send push notifications to the device |
Update tag | PassKit server defines | Describes state |
Apple officially describe their push (APNS) technology as “Best Effort”. This means that every effort will be made to deliver a push notification, but there is no guarantee it will arrive.
There are a broad range of factors that could prevent a push notification from reaching a device and the majority of these are outside the control of Apple or PassKit.
There can only ever be one message in the pending queue. If a newer message is pushed before an older message has arrived, then the older message will never arrive.
Push notifications tend to be more reliable over cellular than wifi connections, since NAT and firewalls can often prevent a push package from reaching a device.
Google Wallet
For Google Wallet passes, PassKit updates the wallet object on the Google server and then Google handles the update of the pass in the Google Wallet app.
Google Wallet updates are usually slower and typically don't appear on a pass until the smartphone owner has exited the Google Wallet app and then re-opened Google Wallet app at a later time. i.e. when Google Wallet is reopened, the app calls the Google Wallet server to get the latest content of the pass.