メソッド¶
init¶
初期化メソッド
init!(asReaderAsk: Any!)
パラメータ¶
パラメータ名 |
型 |
説明 |
asReaderAsk |
Any |
Anyオブジェクト |
サンプルコード¶
let ask = AsReaderAsk.shared()
let sdk = JvmaSDK.init(asReaderAsk: ask)
setTimeout¶
SDK のタイムアウト時間を設定します。
設定された時間内に AsReader からの応答がない場合、SDK 側でタイムアウトと判断し、エラーコード NAK0x93 が発生します。
(詳細は、JvmaNAKData クラス を参照)
SDK 側のタイムアウト設定は、万が一リーダーからの応答が得られない状況に備え、
アプリ側で通信処理を終了させる フェイルセーフ機能 です。
たとえば、接続の不具合や予期せぬ障害でリーダーが応答しない場合でも、
SDK 側のタイムアウトが働くことでアプリが無限に待ち続けるのを防ぎます。
なお、リーダー側の応答に必要な時間より SDK 側のタイムアウト時間が短いと、
通信が正常に完了する前に処理が中断される可能性があります。
そのため、SDK 側のタイムアウト時間はリーダー側のタイムアウト時間より十分に長めに設定してください。
func setTimeout(_ second: Float)
パラメータ¶
パラメータ名 |
型 |
説明 |
second |
Float |
SDKのタイムアウト時間。 |
サンプルコード¶
sdk.setTimeout(6.0)
setSDKLogOn¶
SDKのログ機能のスイッチを設定します。
ログファイルは最大 5つ 作成されます。
各ファイルの最大サイズは 10MB です。
ログファイルの保存場所はアプリの サンドボックス領域 で、以下のパスになります:
/Documents/JvmaSDKLog/SDK.log
ログファイルの取得方法については、Logファイルを取得 を参照してください。
func setSDKLogOn(_ on: Bool)
パラメータ¶
パラメータ名 |
型 |
説明 |
on |
Bool |
SDKのLog機能のON/OFF |
サンプルコード¶
sdk.setSDKLogOn(true)
removeAllSdkLog¶
全てのSDK Logを削除します。
func removeAllSdkLog()
サンプルコード¶
sdk.removeAllSdkLog()
getVersion¶
SDKのバージョンを取得します。
class func getVersion() -> String!
戻り値¶
型 |
説明 |
String |
SDKのバージョン |
サンプルコード¶
// versionString SDKバージョン
let versionString: String = JvmaSDK.getVersion()
startCommunication¶
自販機との交信を開始するメソッドです。
使用条件¶
AsReader の接続が成功し、onReceivedConnectedState デリゲートがコールバックされて、
コールバックパラメータ isConnected が true の場合に本メソッドを呼び出すことができます。
func startCommunication(
withSettingCode settingCode: String!,
terminalPassword: String!,
resultDataBlock: ResultDataBlock!
)
パラメータ¶
パラメータ名 |
型 |
説明 |
settingCode |
String |
ターミナル設定コード(10 桁) |
terminalPassword |
String |
ターミナルパスワード(10 桁) |
resultDataBlock |
Block |
実行結果を返します。 |
サンプルコード¶
sdk.startCommunication(
withSettingCode: password,
terminalPassword: terminalPassword,
resultDataBlock: { resultDataBlock in
// 処理
}
)
sendCommand¶
自販機にコマンドを送信するメソッドです。
使用条件¶
AsReaderの接続が成功し、onReceivedConnectedStateデリゲートがコールバックされ、
コールバックパラメータ isConnected が true の場合に本メソッドを使用できます。
func sendCommand(
withSettingCode settingCode: String!,
terminalPassword: String!,
commandCode: CommandCode,
dataIds: [JvmaDataId]!,
inputTimeRecord: Bool,
resultDataBlock: ResultDataBlock!
)
パラメータ¶
パラメータ名 |
型 |
説明 |
settingCode |
String |
ターミナル設定コード(10桁) |
terminalPassword |
String |
ターミナルパスワード(10桁) |
commandCode |
CommandCode |
送信するコマンド(列挙型) |
dataIds |
Array |
送信対象のデータ ID(複数指定可能) |
inputTimeRecord |
Bool |
タイムレコード(ID: |
resultDataBlock |
Block |
実行結果を受け取るクロージャ |
サンプルコード¶
var array: [JvmaDataId]? = []
guard let dataID1 = JvmaDataId.init(dataIdCode: .InputCashQuantity) else { return }
array?.append(dataID1)
guard let dataID2 = JvmaDataId.init(dataIdCode: .QuitCashQuantity) else { return }
array?.append(dataID2)
guard let dataID3 = JvmaDataId.init(dataIdCode: .VmRunTime) else { return }
array?.append(dataID3)
let commandCode: CommandCode = .VmDataCollect
sdk.sendCommand(
withSettingCode: password,
terminalPassword: terminalPassword,
commandCode: commandCode,
dataIds: array,
inputTimeRecord: true,
resultDataBlock: { resultDataBlock in
// ResultDataBlock の扱いは「3.2.1.1 ResultDataBlock」を参照
}
)
getVmData¶
自販機データを収集します。
使用条件¶
AsReaderの接続が成功し、onReceivedConnectedStateデリゲートがコールバックされ、
コールバックパラメータ isConnected が true の場合に本メソッドを使用できます。
func getVmData(withSettingCode settingCode: String!,
terminalPassword: String!,
dataIds: [JvmaDataId]!,
inputTimeRecord: Bool,
resultDataBlock: ResultDataBlock!)
パラメータ名 |
型 |
説明 |
settingCode |
String |
ターミナル設定コード(10桁) |
terminalPassword |
String |
ターミナルパスワード(10桁) |
dataIds |
Array |
収集対象データのID。複数指定可能。 |
inputTimeRecord |
Bool |
タイムレコード(ID: |
resultDataBlock |
Block |
実行結果を返すクロージャ。 |
サンプルコード¶
var array: [JvmaDataId]? = []
guard let dataID1 = JvmaDataId(dataIdCode: JvmaDataIdCode.InputCashQuantity) else { return }
array?.append(dataID1)
guard let dataID2 = JvmaDataId(dataIdCode: JvmaDataIdCode.QuitCashQuantity) else { return }
array?.append(dataID2)
guard let dataID3 = JvmaDataId(dataIdCode: JvmaDataIdCode.VmRunTime) else { return }
array?.append(dataID3)
sdk.getVmData(
withSettingCode: password,
terminalPassword: terminalPassword,
dataIds: array,
inputTimeRecord: inputTimeRecord
) { resultDataBlock in
// 処理
}
getVmDataClear¶
データ収集クリアコマンドを実行するメソッドです。
自販機のデータが収集され、クリアされます。
📌 getVmDataClear の仕様と利用時のポイント¶
getVmDataClear は、自販機からデータを取得した後に、自販機内のデータをクリアする処理を一度に行えるメソッドです。
仕様上、iOSデバイスでの最終データ受信を待たずに、自販機側のデータクリア処理が実行されるため、
データの取りこぼしが発生しないように、以下の手順でのご利用を推奨します。
✅ 安全な利用手順
getVmDataで必要なデータを受信する以下のいずれかの方法でクリア処理を行う
•allClearを使用してクリアする
•getVmDataClearを使用してデータをクリアする(取得データは最小限にする)
使用条件¶
AsReaderが接続された後、onReceivedConnectedStateデリゲートがコールバックされ、
そのパラメータ isConnected が true の場合に呼び出すことができます。
func getVmDataClear(
withSettingCode settingCode: String!,
terminalPassword: String!,
dataIds: [JvmaDataId]!,
inputTimeRecord: Bool,
resultDataBlock: ResultDataBlock!,
clearResultDataBlock: ResultDataBlock!
)
パラメータ¶
パラメータ名 |
型 |
説明 |
settingCode |
String |
ターミナル設定コード(10桁) |
terminalPassword |
String |
ターミナルパスワード(10桁) |
dataIds |
Array |
収集対象のデータIDの配列( |
inputTimeRecord |
Bool |
タイムレコード(TimeRecord “0BA0”)の追加要否.
|
resultDataBlock |
Block |
データ収集結果を返すクロージャ |
clearResultDataBlock |
Block |
データクリア結果を返すクロージャ |
データクリア処理の実行結果¶
clearResultDataBlockで返却されたJvmaResultが以下を満たす場合、クリアは正常完了です。nak,errorがnilackがnilではなく、ack.status == VmCommandConfirm
実行結果は
jvmaTextsの配列として返却されます。
クリアのステータスの判定¶
jvmaTextsに含まれるJvmaRecordのjvmaDataIdが0AA1のレコードを確認してください。該当レコードの
ItemからJvmaItem.hexStrを取得し、値を判定します:01: データクリア中02: データクリア済み03: データ未クリア
サンプルコード¶
var array: [JvmaDataId]? = []
guard let dataID1 = JvmaDataId(dataIdCode: JvmaDataIdCode.InputCashQuantity) else { return }
array?.append(dataID1)
guard let dataID2 = JvmaDataId(dataIdCode: JvmaDataIdCode.QuitCashQuantity) else { return }
array?.append(dataID2)
guard let dataID3 = JvmaDataId(dataIdCode: JvmaDataIdCode.VmRunTime) else { return }
array?.append(dataID3)
sdk?.getVmDataClear(
withSettingCode: password,
terminalPassword: terminalPassword,
dataIds: array,
inputTimeRecord: true,
resultDataBlock: { resultData in
// データ収集結果の処理
},
clearResultDataBlock: { clearResultData in
// データクリア結果の処理
}
)
getVmDataClear¶
自販機のデータを収集し、クリアするメソッドです。
本メソッドは getVmDataClear メソッドと以下の点で異なります:
retryTimesパラメータで、クリア失敗時のリトライ回数を指定可能です。
※ クリア失敗時、自販機から返却されるクリア結果は03(データ未クリア)です。resultDataBlockにおいて、処理完了後に最終結果を一括で返します。
⚠️ 重要
本メソッドの詳細な仕様や利用時のポイントは、こちら をご参照ください。
使用条件¶
AsReader 接続が成功した後、onReceivedConnectedState デリゲートがコールバックされ、
その引数 isConnected が true の場合に、本メソッドを使用することができます。
```swift
func getVmDataClear(
withRetryTimes retryTimes: uint,
settingCode: String!,
terminalPassword: String!,
dataIds: [JvmaDataId]!,
inputTimeRecord: Bool,
resultDataBlock: ResultDataBlock!
)
パラメータ名 |
型 |
説明 |
retryTimes |
uint |
データクリア失敗時のリトライ回数 |
settingCode |
String |
ターミナル設定コード(10桁) |
terminalPassword |
String |
ターミナルパスワード(10桁) |
dataIds |
Array |
収集対象のデータID配列( |
inputTimeRecord |
Bool |
タイムレコード(ID: |
resultDataBlock |
Block |
データ収集結果を返すクロージャ |
実行結果の JvmaResult について:¶
resultDataBlockで返却されたJvmaResultが以下をすべて満たす場合、データクリアは正常完了です。nakおよびerrorがnilackがnilではなく、ack.status == VmCommandConfirm実行結果は
jvmaTextsの配列として返却されます。
コマンドが正常に実行されなかった場合の条件:
nakプロパティがnilでない場合は、コマンドは 正常に実行されなかった ことを意味します。nak.statusの値により、具体的な失敗内容を特定できます。特に
VmDataClearFailedの場合、データクリアに失敗 したことを示します。
サンプルコード¶
var array: [JvmaDataId]? = []
guard let dataID1 = JvmaDataId(dataIdCode: JvmaDataIdCode.InputCashQuantity) else { return }
array?.append(dataID1)
guard let dataID2 = JvmaDataId(dataIdCode: JvmaDataIdCode.QuitCashQuantity) else { return }
array?.append(dataID2)
guard let dataID3 = JvmaDataId(dataIdCode: JvmaDataIdCode.VmRunTime) else { return }
array?.append(dataID3)
sdk?.getVmDataClear(
withRetryTimes: 3,
settingCode: password,
terminalPassword: terminalPassword,
dataIds: array,
inputTimeRecord: true,
resultDataBlock: { result in
// ResultDataBlock については「ResultDataBlock」を参照してください
}
)
collectSettingData¶
オフライン自販機の設定データを収集するメソッドです。
オンラインなど、オフライン以外の自販機に関しては collectSettingData を参照してください。
使用条件¶
AsReaderへの接続が成功した後、
onReceivedConnectedStateデリゲートがコールバックされ、
コールバックパラメータ isConnected が true の場合に本メソッドを呼び出すことができます。
func collectSettingData(withSettingCode settingCode: String!, terminalPassword: String!, inputTimeRecord: Bool, resultDataBlock: ResultDataBlock!)
パラメータ¶
パラメータ名 |
型 |
説明 |
settingCode |
String |
ターミナル設定コード(10桁) |
terminalPassword |
String |
ターミナルパスワード(10桁) |
inputTimeRecord |
Bool |
タイムレコード(ID: |
resultDataBlock |
Block |
データ収集の結果を返すクロージャ。 |
サンプルコード¶
sdk.collectSettingData(
withSettingCode: password,
terminalPassword: terminalPassword,
inputTimeRecord: true,
resultDataBlock: { (resultDataBlock) in
// 収集結果はここで受け取り処理します。詳細は「ResultDataBlock」を参照してください。
}
)
collectSettingData¶
指定した収集コマンドに基づいて、設定データを収集します。
オフライン以外の自販機から設定データを収集する場合、本メソッドを使用してください。
本メソッドでは収集コマンドを任意に指定できるため、将来的に自販機の種類が増えても柔軟に対応できます。
オフライン自販機からのデータ収集については、collectSettingData を使用し、収集コマンドを指定せずに収集します。
使用条件¶
AsReaderへの接続が成功した後、
onReceivedConnectedStateデリゲートがコールバックされ、
コールバックパラメータ isConnected が true の場合に本メソッドを呼び出すことができます。
func collectSettingData(
withSettingCode settingCode: String!,
terminalPassword: String!,
commandCode: CommandCode,
inputTimeRecord: Bool,
resultDataBlock: ResultDataBlock!
)
パラメータ名 |
型 |
説明 |
settingCode |
String |
ターミナル設定コード(10桁) |
terminalPassword |
String |
ターミナルパスワード(10桁) |
commandCode |
CommandCode |
収集するコマンド(列挙型 |
inputTimeRecord |
Bool |
タイムレコード( |
resultDataBlock |
Block |
データ収集の結果を返すクロージャ。 |
サンプルコード¶
let commandCode: CommandCode = CommandCode.OnLineSettingDataCollect
sdk.collectSettingData(
withSettingCode: password,
terminalPassword: terminalPassword,
commandCode: commandCode,
inputTimeRecord: true,
resultDataBlock: { (resultDataBlock) in
// ここで取得結果を処理します。詳細は「ResultDataBlock」を参照してください。
}
)
sendSettingData¶
オフライン自販機に対して設定データを送信するメソッドです。
オフライン以外の自販機には、sendSettingData を使用してください。
使用条件¶
AsReaderへの接続が成功した後、
onReceivedConnectedStateデリゲートがコールバックされ、
コールバックパラメータ isConnected が true の場合に本メソッドを呼び出すことができます。
func sendSettingData(
withSettingCode settingCode: String!,
terminalPassword: String!,
settingDatas: [JvmaRecord]!,
inputTimeRecord: Bool,
resultDataBlock: ResultDataBlock!
)
パラメータ¶
パラメータ名 |
型 |
説明 |
settingCode |
String |
ターミナル設定コード(10桁) |
terminalPassword |
String |
ターミナルパスワード(10桁) |
settingDatas |
Array |
設定するデータのID一覧。複数指定可能で、 |
inputTimeRecord |
Bool |
タイムレコード( |
resultDataBlock |
Block |
設定結果を受け取るクロージャ |
サンプルコード¶
var jvmaRecordArray: [JvmaRecord]? = []
var items: [JvmaItem]? = []
guard let item1 = JvmaItem.init(hexStr: "1234567890") else { return }
items?.append(item1)
guard let item2 = JvmaItem.init(hexStr: "1234567890") else { return }
items?.append(item2)
guard let record = JvmaRecord.init(
jvmaDataIdCode: JvmaDataIdCode.VmIdentifyCode,
items: items
) else { return }
jvmaRecordArray?.append(record)
sdk.sendSettingData(
withSettingCode: password,
terminalPassword: terminalPassword,
settingDatas: jvmaRecordArray,
inputTimeRecord: true,
resultDataBlock: { resultDataBlock in
// 結果は ResultDataBlock を参照して処理してください。
}
)
sendSettingData¶
データ設定コマンドを指定して、自販機の設定データを送信します。
オフライン以外の場合、本メソッドを使用する必要があります。
設定コマンドを自由に指定できるため、今後自販機の種類が増えた場合でも汎用的に対応可能です。
オフライン自販機の設定には、sendSettingData を参照してください(設定コマンドの指定なしで設定可能です)。
使用条件¶
AsReaderへの接続が成功した後、
onReceivedConnectedStateデリゲートがコールバックされ、
コールバックパラメータ isConnected が true の場合に本メソッドを呼び出すことができます。
func sendSettingData(
withSettingCode settingCode: String!,
terminalPassword: String!,
settingDatas: [JvmaRecord]!,
commandCode: CommandCode,
inputTimeRecord: Bool,
resultDataBlock: ResultDataBlock!
)
パラメータ¶
パラメータ名 |
型 |
説明 |
settingCode |
String |
ターミナル設定コード(10桁) |
terminalPassword |
String |
ターミナルパスワード(10桁) |
settingDatas |
Array |
設定するデータのID一覧。複数指定可能で、 |
commandCode |
CommandCode |
設定に使用するコマンド |
inputTimeRecord |
Bool |
タイムレコード( |
resultDataBlock |
Block |
設定結果を返すクロージャ |
サンプルコード¶
var jvmaRecordArray: [JvmaRecord]? = []
var items: [JvmaItem]? = []
guard let item1 = JvmaItem.init(hexStr: "1234567890") else { return }
items?.append(item1)
guard let item2 = JvmaItem.init(hexStr: "1234567890") else { return }
items?.append(item2)
guard let record = JvmaRecord.init(
jvmaDataIdCode: JvmaDataIdCode.VmIdentifyCode,
items: items
) else { return }
jvmaRecordArray?.append(record)
let commandCode: CommandCode = CommandCode.OnLineSettingDataSet
sdk.sendSettingData(
withSettingCode: password,
terminalPassword: terminalPassword,
settingDatas: jvmaRecordArray,
commandCode: commandCode,
inputTimeRecord: true,
resultDataBlock: { (resultDataBlock) in
// 結果は ResultDataBlock を参照して処理してください。
}
)
allClear¶
自販機全データクリア処理を行います。
使用条件¶
AsReaderへの接続が成功した後、
onReceivedConnectedStateデリゲートがコールバックされ、
コールバックパラメータ isConnected が true の場合に本メソッドを呼び出すことができます。
func allClear(
withSettingCode settingCode: String!,
terminalPassword: String!,
inputTimeRecord: Bool,
clearResultDataBlock: ResultDataBlock!
)
パラメータ¶
パラメータ名 |
型 |
説明 |
settingCode |
String |
ターミナル設定コード(10桁) |
terminalPassword |
String |
ターミナルパスワード(10桁) |
inputTimeRecord |
Bool |
タイムRecordデータの追加要否(TimeRecord |
clearResultDataBlock |
Block |
データクリア結果を返すクロージャ |
データクリア処理の実行結果¶
clearResultDataBlock:
返却されたJvmaResultオブジェクトにおいて以下の条件をすべて満たす場合、クリア処理は正常に完了したと判断されます。nak,errorプロパティはnilackプロパティはnilではなく、ack.status == VmCommandConfirm
実行結果は
jvmaTextsの配列として返却されます。
データクリアのステータスについて¶
jvmaTexts配列にjvmaRecordsが含まれます。各
JvmaRecordオブジェクトからjvmaDataIdを取得して解析を行います。本メソッドでは、データID
0AA1(クリアステータス)を受信します。該当レコードの
ItemからJvmaItem.hexStrを取得し、以下の結果に従って判定します:01: データクリア中02: データクリア済み03: データ未クリア
サンプルコード¶
sdk.allClear(
withSettingCode: settingCode,
terminalPassword: terminalPassword,
inputTimeRecord: true,
clearResultDataBlock: { (resultDataBlock) in
// 処理結果は ResultDataBlock を参照してください。
}
)
sendJvmaDatas¶
自販機へデータを送信します。
使用条件¶
AsReaderへの接続が成功した後、
onReceivedConnectedStateデリゲートがコールバックされ、
コールバックパラメータ isConnected が true の場合に本メソッドを呼び出すことができます。
func sendJvmaDatas(withSettingCode settingCode: String!, terminalPassword: String!, jvmaDatas: [JvmaRecord]!, resultDataBlock: ResultDataBlock!)
パラメータ¶
パラメータ名 |
型 |
説明 |
settingCode |
String |
ターミナル設定コード(長さは10桁) |
terminalPassword |
String |
ターミナルパスワード(長さは10桁) |
jvmaDatas |
Array |
送信するデータを格納する配列 |
resultDataBlock |
Block |
実行結果を返すクロージャ |
サンプルコード¶
var jvmaRecordArray: [JvmaRecord]? = []
var items: [JvmaItem]? = []
guard let item1 = JvmaItem.init(hexStr: "1234567890") else { return }
items?.append(item1)
guard let item2 = JvmaItem.init(hexStr: "1234567890") else { return }
items?.append(item2)
guard let record = JvmaRecord.init(
jvmaDataIdCode: JvmaDataIdCode.VmIdentifyCode,
items: items
) else { return }
jvmaRecordArray?.append(record)
sdk.sendJvmaDatas(
withSettingCode: settingCode,
terminalPassword: terminalPassword,
jvmaDatas: jvmaRecordArray,
resultDataBlock: { (resultDataBlock) in
// ResultDataBlock の仕様を参照してください
}
)
getJvmaModuleVersionResultVersionBlock¶
AsReaderのFWバージョンを取得します。
使用条件¶
AsReaderへの接続が成功した後、
onReceivedConnectedStateデリゲートがコールバックされ、
コールバックパラメータ isConnected が true の場合に本メソッドを呼び出すことができます。
func getJvmaModuleVersionResultVersionBlock(_ resultVersionBlock: ResultVersionBlock!)
パラメータ¶
パラメータ名 |
型 |
説明 |
resultVersionBlock |
Block |
モジュールバージョン取得時に呼ばれるクロージャ |
サンプルコード¶
sdk.getJvmaModuleVersionResultVersionBlock { (resultVersionBlock) in
// 取得したモジュールバージョンをここで処理してください
}