NFCReader
Scan and decode NFC tags on iOS
Features
- Scan NFC Tag (see below about supported tags)
- Scan custom NFC tags
Supported Tags
- IC cards for transit in Japan
- Suica, Pasmo, Kitaca, ICOCA, TOICA、manaca、PiTaPa、nimoca、SUGOCA、はやかけん
- IC cards for shopping in Japan
- nanaco
- Edy
- WAON
Requirements
- Xcode 11.x
- Swift 5.1+
- iOS 13.0+
Installation
You can install this framework with Swift Package Manager in Xcode 11.
Usage
Read histories
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
:
Scan multiple tags
private let reader = Reader<FeliCa>
self.reader.read(didDetect: { reader, result in
switch result {
case .success(let tag):
let balance: UInt
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
.
Scan repeatedly
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()
}
})
Custom message
var configuration = ReaderConfiguration()
configuration.message.alert = "Hold your iPhone near the Suica."
let reader = Reader<Suica>(configuration: configuration)
Read custom tag
Please see ./Sources/NFCReader/Tags/FeliCa/nanaco/Nanaco.swift
.
ToDo
- Decode entrance and exit histories of Suica. (service code: 108F)
- Decode SF entrance histories of Suica. (service code: 10CB)
- Support more NFC tags.
Contributing
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D
Support this project
Donating to help me continue working on this project.
License
Suica is released under the MIT license. See LICENSE for details.
Author
Tatsuya Tanaka