本文へ移動
rdlabo.devdocs

ヘルパーの設計方針

ラベル印刷アプリで繰り返される接続処理を共通化したヘルパーです。このパッケージに含まれるプラグインを利用し、既存のネイティブAPIの契約を維持します。

責務の分担

アプリで繰り返される処理 ヘルパーが担う処理 アプリが担う処理
画面ごとのプラットフォームとモデルの接続確認 Capacitorのプラットフォームを取得し、対応ポートと保存済み・既定の接続を解決 接続方法の選択UI
探索中に次の探索要求が来る ネイティブ処理とリスナー削除が終わるまで直列化し、失敗後も継続 探索の開始タイミングと読み込み表示
保存したネットワークプリンターが切断されている 条件の合う以前のチャネルを確認し、利用できなければ再探索 ストレージのコールバックと再探索の許容判断
探索せずプリンターを手入力する 探索メタデータや代替探索を使わず、指定されたポート・アドレスを確認 正しいモデルとポートの指定、利用不可時の対応
探索イベントの重複や製品名の別名 結果を収集し、既存のモデルenumと照合 プリンターの選択または選択のキャンセル
リスナーを登録した画面が閉じる セッションが結果・印刷リスナー・終了状態を管理し、待機中の処理をスキップして遅れて到着した結果を破棄 画面ごとのセッション作成と終了時の破棄、画像生成後にUIを出す前のclosed確認

再探索できる候補と、固定の印刷先

保存済みプリンターの準備と明示的な接続確認は区別しています。以前のプリンターは再探索で代替できる候補ですが、明示的に指定したアドレスは印刷先です。接続確認に失敗しても、別のプリンターを無断で選択しません。

ネイティブ処理の完了まで直列化する

実際のアプリでは短い事前探索と利用者が開始する長めの探索の両方があるため、探索時間はネイティブのオプションとして明示指定します。固定のJavaScriptタイマーでSDKの完了を推測しません。複数ポートを探索する場合は各ヘルパー呼び出しを順にawaitします。自動探索スケジュールや接続方式の推測は行いません。

アプリが決めること

選択ダイアログ、ストレージの実装、非表示にする端末一覧、分析、画像生成、フォント、ラベルのレイアウト、利用者向けメッセージはアプリが管理します。ネイティブSDKの変更や自動印刷リトライは含みません。既存のネイティブエラーと利用可否の結果を別の分類に変換せず維持します。

画面終了とネイティブ処理を分ける

BrotherPrinterSessionは印刷画面の状態を管理します。ステートレスなヘルパーと同じネイティブ接続キューを共有するため、新しい画面を作っても、前の画面の未完了の探索と重なりません。破棄はネイティブ処理の中断を意味しません。実行中の探索は完了後にリスナーを削除し、開始済みの印刷は継続します。dispose()が待つのは印刷リスナーの削除で、探索や印刷の完了ではありません。印刷完了を待つ場合は、呼び出し元でprintImage()のPromiseをawaitします。アプリ側で探索キュー、リスナー一覧、キャンセル判定用の世代カウンターを用意する必要はありません。

ストレージはアプリから提供する

任意のセッションストレージがgetsetremoveコールバックを通じて接続キーとJSONへの変換を管理します。アプリは保存先を提供し、接続準備と選択した印刷先の保存のために別の永続化処理を実装する必要はありません。

使い方とコード例はJavaScriptプリンターヘルパーを参照してください。

テストで確認する範囲

テストはビルド済みパッケージを通じてNode標準のテストランナーで接続フローを検証します。実機プリンターとの互換性や、利用可否の確認結果からモデルを特定できることを保証するものではありません。