SONYのカードリーダー「RC-S300」を使って「NTAG213/215」を読み書きするためのアプリケーションの「Xcodeプロジェクト一式」です。
macOS 13以降はSONYの ドライバ インストール不要で利用できます。
すでにカードのリード・ライトができるアプリケーションのプロジェクトです。
独自のアプリを作りたい場合は、プロジェクト内のLNTAG215クラスを使えば容易に実現可能です。
SONYのRC-S300は、macOS上では「スマートカードリーダー」と認識されています。
このハードウェアには何も宣言せずにアクセスすることはできず、entitlements.plistを追加しなくてはいけません。
このプロジェクトにはすでに追加されていますし、ファイル参照の設定もされています。
下表の値を記述したplistを追加します。
| Key | Type | Value |
|---|---|---|
| com.apple.security.smartcard | Boolean | YES |
XcodeのBuild Settingにentitlements.plistを指定します。
下記の場所にentitlements.plistのパスを追記します。
デフォルトでは空っぽです。
Build Setting > Signing > Setting > Code Signing Entitlements
追加するのはentitlements.plistのパスです。
このプロジェクトの場合は、下記の通りになります。
NFC/entitlements.plist
このクラスにはLNTAG213/215タグをリード・ライトするための機能が全て備わっています。
このクラスをXcodeプロジェクトに取り込むことで、独自のアプリの開発も可能です。
このクラス自体は完全に独立したクラスにはなっておらず、一部
- LLocalizer.swift
- extensions for NFC.swift
の機能も利用しています。
必要に応じて、これらのファイルもXcodeに取り込むか、LNTAG215.swiftの中に追記してください。
init()メソッドが用意されています。
var card = LNTAG215()
データはデリゲートメソッドによって渡されます。
例えば、Xcodeプロジェクトを作成したときに作られるViewControllerにLNTAG215Delegateを適用してください。
extension ViewController: LNTAG215Delegate {
}
このデリゲートを適用すると、下記のメソッドを追加するよう、Xcodeが通知しますので、そのまま作成してください。
func didFinishSearchingCardReaders(info: [SmartCardReaderInfo])
func didFinishReadingUID(UID: String?)
func didFinishReadingCardData(cardData: NTAGCardData?)
func didFinishWritingCardData(success: Bool)
それぞれの処理が終わったとき、上記メソッドが呼ばれます。
public func searchReaders()
カードリーダーを探します。
結果は下記デリゲートメソッドで取得できます。
func didFinishSearchingCardReaders(info: [SmartCardReaderInfo])
カードリーダーが複数接続されている場合を考慮し、infoは配列にしてあります。
構造体SmartCardReaderInfoはカードリーダーの情報が入っています。
読み出して適宜処理をしてください。
public func readUIDAsync()
リードを開始します。
リード結果は下記デリゲートメソッドで取得できます。
func didFinishReadingUID(UID: String?)
