🎭

LINEアプリからLIFFをエンドポイントで開いた時の不具合

2022/12/05に公開

この記事には、LINE Front-end Framework (LIFF)開発特有の用語を使用しており
LIFF開発の基本的な構成や概念についての解説は含まれていません。
用語が唐突すぎる場合、基本構成を紹介した記事もあるので、よろしければご覧ください。

原則としてLIFFの起動はLIFF URLから

スマートフォンやタブレットのLINEアプリから、LIFFをLIFF URLではなくエンドポイントから起動すると一部の機能が設定どおりに動作しません

アプリ 起動URL 挙動
LINE LIFF URL 🙂 正常に動作する[1]
LINE エンドポイント 💀 一部の機能が設定どおりの挙動にならない

エンドポイントからの起動が起因しているバグはLIFF特有のイレギュラーなので
一般的なWEBアプリ開発のバグを念頭に調査をはじめると、こじれてしまいがちです。

この記事では、エンドポイントからの起動でおこる不具合を特定するヒントとして
実際にあった例をいくつかご紹介します。

  • モジュールモードが無効になる
  • target="_blank"がページ内遷移にかわる
  • Androidの設定でLINEアプリへ許可した権限が無効
  • シェアターゲットピッカーでシェア先を選べない

モジュールモードが無効になる

LIFFの設定でモジュールモードを有効化していると、アプリ上下のUIを省略したシンプルな表示で起動できますが
エンドポイントのURLから直接起動すると、モジュールモードが有効にならず
ブラウザの戻る進むやリロード、外部ブラウザ展開などのUIが表示されます。

モジュールモード

この、モジュールモード無効の状態は、表示の違いがわかりやすいため
クライアントチェックで原因不明の不具合の指摘があった場合は「画面の下へブラウザのバーが表示されているか」を質問し、LIFF URLではなくエンドポイントから起動してしまっていないか切り分けるための手がかりにすることが多いです。

target="_blank"がページ内遷移にかわる

新規ウィンドウで開いてほしいtarget="_blank"のリンクがページ内遷移として開きます。

Androidの設定でLINEアプリへ許可した権限が無効

LIFFで位置情報やカメラを使用する場合は、Androidの設定からLINEアプリへ権限を許可する設定が必要です

https://support.google.com/googleplay/answer/9431959?hl=ja

しかし、手順に従ってLINEアプリへ権限を許可していても
LIFFをLIFF URLではなくエンドポイントから起動している場合は必ず拒否する挙動になります。

シェアターゲットピッカーでシェア先を選べない

LIFFの設定でシェアターゲットピッカーを有効にしていても、シェアアカウント選択が真っ白になり操作が続行できなくなります。

おわりに

クライアントチェックや、開発以外の人もまじえたLIFFのテストの際
おなじ機種、おなじテストシナリオにしたがっても、特定の人にだけ発現する不具合が見つかることがあり
その原因が「エンドポイントでLIFFを起動していたから」というケースが、しばしばです。[2]

また、これらは、
LINEアプリ + エンドポイントの組み合わせで起動ときは発現し
ブラウザ + エンドポイントの組み合わせでは発現しないため、
とっさにソースの精査から調査を始めてしまうと、特定がこじれやすく厄介です。

LIFF開発のクセをおさえ、リリース直前チェックでイレギュラーに動じることがないようナレッジをためていきたいものです。

公式資料

https://developers.line.biz/ja/docs/liff/opening-liff-app/#move-liff-to-liff

脚注
  1. LIFFブラウザでの起動のことです。 ↩︎

  2. テストシナリオに、LIFF URLから起動しないと正常に動作しない旨を分かりやすく記載するカイゼンも必要ですね ↩︎

TAM

Discussion