NativeScript-Vue で QRコードの読取り
はじめに
NativeScript(NativeScript-Vue) で QRコードの読取りを行う方法。
TL;DR
- プラグイン: EddyVerbruggen/nativescript-barcodescanner
- スキャン機能のページ内埋め込みは iOS のみ対応なので注意
new BarcodeScanner().scan()
で読取り機能の起動
目次
環境・条件
1 | $ sw_vers |
- iPhone 11 Pro: iOS 13.3
- Android HUAWEI nova lite 2: Android 9 (ビルド 9.1.0.160)
詳細
リポジトリ: 17number/nativescript-vue-tutorial
参考コミット:
前置き
読み飛ばしても OK
読取り可能なコード
Supported barcode types にまとまっている。
バーコードの種類に関しては以下サイトを参照
iOS/Android 共通
共通で使えるものだけ引用
- CODE_39
- CODE_93
- CODE_128
- DATA_MATRIX
- EAN_8
- EAN_13
- ITF (also known as ITF14)
- PDF_417 (on Android only when passed in explicity via formats)
- QR_CODE
- UPC_A
- UPC_E
セットアップ
インストール
tns plugin add nativescript-barcodescanner
でインストール
1 | $ tns plugin add nativescript-barcodescanner |
カメラ利用時の許可文を設定
画像の赤枠部分
app/App_Resources/iOS/Info.plist
を編集。
参考: iOS runtime permission reason
1 | ... |
実装
今回は NativeScript-Vue を使っているので、以下を参考に実装
app/main.js を編集。
1 | +// QR Scan |
QR コードのスキャン部は、app/pages/ScanQR.vue に切り出した。
1 | <template> |
ポイント
- Embedding the scanner (iOS) に (iOS) とあるように、スキャン機能のページ内埋め込みは iOS のみ対応
onScanResult
で読取り結果を受け取れる- Android で使用するとアプリがクラッシュするので注意
- タップでカメラを起動(カメラ画面に遷移)して読取りは、iOS/Android 共通で利用可能
その他・Tips
詳細な使い方は Usage を参照
連続読取り
function: scan (bulk / continuous mode)
カメラ利用権限の確認
function: hasCameraPermission / requestCameraPermission
プロダクトで利用する場合、権限の確認やリクエスト、「拒否」が選択された(されていた)場合のダイアログ表示(「設定」アプリから許可してね的な内容)が必要と思われる。
まとめ
- プラグイン: EddyVerbruggen/nativescript-barcodescanner
- スキャン機能のページ内埋め込みは iOS のみ対応なので注意
new BarcodeScanner().scan()
で読取り機能の起動
参考文献
関連記事
- NativeScript, JsBarcode でバーコードを 生成/描画
- NativeScript でデバイスの輝度(明るさ)を制御する
- NativeScript-Vue でネイテイブアプリの開発(チュートリアル + α)
- NativeScript で入力範囲外タップでキーボードを非表示にする
- NativeScript + Firebase でプッシュ通知
- NativeScript-Vue で次入力欄にフォーカスする方法
- JavaScript で URL のクエリパラメータを操作する方法
- jQuery Select2 で、初期値の設定と選択状態のクリア