新ターゲット pos.app.ready.data は POS セッションの間ずっと動き続け、画面を一切描画せずに POS のイベント監視・データ保存・非視覚系 API の呼び出しができる。「レジ画面に何かを出す」以外の拡張がついに公式サポートされた。
タイルやモーダルなど、スタッフが目にする UI サーフェスに描画してこそ動く。表示されていない間はロジックも走らせられない。
pos.app.ready.data は POS セッション全体で常駐。UI 無しで POS イベントを監視し、バックグラウンドロジックを実行できる。
記事では background target の用途として次の 3 つが明示されている。
取引完了や現金管理セッションの開始・完了など、POS 上の出来事をリアルタイムに購読する。
監視したイベントをもとにしたデータストレージ用途。UI 操作を介さずに記録を残せる。
UI を描かない background API を呼び出せる。対応 API の詳細は公式の app background target ドキュメント参照。
やることは shopify.addEventListener() で POS イベントを購読するだけ。Web 標準の addEventListener と同じ感覚で書ける。
| イベント名 | 発火タイミング | 使いどころの例 |
|---|---|---|
| transactioncomplete | 取引(決済)が完了したとき | 売上発生をトリガにした後続処理・記録 |
| cashtrackingsessionstart | 現金管理(キャッシュトラッキング)セッションが開始したとき | レジ開け(開局)の検知・記録 |
| cashtrackingsessioncomplete | 現金管理セッションが完了したとき | レジ締め(閉局)の検知・記録 |
※ 記事に列挙されているのは上記 3 イベント(「Supported events include」表記のため、網羅リストかは記載なし)。最新の一覧と best practices は公式の app background target ドキュメントを参照。
| 項目 | UI ターゲット(従来) | pos.app.ready.data(新) |
|---|---|---|
| UI 描画 | あり タイル・モーダル等に描画 | なし 一切のサーフェスを描画しない |
| 実行期間 | UI が表示されている間 | POS セッション全体 で常駐 |
| 起動のきっかけ | スタッフの操作(タイルタップ等) | セッション開始で自動的に稼働 |
| 主な役割 | 情報表示・スタッフとの対話 | イベント監視・データ保存・非視覚系 API 呼び出し |
拡張の target にこれを指定すると background 実行枠になる。「.data」サフィックスが UI 非描画の目印。
スタッフの操作で起動する UI 拡張と違い、セッションの間ずっと生きている。常駐前提でリスナー登録や状態の持ち方を設計する。
Web 標準風のイベントリスナー API。イベント名の文字列('transactioncomplete' 等)を購読し、ハンドラで event を受ける。
transactioncomplete / cashtrackingsessionstart / cashtrackingsessioncomplete。「取引」と「現金管理」というレジ運用のコアイベントから始まっている。
event オブジェクトの中身、呼び出せる background API の一覧、対応する POS / API バージョン、UI 拡張との併用方法は記事に記載なし。実装前に公式の app background target ドキュメントと best practices を必ず確認すること。