You can install this framework with Swift Package Manager in Xcode 11.
github "tattn/NFCReader"
NFCReader uses Core NFC, so you need to add the following setting:
Near Field Communication Tag Reading
to Capabilities.Privacy - NFC Scan Usage Description
to Info.plist.Card | System code |
---|---|
Transit cards in Japan | 0003 |
nanaco, Edy, WAON | FE00 |
import NFCReader
let reader = Reader<Suica>() // `Nanaco`, `Edy` or `Waon`
reader.read(didBecomeActive: { _ in
print("didBecomeActive")
}, didDetect: { reader, result in
switch result {
case .success(let suica):
let balance = suica.boardingHistory.first?.balance ?? 0
reader.setMessage("Your balance is Β₯\(balance) .")
case .failure(let error):
reader.setMessage("something wrong")
}
})
You can see more details at Sources/NFCReader/Tags
:
let reader = Reader<FeliCa>
reader.read(didDetect: { reader, result in
switch result {
case .success(let tag):
switch tag {
case .edy(let edy):
print(edy)
case .nanaco(let nanaco):
print(nanaco)
case .waon(let waon):
print(waon)
case .suica(let suica):
print(suica)
}
case .failure(let error):
print(error)
}
})
The reader can also read just specific tags. Please see Sources/NFCReader/Tags/FeliCa/FeliCa.swift
.
reader.read(didDetect: { reader, result in
switch result {
case .success(let suica):
let balance = suica.boardingHistory.first?.balance ?? 0
reader.setMessage("Your balance is Β₯\(balance) .")
reader.restartReading() // continue to scan
case .failure(let error):
reader.setMessage("something wrong")
reader.restartReading()
}
})
var configuration = ReaderConfiguration()
configuration.message.alert = "Hold your iPhone near the Suica."
let reader = Reader<Suica>(configuration: configuration)
Please see ./Sources/NFCReader/Tags/FeliCa/nanaco/Nanaco.swift
.
git checkout -b my-new-feature
git commit -am 'Add some feature'
git push origin my-new-feature
Donating to help me continue working on this project.
NFCReader is released under the MIT license. See LICENSE for details.
Tatsuya Tanaka
link |
Stars: 94 |
Last commit: 3 years ago |
Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics