From 150b9c8b9095e6e6b6b39a99e1dbeb0f23c9907a Mon Sep 17 00:00:00 2001 From: Samuel Ssekizinvu Date: Wed, 17 Dec 2025 14:36:25 +0300 Subject: [PATCH] fix(ios): handle empty NDEF tags without waiting for timeout NFCError Code 403 ("NDEF tag does not contain any NDEF message") was causing tags to be silently skipped during discovery and explicit reads. Handle error 403 in both readNDEF call sites: - Tag discovery (convert function): return tag with nil cachedNdefMessage - Explicit read (ndefReadNdef): return success with nil message --- ios/Classes/NfcManagerPlugin.swift | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ios/Classes/NfcManagerPlugin.swift b/ios/Classes/NfcManagerPlugin.swift index 3532385..5556d80 100644 --- a/ios/Classes/NfcManagerPlugin.swift +++ b/ios/Classes/NfcManagerPlugin.swift @@ -120,6 +120,11 @@ public class NfcManagerPlugin: NSObject, FlutterPlugin, HostApiPigeon { } tag.readNDEF { message, error in if let error = error { + let nsError = error as NSError + if nsError.domain == "NFCError" && nsError.code == 403 { + completion(.success(nil)) + return + } completion(.failure(error)) return } @@ -766,6 +771,11 @@ private func convert(_ value: NFCNDEFTag, _ completionHandler: @escaping (TagPig } value.readNDEF { message, error in if let error = error { + let nsError = error as NSError + if nsError.domain == "NFCError" && nsError.code == 403 { + completionHandler(pigeon, nil) + return + } completionHandler(nil, error) return }