← 全記事
ガイド

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-TimestampX-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公式資料: