diff --git a/.changes/nfc-close-session.md b/.changes/nfc-close-session.md new file mode 100644 index 0000000000..70735b34f4 --- /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 58d69a847a..af1a68d58b 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 } }