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