TRETJapanNFCReader 2.0.1

TRETJapanNFCReader 2.0.1

treastrain / Tanaka Ryoga 维护。



TRETJapanNFCReader

针对日本NFC卡的读取器库 / iOS等iOS系统的日本NFC卡读取器库

MIT License GitHub Stars Platform: iOS|watchOS|tvOS|macOS Swift: 5.1.2 Swift Package Manager compatible Carthage compatible CocoaPods

支持 Twitter: @JapanNFCReader

读取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 卡片通用

  1. 在项目的 TARGET 中选择正在开发的 iOS 应用程序,在 Signing & Capabilities 中启用近场通信标签读取(需要 Near Field Communication Tag Reader Session Formats 包含在权限文件中)。
  2. 确认 Near Field Communication Tag Reader Session Formats 中包含 "NFC tag-specific data protocol (TAG)"。
  3. 在开发的 iOS 应用程序的 Info.plist 中添加 "Privacy - NFC Scan Usage Description (NFCReaderUsageDescription)"。

NFC-B (Type-B)

駕駛免許証の場合

  1. 要讀取駕駛免許証,需在開發的 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
  1. 號入庫圖書管理系統後,初始化 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 系統代碼。無法使用通配符。每張卡片都對應一個 ReaderCard
卡片種類 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 的範例。將上表的 ReaderCard 代入。

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

致谢 / Acknowledgments

驾驶证 TRETJapanNFCReader/ISO14443/DriversLicense

OKICA TRETJapanNFCReader/FeliCa/Okica/

OKICA 的信息,以及 OKICA 卡内存储的ゆいレール车站名称信息,各个公交公司名称信息是由Twitter@resi098提供的。

大学生协会IC预付费 TRETJapanNFCReader/FeliCa/UnivCoopICPrepaid

在实现大学生协会IC预付费的读取时,参考以下规范。

八达通 TRETJapanNFCReader/FeliCa/Octopus

电子货币及其服务的名称通常是各公司的商标或注册商标。此库并非由电子货币卡提供者官方提供。

电子货币和服务的名称通常是各公司的商标和注册商标。此库不是由电子货币卡提供者官方提供的。