Skip to Content
ハードウェア基本 APIリクエストをキャンセル

リクエストをキャンセル

概要

cancel(connectId) はその接続に関連する待機中および実行中の SDK リクエストをキャンセルし、保留中の SDK UI を閉じます。connectId を省略すると、すべての保留中リクエストをキャンセルします。ユーザーが PIN/パスフレーズ入力をキャンセルした場合、フローを離れた場合、アプリケーションのタイムアウト時に使用します。

メソッド

HardwareSDK.cancel(connectId); // Cancel all pending requests: HardwareSDK.cancel();

パラメーター

パラメーター型必須説明
connectIdstringいいえ対象の接続。省略すると、すべての保留中リクエストをキャンセルします。

戻り値

cancel() の戻り値は void です。元のメソッドの Promise を待って結果を確認します。通常、公開 SDK はキャンセルされたリクエストを success: false で解決します。キューのキャンセルでは HardwareErrorCode.CallQueueActionCancelled (822) を使用します。キャンセルより先にデバイス側の拒否やエラーが発生すると、別のコードが返される場合があります。エラーメッセージの文字列を照合したり、すべてのキャンセルが同じコードだと仮定したりしないでください。

例

基本的なキャンセル

import type { EVMSignTransactionParams } from '@onekeyfe/hd-core'; import { HardwareErrorCode } from '@onekeyfe/hd-shared'; // Use a fully prepared transaction from your application's transaction builder. declare const params: EVMSignTransactionParams; const signPromise = HardwareSDK.evmSignTransaction(connectId, deviceId, params); // Invoke from the user's Cancel action. HardwareSDK.cancel(connectId); const result = await signPromise; if (!result.success) { if (result.payload.code === HardwareErrorCode.CallQueueActionCancelled) { // Close the cancelled operation's UI. } else { throw new Error(result.payload.error); } }

タイムアウトによるキャンセル

このタイマーは選択した接続の保留中リクエストをすべてキャンセルするため、デバイスごとに操作を直列化してください。

import type { EVMSignTransactionParams } from '@onekeyfe/hd-core'; async function signWithTimeout( connectId: string, deviceId: string, params: EVMSignTransactionParams, timeoutMs = 60_000, ) { const timer = setTimeout(() => HardwareSDK.cancel(connectId), timeoutMs); try { return await HardwareSDK.evmSignTransaction(connectId, deviceId, params); } finally { clearTimeout(timer); } }

キャンセルとトランスポートの終了

キャンセルは操作を中断し、デバイス/リンクのクリーンアップを行う場合があります。接続が引き続き使えることや、次の呼び出しをすぐ開始できることは保証されません。元の結果を待ち、接続が失われた場合はデバイスを再検出して、次のユーザー操作の前に getDeviceState で状態を更新してください。署名やファームウェア更新を自動で再実行しないでください。

HardwareSDK.dispose() は SDK の終了時やトランスポートの切り替え時に使用し、その後 init() を実行してから再利用してください。物理的な切断は DEVICE.DISCONNECT で通知され、保留中の公開メソッドの呼び出しは失敗結果を返します。

参照: 切断と再接続 および エラーコード.

最終更新日