I'm building an accessibility feature where a user walks around and taps NFC tags to trigger updates in the app (e.g., wayfinding/context info).
I want a "Live Mode" toggle that keeps the app listening for NFC reads continuously while it's on, processing each tag as it's scanned, rather than one-shot read-and-dismiss.
Is there a Core NFC API or session configuration that supports this kind of continuous/persistent listening, or does every read still require invalidating and restarting the session afterward?
Currently: I have high-performant reads working reliably with passive NDEF/tag detection.
What I'm trying to figure out:
- Recommended approach — should I keep a single long-lived NFCReaderSession alive and handle repeated reads within it, or restart a new session immediately after each read?
- VoiceOver / accessibility — how does the system NFC sheet interact with VoiceOver, especially if the session is restarting frequently while the user is mid-walk?
- Session timeout and restart handling — what's the best way to detect and recover from a session timing out or invalidating unexpectedly, without the user noticing a gap in "Live Mode"?
- Battery/radio use — are there known concerns with keeping NFC polling active over an extended period (minutes, not seconds)?
Thank you.
While you can read multiple tags without restarting the session (invalidateAfterFirstRead: false will let you do that), but your use case sounds like you are trying to use the wrong tool. iBeacons or a custom Bluetooth tag are what these kinds of applications are for.
What I would say is:
- both approaches are problematic, because...
- Voiceover will announce a new session with every session, and that would become annoying quickly
- there is no "Live Mode" you can create, the sessions will timeout, and even worse...
- not only this drains the battery, but causes heat buildup on the NFC antenna (reading is not passive). So, not only you have no chance of keeping a session active for minutes, repeatedly starting sessions will increase the thermal stress and the sessions will start getting shorter and shorter, and eventually stop for cooldown.
I would say, don't do it.
-- S.Beck - 7strikes.dev (I have a more detailed article about this)