🌴

LIFF URLを完全に理解する

に公開

LIFFにまつわるURLの種類

「白って200色あんねん」じゃないですが、実は、LIFFを開くためのURLには大きく分けて4種類あります。

  1. LIFF v2のUniversal Link:https://liff.line.me/{liff_id}
  2. LIFF v1のUniversal Link:https://line.me/R/app/{liff_id}
  3. LINEミニアプリのUniversal Link:https://miniapp.line.me/{liff_id}
  4. カスタムURLスキーム:line://app/{liff_id}

2025.6.4現在、上記すべての形式が利用可能です。

すでにアプリSDKのサポートが終了されて久しいLIFF v1ですが、Universal Linkは現在も利用可能です(使えますが、公式ドキュメントから説明は消えています)。

「え?LIFF v1のURL形式なんてあったの?」と思った人もわりと多くいるのではないでしょうか。

種類ごとに挙動が異なるため、LIFFを完璧に活用するために、ひとつずつ完全に理解していきましょう。

LINEミニアプリではないLIFFを作成した場合のデフォルトがこの形式です。

https://liff.line.me/{liff_id}

特徴としては以下の2点です。

  • PCを含む外部ブラウザでも開くことができる
  • LINEアプリが直接起動しないケースがある

外部ブラウザで開くことができるという無二の利点をもつ反面、たとえスマートフォンで開いていてもLINEで開いてくれないケースがある点がデメリットです。

これは主にiPhoneでのUniversal Linkの挙動によるものです。

Universal Linkでは最後に利用した開き方(ブラウザ or 対象アプリ)が記憶されるので、規定の起動先がブラウザになっているユーザーが開くとLINEが起動しません。

ちなみにUniversal Linkというのは、ネイティブアプリ申請時に独自ドメインを指定しておくと、iOSやAndroidでそのドメインのリンクを開いたときにブラウザではなくネイティブアプリが起動するようになる仕組みです。
(検索結果に出てきたXとかYouTubeなどのリンクをタップしたときに、ブラウザではなくアプリが起動するアレと同じです)

image

さて、メモ帳などにURLを貼り付けて、リンクを長押しすると上の画像のようなメニューが出てきます。
ここで1度「Safariで開く」を選択すると、次回以降はSafariで開くようになってしまいます。

この挙動についてはApple Developerの公式ドキュメントに記載があります。

https://developer.apple.com/documentation/technotes/tn3155-debugging-universal-links#Test-universal-links-behavior

ユニバーサルリンクが正しく設定されていれば、アプリで開くオプションとSafariで開くオプションの両方が表示されます。ここで選択したオプションが、今後このドメインからユニバーサルリンクのリンク先に移動する際のデフォルトのデバイス動作となります。このデフォルトの選択を変更するには、同じ手順を繰り返して別のオプションを選択します。

LINE上でLIFFが開かない問題の回避手段

ユーザーになんらかの方法で案内して「リンクをメモ帳に貼り付けてもらい、長押しメニューから『LINEで開く』を選択してもらう」ことで、デフォルトの挙動を変更させる……。

理論的には可能ですが、現実的には無理だと思ったほうがいいでしょう。

他の回避手段として、以下があります。

  • LINEトーク画面上に存在するLIFF URLのみタップさせる
  • LIFF v1のUniversal Linkを利用する
  • LINEミニアプリ化する
  • カスタムURLスキームを利用する

1つ目は簡単です。すでに開いているLINE画面内でリンクを踏めば、LIFFはLINE上で立ち上がります

QRを読み込ませる必要がある、メールでURLを案内するなどの制約がない場合、公式ラインのトーク画面上でリッチメニューもしくはメッセージにLIFFのリンクを配置するのが最も簡単で確実な方法です。
この場合、確実にLINE上のLIFFブラウザが起動します。

LINE外へのリンク配置をする場合は、残りのいずれかの方法が必要なため、続くセクションで説明していきます。

LIFF v1のUniversal Linkは、その名の通り旧来のLIFF v1で利用されていた形式です。
すでにSDKのサポートは終了しておりv1のLIFFアプリは正しく起動しませんが、v1形式のUniversal Linkについては現在も利用可能です。

https://line.me/R/app/{liff_id}

特徴としては以下の2点です。

  • 外部ブラウザでは開くことができない(クッションページに飛ばされる)
  • クッションページから確実にLINEアプリで起動させることができる

まず、Universal Linkのデフォルトが「LINEで開く」の場合は、何の問題もなくLINEが直接開きます。

image

さらに、スマートフォンで開いた場合、Universal Linkの規定動作が「Safariで開く」であっても、上記のようなクッションページが表示されます(PCだとこのページになります)。

このクッションページは、後述のカスタムURLスキームを利用してLINEアプリを起動させるリンクが配置されているため、確実にLINEアプリでLIFFを起動させることができます。
一方で、外部ブラウザ上でLIFFアプリの中身に到達することはできません。

2次リダイレクトを含むページに遷移させるには以下のようにliff.stateクエリパラメータにエンコードされたパスを含めます。

https://line.me/R/app/{liff_id}?liff.state={path_encoded}

具体例としては、/foo/barに遷移させたいなら?liff.state=%2Ffoo%2FbarのようにすればOKです。

デメリットとしては、PCブラウザで開くと対象のLIFFとは縁もゆかりもないLINEのトップページに飛ばされてしまう点が挙げられます。

運用回避として、「スマートフォンの方はこちら」「PCの方はこちら」といった形でリンクを分けて案内することはできますが、なんというかメルマガ全盛期を思い出すスタイルで古臭さを感じなくもありません。

v1形式はいつ使えなくなるかわからない

このv1形式のURLは、現状のLIFF公式ドキュメントからは削除されているため、急に使えなくなっても文句は言えない状態です[1]

個人的には、v1になってからすでにかなりの時間が経過している現在でも使えているということから、まだしばらくは使えるのではないかと予想しています。

LINEミニアプリのUniversal Linkは、LINEミニアプリを開くためのURLです。

https://miniapp.line.me/{liff_id}

ちなみに、LINEミニアプリでは、https://liff.line.me/{liff_id}の形式でもアクセス可能ですが、挙動はミニアプリのUniversal Linkと同じになります(見た目は同じでも通常のLIFF v2 URLとは異なる挙動を示します)。

特徴としては以下の2点です。

  • PCで開くとスマートフォンに誘導される
  • 特定条件を満たすと外部ブラウザで開くことができる[2]
  • クッションページから確実にLINEアプリで起動させることができる

LIFF v1のUniversal Linkとほぼ同様ですが、上位互換になっています。

特に嬉しいのが、PCで開くとスマートフォンに誘導される点。PCブラウザで開いてもLINEのトップページに飛ばされることがありません。

一方で、以下のデメリットがあります。

  • LINEミニアプリは、LIFFよりも利用規約が厳しい(デジタルアイテムの販売禁止等)
  • LIFF v2のように自由に外部ブラウザで開くことができない(LIFFブラウザを強制できるメリットとも捉えられる)

ただし、外部ブラウザで開くことができない点は、v1形式と同様の手法で回避可能です。

  • PC向けには、Universal Linkではなく、チャネルの設定画面に指定している「元のURL」を利用する
  • スマートフォン向けには、ミニアプリのUniversal Linkを利用する

LINEミニアプリのUniversal Linkは、PCで開くとスマートフォンに誘導してきますが、「元のURL」でLINEログインをする場合にリダイレクト戻りで誘導ページにされてしまうなどの問題は現状ありません。

ちなみにクッションページは、特定条件を満たした場合とそうでない場合で以下の2通りがあります。

通常のクッションページ

LINEをダウンロードするかLINEで開くかの2択です。

image

特定条件を満たした場合のクッションページ

特定条件を満たすと、ブラウザで開く選択肢(Open in browser)が出現します。

image

カスタムURLスキーム

カスタムURLスキームは、LINEアプリを直接起動させるためのURLです。

line://app/{liff_id}

v1やLINEミニアプリのUniversal Linkで誘導されるクッションページに配置されているリンクがこの形式です。
2次リダイレクトを含むページに遷移させる場合は、v1形式と同様にliff.stateのクエリパラメータを指定できます。

特徴としては以下の3点です。

  • PCで開くことができない
  • LINEがインストールされていないスマートフォンで開くことができない
  • LINEがインストールされているスマートフォンでは確実にLIFFブラウザが起動する

LIFF v2形式以外では、ブラウザが起動してしまった場合は、このカスタムURLスキームに帰着します。

URLのプロトコルがそもそもHTTPではないため、ブラウザで開く心配はなく、確実にLINEアプリが起動することがわかります。
ちなみに、LINEがインストールされていない場合にApp Storeの画面に誘導されることもありません。

ユーザーがLINEをインストールしていないケースにも対応したい場合は、v1もしくはLINEミニアプリのUniversal Linkを利用しましょう。

PC版LINEアプリがインストールされている場合

インストールされている場合に限り、PCでカスタムURLスキームをクリックするとPC版LINEアプリが開きます。

ただし、PC版はLIFFを開くことができないため、下記の画像のような画面が開き、QRコード経由でスマートフォン版LINEでの利用を促されます。

image

ただ、この画面で表示されるQRの中身はline://nv/app/{liff_id}の形式になっており、私の所有する端末では(iPhoneでもAndroidでも)開くことができませんでした。

LINEを最新バージョンにアップデートするか、URLを確認してください。

というエラーダイアログが出てしまうため、カスタムURLスキームは利用端末がスマートフォンである場合にのみ提示するのがよさそうです。

まとめ

外部でリンクを展開する場合は、以下が論点になるかと思います。

LINEミニアプリ規約を飲める場合

  • PC上で利用させるには、元のURL(チャネル設定のエンドポイントURL)を利用する
  • PCからモバイルに誘導するには、LINEミニアプリのUniversal Linkを利用する
  • モバイルのLINEで開かせるには、LINEミニアプリのUniversal Linkを利用する

LINEミニアプリ規約を飲めない場合

  • PC上で利用させるには、LIFF v2のUniversal Linkを利用する
  • PCからモバイルに誘導するには、LIFF v1のUniversal Linkを利用する
  • モバイルのLINEで開かせるには、LIFF v1のUniversal LinkもしくはカスタムURLスキームを利用する

利用ユーザーのUniversal Link挙動がブラウザファーストになっていないことが明らかな場合、あるいは、モバイルの外部ブラウザで開くことを許容できる場合は、すべてLIFF v2のUniversal Linkで統一してもよいでしょう。

また、LIFFアプリの実装を変更できるのであれば、モバイルかつ外部ブラウザで開いていることをアプリで判定して、その場合のみカスタムURLスキームのリンクを表示するなどの工夫もできます。

脚注
  1. とはいえ、2025年3月にも大手企業のX公式アカウントでv1形式のURLが利用されていたり、まだまだ使われている印象です。 ↩︎

  2. ①チャネルの「LINE未使用ユーザーをウェブブラウザに誘導する」オプションが有効かつ、②スマートフォンかつ、③日本語以外のlocaleが指定されたブラウザであること ↩︎

キリフダ株式会社

Discussion