Scanning multiple NFC tags in a row without restarting the session each time?

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:

  1. 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?
  2. VoiceOver / accessibility — how does the system NFC sheet interact with VoiceOver, especially if the session is restarting frequently while the user is mid-walk?
  3. 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"?
  4. 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:

  1. both approaches are problematic, because...
  2. Voiceover will announce a new session with every session, and that would become annoying quickly
  3. there is no "Live Mode" you can create, the sessions will timeout, and even worse...
  4. 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)

Scanning multiple NFC tags in a row without restarting the session each time?
 
 
Q