アプリが API 一発で「Shopify のファイルライブラリから選ぶ」画面を呼び出せるようになった。独自のファイル選択 UI を作る必要も、別画面に誘導する必要もなくなる。選択結果はファイル ID の配列で返ってくる。
pick:shopify/File という新しい Intent を呼ぶだけで、Shopify ネイティブのファイルピッカーが開けるようになった。独自のファイル選択 UI を実装するか、マーチャントを別フローに飛ばす必要があった。実装コストも UX の分断も発生していた。
API 一発で Shopify のファイルピッカーが開く。メディア種別での絞り込み・複数選択・事前選択にも対応。結果は ID 配列で返る。
shopify.intents.invoke() で意図を投げ、返ってくる activity の complete を待つだけで結果を受け取れる。
invoke でピッカーを開き、activity.complete を await して、response.code === 'ok' なら response.data.ids を受け取る、という3行が基本形。ファイルライブラリの中身を、必要なメディア種別だけに絞り込んで表示できる(オプション)。
複数選択を有効化できる。選ばれたファイルはまとめて ID の配列で返ってくる。
ピッカーを開いた時点で特定ファイルを選択済み状態にできる。編集・差し替えフローに便利。
選択完了時、response.data.ids に選ばれたファイル ID が配列で入って返る。
| 項目 | 従来(自前ピッカー) | Intents API(pick:shopify/File) |
|---|---|---|
| ファイル選択 UI | 自作 独自ピッカーを実装 | 純正 Shopify ネイティブを呼ぶだけ |
| マーチャント体験 | 別フローへ誘導しがちで分断 | 見慣れたファイルライブラリで完結 |
| 呼び出し | 独自の状態管理が必要 | invoke → complete を await |
| 絞り込み・複数選択・事前選択 | すべて自前実装 | オプションで指定可能 |
| 選択結果 | 自前で受け渡し設計 | response.data.ids に配列で返る |
App Home か UI Extension から shopify.intents.invoke('pick:shopify/File') を呼ぶ。
返ってきた activity の complete を待ち、マーチャントの選択完了を受け取る。
response.code === 'ok' を確認し、response.data.ids の配列を使う。
pick:shopify/Fileこの文字列を invoke に渡すのが起点。Shopify のファイルライブラリを対象にしたファイル選択の意図を表す。
App Home(iframe)と UI Extension の両方から、同一の呼び出し方で利用できる。コンテキストに合わせて使い分けられる。
invoke は activity を返し、その complete を await して選択完了を待つ非同期フロー。UI をブロックしない設計にしやすい。
response.code を判定結果を使う前に code === 'ok' を確認する。キャンセルや異常系の分岐をここで切る前提の API 形になっている。
response.data.ids で受け取れるのは選択ファイルの ID 配列。実際のファイル URL やメタデータが必要なら、その ID を使って Admin API 等で別途引く設計になる点に注意。
pick:shopify/File を invoke し、Shopify のファイルライブラリをそのまま選択 UI として使う。返った ID をアプリ側で保持。data.ids の配列をそのままバッチ処理に流す。pick:shopify/File Intent を invoke するだけで、Shopify 純正のファイルピッカーを呼べる新 API。