TRETJapanNFCReader
针对日本NFC卡的读取器库 / iOS等iOS系统的日本NFC卡读取器库
读取Suica、PASMO等交通IC卡、楽天Edy、nanaco、WAON等电子货币卡和驾驶执照
支持 OS / 支持的 OS
- iOS 9.3 及以后
- watchOS 2.0 及以后
- tvOS 9.2 及以后
- macOS 10.9 及以后
※ 在 iOS 13.0 及以后的设备上使用时,支持NFC卡的读取。
支持 NFC 卡 / 支持的 NFC 卡
NFC-B (Type-B)
- 驾驶执照
- 符合警察厅交通局驾驶证课的“驾驶证及驾驶证制作系统规格说明书(规格说明书版本号:008)”
- 实现了读取通用数据元素(MF/EF01)、密码(PIN)设置(MF/EF02)、使用密码1进行验证、登记事项(除去籍贯)(DF1/EF01)照片(DF2/EF01)等功能
NFC-F (Type-F, FeliCa)
显示 IDm 和系统代码
- 0003: 交通IC卡(Suica, ICOCA, Kitaca, PASMO, TOICA, manaca, PiTaPa, SUGOCA, nimoca, はやかけん, icsca, ...等)
- 剩余余额读取与显示
- 读取使用记录、检票出场记录、SF入场信息
- 80DE: IruCa
- 剩余余额读取与显示
- 读取使用记录、检票出场记录、SF入场信息
- 8592: PASPY
- 剩余余额读取与显示
- 读取使用记录、检票出场记录、SF入场信息
- 865E: SAPICA
- 剩余余额读取与显示
- 读取使用记录、检票出场记录、SF入场信息
- 8FC1: OKICA
- 剩余余额读取与显示
- 读取使用记录、检票出场记录、SF入场信息
- 8B5D: りゅーと(Ryuuto)
- 剩余余额读取与显示
- 读取使用记录
- FE00: 樂天Edy
- 剩余余额读取与显示
- 读取使用记录
- FE00: nanaco
- 剩余余额读取与显示
- 读取使用记录
- FE00: WAON
- 剩余余额读取与显示
- 读取使用记录
- FE00: 大学生協预付卡(大学学生证)
- 剩余余额读取与显示
- 读取使用记录
- 8008: 八达通
- 剩余余额读取与显示
用法 / How to use
示例
下方提供了示例。
Swift Package Manager
Xcode 11: 文件 > Swift Package > 添加包依赖... > 输入包仓库 URL
https://github.com/treastrain/TRETJapanNFCReader
Carthage
在 Cartfile
中记录以下内容,运行 carthage update
github "treastrain/TRETJapanNFCReader"
CocoaPods
在 Podfile
中记录以下内容,运行 pod install
pod 'treastrain/TRETJapanNFCReader'
全 NFC 卡片通用
- 在项目的 TARGET 中选择正在开发的 iOS 应用程序,在 Signing & Capabilities 中启用近场通信标签读取(需要 Near Field Communication Tag Reader Session Formats 包含在权限文件中)。
- 确认 Near Field Communication Tag Reader Session Formats 中包含 "NFC tag-specific data protocol (TAG)"。
- 在开发的 iOS 应用程序的 Info.plist 中添加 "Privacy - NFC Scan Usage Description (NFCReaderUsageDescription)"。
NFC-B (Type-B)
駕駛免許証の場合
- 要讀取駕駛免許証,需在開發的 iOS Application 的 Info.plist 中添加 "ISO7816 application identifiers for NFC Tag Reader Session (com.apple.developer.nfc.readersession.iso7816.select-identifiers)"。ISO7816 application identifiers for NFC Tag Reader Session 必須包含以下內容。
- 項目 0:
A0000002310100000000000000000000
- 項目 1:
A0000002310200000000000000000000
- 項目 2:
A0000002480300000000000000000000
- 號入庫圖書管理系統後,初始化
DriversLicenseReader
然後開始掃描。
import UIKit
import TRETJapanNFCReader
class ViewController: UIViewController, DriversLicenseReaderSessionDelegate {
var reader: DriversLicenseReader!
override func viewDidLoad() {
super.viewDidLoad()
self.reader = DriversLicenseReader(self)
self.reader.get(items: DriversLicenseCardItem.allCases, pin1: "暗証番号1", pin2: "暗証番号2")
}
func driversLicenseReaderSession(didRead driversLicenseCard: DriversLicenseCard) {
// driversLicenseCard に読み取った運転免許証の情報が格納されている
}
}
NFC-F (Type-F, FeliCa)
- 要讀取 FeliCa,需在開發的 iOS Application 的 Info.plist 中添加 "ISO18092 system codes for NFC Tag Reader Session (com.apple.developer.nfc.readersession.felica.systemcodes)",並在讀取時記錄要使用的 FeliCa 系統代碼。無法使用通配符。每張卡片都對應一個
Reader
和Card
。
卡片種類 | FeliCa 系統代碼 | Reader |
Card |
---|---|---|---|
交通系IC | 0003 |
TransitICReader |
TransitICCard |
IruCa | 80DE |
TransitICReader |
TransitICCard |
PASPY | 8592 |
TransitICReader |
TransitICCard |
SAPICA | 865E |
TransitICReader |
TransitICCard |
りゅーと | 8B5D |
RyutoReader |
RyutoCard |
OKICA | 8FC1 |
OkicaReader |
OkicaCard |
楽天Edy | FE00 |
RakutenEdyReader |
RakutenEdyCard |
nanaco | FE00 |
NanacoReader |
NanacoCard |
WAON | FE00 |
WaonReader |
WaonCard |
大学生協ICプリペイド | FE00 |
UnivCoopICPrepaidReader |
UnivCoopICPrepaidCard |
FCFCampus(ICU) | FE00 |
ICUReader |
ICUCard |
八達通 | 8008 |
OctopusReader |
OctopusCard |
使用例
樂天Edy 的範例。將上表的 Reader
和 Card
代入。
import UIKit
import TRETJapanNFCReader
class ViewController: UIViewController, FeliCaReaderSessionDelegate {
var reader: RakutenEdyReader!
override func viewDidLoad() {
super.viewDidLoad()
self.reader = RakutenEdyReader(viewController: self)
self.reader.get(items: [.balance])
}
func feliCaReaderSession(didRead feliCaCard: FeliCaCard) {
let rakutenEdyCard = feliCaCard as! RakutenEdyCard
let balance = rakutenEdyCard.balance! // カード残高
}
}
i18n
- 日本語 Japanese
- 英文 English
相關頁面 / Related
- treastrain/ios13-felica-reader: 用于阅读iOS 13及更高版本上的FeliCa(Suica)的示例项目 - GitHub
- 在iOS 13中访问FeliCa (Suica) | 来自E的笔记
- 使用iOS 13的Core NFC读取驾驶证【TRETJapanNFCReader】 - Qiita
致谢 / Acknowledgments
TRETJapanNFCReader/ISO14443/DriversLicense
驾驶证 JIS0208.TXT
- 2015 Unicode®, Inc. 请参阅使用条款,见 http://www.unicode.org/terms_of_use.html
TRETJapanNFCReader/FeliCa/Okica/
OKICA OKICA 的信息,以及 OKICA 卡内存储的ゆいレール车站名称信息,各个公交公司名称信息是由Twitter@resi098提供的。
TRETJapanNFCReader/FeliCa/UnivCoopICPrepaid
大学生协会IC预付费 在实现大学生协会IC预付费的读取时,参考以下规范。
oboenikui/UnivFeliCa.md
TRETJapanNFCReader/FeliCa/Octopus
八达通
电子货币及其服务的名称通常是各公司的商标或注册商标。此库并非由电子货币卡提供者官方提供。
电子货币和服务的名称通常是各公司的商标和注册商标。此库不是由电子货币卡提供者官方提供的。