The default contactless app is woken by every reader

22 September 2026

An app holding com.apple.developer.nfc.hce.default-contactless-app and selected as the default app receives NFCWindowSceneEvents when the phone meets a reader. The events apps expect are the ones for the cards they support. The events they get also include the access reader in the office lobby, the transit gate and the hotel room door.

There is no way to narrow this, and the shape of the event says why. readerDetected reports the presence of a reader. It is a field-level signal, raised before any application identifier has been exchanged, and at that instant nothing on the device knows which AID the reader is about to ask for. The prefixes declared in com.apple.developer.nfc.hce.iso7816.select-identifier-prefixes govern what your CardSession can answer once you are emulating a card. They do not govern whether you are woken.

Also, there can only be one default. The entitlement lets a person choose your app in Settings, and that choice is singular: whatever they pick is the front door for every contactless interaction on the device. So the unsupported cases are not edge cases, they are most cases, and they need designing: come up, make it obvious you are not the right credential, and get out of the way without the user having to dismiss anything.

Which invites a question worth asking before applying for the entitlement. If your app services limited identifiers, being the default means appearing at every reader its user walks past and being useless at nearly all of them. Being the default is a commitment to the whole surface, not a claim on the part of it you care about. An app that does one thing well is often better off letting the user invoke it, and leaving the front door to something general.