Coder Social home page Coder Social logo

blklmn345 / tretjapannfcreader Goto Github PK

View Code? Open in Web Editor NEW

This project forked from treastrain/tretjapannfcreader

0.0 0.0 0.0 670 KB

日本の NFC、FeliCa カード向けリーダーライブラリ(iOS 13.0 以降)Suica、PASMOなどの交通系ICカード、楽天Edy、nanaco、WAON、運転免許証の読み取り(iOS 13 Core NFC)

License: MIT License

Ruby 0.46% Swift 99.29% Objective-C 0.25%

tretjapannfcreader's Introduction

TRETJapanNFCReader

日本のNFCカード向けリーダーライブラリ / NFC Reader for Japanese NFC Cards for iOS etc.

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 / Supported OS

  • iOS 9.3 以降
  • watchOS 2.0 以降
  • tvOS 9.2 以降
  • macOS 10.9 以降

※ NFCカードの読み取りは iOS 13.0 以降で対応するデバイスで使用可能。

対応 NFC カード / Supported NFC card

NFC-B (Type-B)

  • 運転免許証
  • 警察庁交通局運転免許課による「運転免許証及び運転免許証作成システム等仕様書(仕様書バージョン番号:008)」に対応
  • 共通データ要素(MF/EF01)、暗証番号(PIN)設定(MF/EF02)の読み取り、暗証番号1による認証、記載事項(本籍除く)(DF1/EF01)写真(DF2/EF01)まで実装済み

NFC-F (Type-F, FeliCa)

IDm と System Code の表示

  • 0003: 交通系ICカード (Suica, ICOCA, Kitaca, PASMO, TOICA, manaca, PiTaPa, SUGOCA, nimoca, はやかけん, icsca, ...etc.)
    • 残高の読み取りと表示
    • 利用履歴、改札入出場履歴、SF入場情報の読み取り
  • 80DE: IruCa
    • 残高の読み取りと表示
    • 利用履歴、改札入出場履歴、SF入場情報の読み取り
  • 8592: PASPY
    • 残高の読み取りと表示
    • 利用履歴、改札入出場履歴、SF入場情報の読み取り
  • 865E: SAPICA
    • 残高の読み取りと表示
    • 利用履歴、改札入出場履歴、SF入場情報の読み取り
  • 8FC1: OKICA
    • 残高の読み取りと表示
    • 利用履歴、改札入出場履歴、SF入場情報の読み取り
  • 8B5D: りゅーと
    • 残高の読み取りと表示
    • 利用履歴の読み取り
  • FE00: 楽天Edy
    • 残高の読み取りと表示
    • 利用履歴の読み取り
  • FE00: nanaco
    • 残高の読み取りと表示
    • 利用履歴の読み取り
  • FE00: WAON
    • 残高の読み取りと表示
    • 利用履歴の読み取り
  • FE00: 大学生協プリペイドカード(大学 学生証)
    • 残高の読み取りと表示
    • 利用履歴の読み取り
  • 8008: 八達通
    • 残高の読み取りと表示

使い方 / How to use

Examples 配下にサンプルを掲載。

Swift Package Manager

Xcode 11: File > Swift Package > Add Package Dependency... > Enter package repository URL

https://github.com/treastrain/TRETJapanNFCReader

Carthage

Cartfile に以下を記述し、carthage update

github "treastrain/TRETJapanNFCReader"

CocoaPods

Podfile に以下を記述し、pod install

pod 'TRETJapanNFCReader'

全 NFC カード共通

  1. プロジェクトの TARGET から開発している iOS Application を選び、Signing & Capabilities で Near Field Communication Tag Reading を有効にする(Near Field Communication Tag Reader Session Formats が entitlements ファイルに含まれている必要がある)。
  2. Near Field Communication Tag Reader Session Formats の中に "NFC tag-specific data protocol (TAG)" が含まれていることを確認する。
  3. 開発している iOS Application の 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 には以下を含める必要がある。
  • Item 0: A0000002310100000000000000000000
  • Item 1: A0000002310200000000000000000000
  • Item 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! // カード残高
    }
}

L10N

  • 日本語 Japanese
  • English

関連するページ / Related

謝辞 / Acknowledgments

OKICA TRETJapanNFCReader/FeliCa/Okica/

OKICA の情報、および OKICA カード内に保存されているゆいレールの駅名情報、各バス会社名の情報は Twitter@resi098 様からご提供いただきました。

大学生協ICプリペイド TRETJapanNFCReader/FeliCa/UnivCoopICPrepaid

大学生協ICプリペイドの読み取り実装においては以下に掲載されている仕様を参考にしました。

八達通 TRETJapanNFCReader/FeliCa/Octopus

各電子マネー、電子マネーサービス等の名称は一般に各社の商標、登録商標です。 本ライブラリは電子マネーカード提供各社が公式に提供するものではありません。

The names of e-money and the services are generally trademarks and registered trademarks of each company. This library is not officially provided by e-money card providers.

tretjapannfcreader's People

Contributors

treastrain avatar qs-f avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.