LoginSignup
9
6

More than 1 year has passed since last update.

【LINE LIFF】LIFFアプリでQRコードリーダーを作る

Last updated at Posted at 2021-05-20

こんにちは。

LINEが提供するWebアプリ用フレームワークLIFFで、
アプリ内QRコードリーダーを実現することができるようになったので、まとめてみました。

結論

はじめに

LIFFは、LINE Front-end Framework といい、LINEが提供するWebアプリの
プラットフォームです。近年耳にするLINEミニアプリについても
LIFFをベースとしたWebアプリのプラットフォームです。

LIFFはLINE上で自由にWebアプリを作成することができ、
自由度が高く、LINEの用意したデモサイトでも紹介されていますが、
会員証、予約、モバイルオーダーなどの用途での利用も可能なプラットフォームです。

2019/11/29 激震が走る

LIFF上で、QRコードリーダーを実現する仕組みとして、
liff.scanCode() というメソッドが提供されていましたが、
突然の提供停止(iOSのみ)告知が行なわれます。

Webアプリにおいて、QRコードリーダーというのは
需要のある機能であり、この提供中止により"LIFFのメリット"の1つが消えてしましました。

提供終了した理由については案内は行われていないようですが、
iOS版のみ提供停止ということで、そのあたり何かしらの問題があったものと推察されます。

その後、WebRTCや、HTML5の機能などを利用して、
どうにかiOS環境においてもLIFFアプリ内でQRコードリーダーを実現できないか模索していましたが、
結局可能な方法は発見できませんでした。

ときは流れ2021/4

2021/4 頃LINEのAPI USE CASEサイトに以下のような記事が
アップロードされました。
https://lineapiusecase.com/ja/usecase/smartretail.html

この記事では、LIFFアプリ内で、Barcode Scanner SDKを利用して
バーコードリーダを実装していました。

もちろんiOS端末でも動作しました。
この記事を発見し、なぜLINE社のバーコードリーダは動作しているのか
調査を行いました。

するとiOS14.3がリリースされ、WKWebViewがgetUserMedia対応したと
いう情報がありました。
https://bagelee.com/programming/ios-14-3-wkwebview/
https://bugs.webkit.org/show_bug.cgi?id=208667#c77

LIFFは以下のページにも記載がある通り、iOSではWKWebViewを
利用していると記載があるため、もしやと思い、QRコードリーダーを実装しました。
https://developers.line.biz/ja/docs/liff/overview/

結論

2021/05/20現在、
Vue Qrcode Readerや、jsQRなど、WebRTCを利用して実装したQRコードリーダーは、
LIFFブラウザ内で利用可能でした。

https://github.com/gruhn/vue-qrcode-reader
https://github.com/cozmo/jsQR

そのため、iOS14.3以降およびAndroid端末においては、LIFFブラウザ内でも
QRコードリーダーや、バーコードリーダは実現可能だと考えられます。

デモアプリ

https://liff.line.me/1654102793-9lBWLxEL
※LIFFの仕様上profileスコープを指定していますが、
情報の取得や保存はしていないのでご安心ください。
またherokuなのでしばらくアクセスが無いと起動に時間がかかります。

9
6
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6