LIFFでQRコードを読み取れないとき|Scan QR・画面サイズ・カメラの確認順
この記事の結論
LIFFのscanCodeV2でカメラが開かないときは、Scan QRの設定、LIFFブラウザのFull表示、OS・外部ブラウザの条件を分けて確認します。読み取った文字列を会員確認や受付完了と混同しない設計も説明します。
最終更新:2026年10月15日
LIFFでQRコードを読み取るボタンを押してもカメラが開かないときは、QRコードの印刷をやり直す前に、読み取り機能を使える設定と起動環境を確かめます。カメラが開かない問題と、開いたカメラでコードを認識できない問題では、調べる場所が異なります。
ここでは、LIFFアプリ内で二次元コードを読み取るliff.scanCodeV2()を扱います。LINE公式アカウントを友だち追加するためのQRコードの取得は、友だち追加QR・URLの作り方で確認してください。
最初に、設定と画面サイズを確認する
公式リファレンスでは、二次元コードリーダーを起動する前に、LINE Developersコンソールで対象LIFFアプリの「Scan QR」をオンにする必要があります。別のアプリの設定を見ていないか、画面が使用するLIFF IDと照合します。
LIFFブラウザで利用する場合は、画面サイズがFullであることも条件です。TallやCompactで開いたまま、カメラの権限だけを繰り返し変更しても、この条件は満たせません。画面サイズの変更を検討するときは、読み取り後に元の入力内容へ戻れるかも確かめます。
従来のliff.scanCode()は非推奨で、iOSや外部ブラウザでは利用できません。実装を確認する際は、似た名前の旧メソッドと取り違えていないかも見ます。
LINEの中で開いているか、外部ブラウザかを分ける
公式の開発ガイドには、起動環境ごとの条件が示されています。
- iOSのLIFFブラウザ:iOS 14.3以降で、LIFFの画面サイズがFullの場合に利用できます。
- AndroidのLIFFブラウザ:画面サイズがFullであることを確認します。公式の一覧はAndroidの全バージョンを対象としていますが、使う端末での確認は別に必要です。
- 外部ブラウザ:WebRTC APIに対応したブラウザが条件です。PCも、LIFFブラウザではなく対応する外部ブラウザで確認します。
URLをLINEのトークに置いたことだけで、毎回同じブラウザが開くとは決められません。「iPhoneでは動かない」という報告なら、OS、LINE、実際に開いたブラウザ、LIFFの画面サイズを一緒に確認します。

カメラが開く段階と、文字列が返る段階を分ける
設定と環境の条件を満たしている場合は、端末やブラウザのカメラ許可、カメラを使用できる状態かを調べます。権限を拒否した場合に、何を確認して戻ればよいかを画面内に案内しておくと、担当者への質問も具体的になります。これは運用上の確認例であり、すべての失敗が権限設定だけで直るという意味ではありません。
カメラが開いたのに読み取れない場合は、コード全体が画面に入るか、反射やぼけがないか、同じコードを別の確認用端末で読み取れるかを順に試します。本人の会員情報を含むコードを、公開の問い合わせや共有チャットへそのまま貼って調査しないようにします。
scanCodeV2()は、文字列を読み取るとPromiseがresolveし、結果のvalueに文字列が入ります。失敗した場合は、エラーを受け取る経路も必要です。取得した値の表示と、受付処理の成功表示を同じ処理にしないことが大切です。
読み取り成功を、会員確認や受付完了にしない
たとえば、店頭で受付用コードを読む場面を考えます。これは説明用の架空例です。読み取った値が「受付番号の形をした文字列」であっても、それだけで有効な予約や会員だとは判断できません。
業務側で、想定した種類のコードか、有効な対象か、すでに処理済みではないかを確認してから結果を表示します。URLが返ってきても、無条件に開いたり、別の顧客の情報を表示したりしない設計にします。確認できないときは「読み取りはできましたが、受付は未完了です」と段階が分かる案内へ戻します。
カメラを使えない人に、同じボタンを何度も押してもらうだけの画面にしないことも必要です。番号の入力や担当者への確認など、その業務で承認した代わりの手段を用意します。担当者には、設定・起動環境・読み取り・業務照合のどこで止まったかを渡せるようにすると、同じ説明を顧客に繰り返してもらわずに済みます。
公開前には、使う予定のiOS・Androidと外部ブラウザで、許可・拒否・読み取り失敗・業務照合失敗をそれぞれ確認します。画面の表示検査だけで、実端末のカメラ動作を確認済みにはできません。