Apple did a great job introducing CoreNFC
in iOS 11. NFCDecoder
adds the final piece to the puzzle - it gets actual Strings and URLs from that NFCNDEFPayload
or NFCNDEFMessage
. All widely used payload types are supported (text, URI and smart poster). NFCDecoder
is free, lightweight and written in Swift. Try the example!
NFCDecoder is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'NFCDecoder'
NFCDecoder is compatible with Carthage. Add it to your Cartfile
:
github "impekable/NFCDecoder"
Add to your NFCReaderSessionDelegate
:
import NFCDecoder
func readerSession(_ session: NFCNDEFReaderSession, didDetectNDEFs messages: [NFCNDEFMessage]) {
let payloads = NFCDecoder().decode(messages)
payloads.forEach { logToConsole(payload: $0) }
stopNfcSession()
}
func logToConsole(payload: NdefPayload) {
switch payload {
case .text(let text):
print(text.text, text.languageCode)
case .uri(let uri):
print(uri.url.absoluteString)
case .smartPoster(let morePayloads): // Smart poster is just a container for more payloads
morePayloads.forEach { logToConsole(payload: $0) }
case .empty:
print("empty payload")
case .unknown(_):
print("oops")
}
}
Full example project is available in Example directory.
iOS 11+, iPhone 7 or newer.
Impekable is a UI design and mobile development studio based in San Jose, CA. We help organizations from startups to Fortune 500 companies create memorable, human-centric mobile experiences.
NFCDecoder
is available under the MIT license. See the LICENSE file for more info.