LINEミニアプリのカスタムアクションボタン実装ガイド
LINEミニアプリのカスタムアクションボタンは、アプリ本文からシェアターゲットピッカーを開くボタンです。ユーザーが友だち、グループ、トークを選ぶと、liff.shareTargetPicker() が開発者の用意したシェアメッセージをユーザー名義で送ります。LINE指定のFlex Message形式、パーマネントリンク、成功・キャンセル・失敗の判定をまとめて実装する必要があります。
要点
- ヘッダーの標準アクションボタンは現在のページをそのままシェアし、本文のカスタムボタンはシェア内容を設計できます。
- カスタムアクションボタンは未認証・認証済みのどちらのLINEミニアプリでも利用できます。サービスメッセージの送信資格とは別です。
- 利用にはユーザーのログインと、LINE Developersコンソールでのシェアターゲットピッカー有効化が必要です。
- カスタムシェアにはFlex Messageの
bubbleを使い、carouselは使いません。 { status: "success" }だけを送信成功とし、結果オブジェクトなしのresolveはキャンセルとして扱います。
LINEミニアプリのカスタムアクションボタンとは
公式のカスタムアクションボタン実装ガイドでは、2種類のシェア操作が区別されています。ヘッダーの標準ボタンはLINEが表示し、開いているページを自動的にシェアします。動作やメッセージ内容は変更できません。本文に置くカスタムボタンは、アプリが構成したメッセージをターゲットピッカーへ渡します。
| 比較点 | カスタムアクションボタン | サービスメッセージ | Messaging API |
|---|---|---|---|
| 起点 | ユーザーがタップして宛先を選択 | ミニアプリ内の対象アクション後にサーバー送信 | Official Accountが返信または送信 |
| API | ミニアプリ内のliff.shareTargetPicker() | サーバー側のService Message API | サーバー側のMessaging API |
| 受信者に見える送信者 | シェアしたユーザー | 地域別のミニアプリ通知トーク | LINE公式アカウント |
| 認証条件 | 未認証・認証済みで利用可能 | 本番は認証済みミニアプリが必要 | Official Accountの条件に従う |
機能制限を確認したい場合は未認証・認証済みLINEミニアプリの比較、通知方式を選ぶ場合はサービスメッセージとMessaging APIの比較を参照してください。カスタムボタンは、どちらの送信権限も追加しません。
LINEミニアプリのカスタムアクションボタン実装手順
1. シェアターゲットピッカーを有効化する
LIFFを初期化し、ユーザーがログイン済みであることを確認します。さらにLINE Developersコンソールでシェアターゲットピッカーを有効にします。公式LIFF APIリファレンスでは、この2条件が必須です。
ボタンを有効にする前にliff.isApiAvailable("shareTargetPicker")も確認します。スマートフォンの外部ブラウザではSSOログインセッションが必要で、自動ログインだけではメールアドレスのログイン画面が出る場合があります。LIFFブラウザと実際の外部ブラウザ導線を別々にテストしてください。
2. LINE指定のFlex Messageを作る
カスタムシェアのコンテナは1つのbubbleです。carouselは利用できません。タイトル、サブタイトルまたは詳細、ボタン領域、ミニアプリのブランドを示すフッターを、公式仕様どおりに組み立てます。
ボタンは最大3個で、少なくとも1個はシェア内容の詳細ページを開く必要があります。フッターにはミニアプリのアイコンと名称を表示し、トップページへ戻るURIアクションを設定します。
3. 詳細ページにはパーマネントリンクを使う
ミニアプリ内の特定画面を開くボタンに、通常のWebエンドポイントURLをそのまま入れないでください。公式のパーマネントリンク作成ガイドは、次の式を示しています。
LIFF URL +(LINEミニアプリのページURL - エンドポイントURL)= パーマネントリンク
例として、LIFF URLがhttps://miniapp.line.me/123456-abcdefg、対象ページがhttps://example.com/orders/42?from=shareなら、リンクは次になります。
https://miniapp.line.me/123456-abcdefg/orders/42?from=share
パス、クエリ、ハッシュを利用できます。ログイン前後、期限切れ注文、削除済みコンテンツまでLINEアプリ内で確認します。ヘッダーの標準ボタンはパーマネントリンクを自動生成しますが、カスタムメッセージ内のボタンは自分で設定します。
4. ユーザー操作からAPIを呼び出す
共有カードの値は、信頼できないURLパラメータではなく、サーバーで権限確認したレコードから作ります。制御フローは次のように分けます。
async function shareItem(messages) {
if (!liff.isApiAvailable("shareTargetPicker")) {
return { outcome: "unavailable" };
}
try {
const result = await liff.shareTargetPicker(messages);
return result?.status === "success"
? { outcome: "shared" }
: { outcome: "cancelled" };
} catch (error) {
return { outcome: "failed", error };
}
}
messagesには、現行のLINEガイドに沿ったFlex Messageを渡します。
5. 成功・キャンセル・失敗を分ける
| 結果 | APIの動作 | UIでの扱い |
|---|---|---|
| 送信 | { status: "success" }でresolve | 送信操作の完了を表示する |
| キャンセル | 結果オブジェクトなしでresolve | エラーを出さず元画面へ戻す |
| ピッカー表示前の失敗 | LiffErrorでreject | 安全なエラーコードを記録し再試行を案内する |
LINEは送信先人数を収集・提供しません。成功結果から閲覧数、配信人数、コンバージョンを推定しないでください。
6. 端末で受け入れテストを行う
ログイン済み・未ログイン、LIFFブラウザ・スマートフォン外部ブラウザ、設定ON・OFF、単一・複数宛先、キャンセル、正常・期限切れのディープリンク、長い日本語を確認します。選べる宛先は友だち、グループ、トークで、OpenChatは対象外です。
UnifyPortが担当する範囲
UnifyPortはliff.shareTargetPicker()、LINEのターゲットピッカー、Flex Messageレイアウト、シェア先分析を提供しません。これらは公式LINEミニアプリとLIFFの機能です。
UnifyPortが扱うのは別の操作です。接続済みの通常LINEアカウントに顧客がメッセージを送ると、対応メッセージを標準化されたmessage.receivedイベントとして受信できます。Webhook endpointにsigning_secretが設定されている場合、X-Device-TimestampとX-Device-SignatureでHMAC-SHA256署名を検証できます。
シェアされたページから後日サポート会話が始まる場合、シェア操作、注文ID、会話を別レコードとして保持し、アプリ側で関連付けます。実装前にLINE認証ガイドとプロバイダ別メッセージ対応表を確認してください。
制限と判断基準
- 現在のページを共有するだけなら、パーマネントリンクを自動生成する標準ヘッダーボタンが適しています。
- カスタムボタンは、案内付きカードが必要な場合に使います。レイアウト、ログイン、リンク、端末テストの負担が増えます。
- 宛先の自動選択、無操作での送信、配信確認、宛先人数の取得はできません。
- サービスメッセージ、Messaging API、Official Account、問い合わせ受信の代替ではありません。
FAQ
未認証のLINEミニアプリでもカスタムアクションボタンを使えますか
はい。LINEの現行機能表では、未認証・認証済みの両方で利用できます。本番サービスメッセージは別の認証済み限定機能です。
標準アクションボタンとの違いは何ですか
標準ヘッダーボタンは開いているページを共有し、内容を変更できません。カスタムボタンはliff.shareTargetPicker()に仕様準拠の独自メッセージを渡します。
シェア先の人数を取得できますか
できません。LINEはプライバシー保護のため、ターゲットピッカーで何人に送ったかを取得・提供しないと説明しています。
Promiseが結果なしでresolveしたのはなぜですか
ユーザーが送信前にピッカーを閉じると、結果オブジェクトなしでresolveします。APIエラーではなくキャンセルとして扱います。
詳細ボタンにはどのURLを使いますか
トップページ以外にはパーマネントリンクを使います。パス、クエリ、ハッシュを含め、LINE内で対象画面を開けます。
次のステップ
まずLINE公式のカスタムアクションボタン実装ガイドに照らしてカードと端末テストを完了してください。通常LINEアカウントの顧客メッセージ受信が別途必要なら、UnifyPort LINE認証ガイドから確認できます。
参照元
2026年8月8日に確認したLINE公式資料: