From fe23a5e01399a6ad61426bf8a94a6bb97227cf88 Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 1 Aug 2025 14:49:49 -0400 Subject: [PATCH] fix(nfc): Ensure that Session is dropped when an error causes it to become invalid (#2885) Co-authored-by: Fabian-Lars --- .changes/nfc-close-session.md | 6 ++++++ plugins/nfc/ios/Sources/NfcPlugin.swift | 2 ++ 2 files changed, 8 insertions(+) create mode 100644 .changes/nfc-close-session.md diff --git a/.changes/nfc-close-session.md b/.changes/nfc-close-session.md new file mode 100644 index 000000000..70735b34f --- /dev/null +++ b/.changes/nfc-close-session.md @@ -0,0 +1,6 @@ +--- +nfc: patch +nfc-js: patch +--- + +On iOS, the reader session will now get closed properly on errors, preventing dangling invalid sessions that could prevent subsequent write attempts. diff --git a/plugins/nfc/ios/Sources/NfcPlugin.swift b/plugins/nfc/ios/Sources/NfcPlugin.swift index 58d69a847..af1a68d58 100644 --- a/plugins/nfc/ios/Sources/NfcPlugin.swift +++ b/plugins/nfc/ios/Sources/NfcPlugin.swift @@ -149,6 +149,7 @@ class NfcPlugin: Plugin, NFCTagReaderSessionDelegate, NFCNDEFReaderSessionDelega func tagReaderSession(_ session: NFCTagReaderSession, didInvalidateWithError error: Error) { Logger.error("Tag reader session error \(error)") self.session?.invoke.reject("session invalidated with error: \(error)") + self.session = nil } func readerSession(_ session: NFCNDEFReaderSession, didDetectNDEFs messages: [NFCNDEFMessage]) { @@ -200,6 +201,7 @@ class NfcPlugin: Plugin, NFCTagReaderSessionDelegate, NFCNDEFReaderSessionDelega } else { Logger.error("NDEF reader session error \(error)") self.session?.invoke.reject("session invalidated with error: \(error)") + self.session = nil } }