A scan is already in progress iOS版でQRコードが読み取れない

ionic2

ZBARは使えないようです

ionic2の公式ページには、ネイティブ機能の1つとしてQRコードスキャンが上げられています。

Zbarという機能ですが、何故かAndroidではうまくいくのに、iOS版では動きません。
Xcode上のエラーメッセージは

A scan is already in progress

と表示されます。
進行中と表示されながらも、スマートフォンの画面上は何の変化もなく、カメラすら起動していません。

githubでも同様のエラー報告があがってます。
修正されれば良いのですが、いつ治るかわからないシステムを当てにしては、こちらの作業がいつまでも進みません。

phonegap-plugin-barcodescannerを代用して解決

ionic2の公式に載っている以上、本来はZBarを使用したいのですが、うごかないので別のQRコードスキャナーを使用します。

CLIから以下のコマンドを入力してインストールできます

ionic plugin add phonegap-plugin-barcodescanner

そしてソースコードはこんな感じです

import {BarcodeScanner} from 'ionic-native';

export class BarcodeData {
  constructor(
    public text: String,
    public format: String
  ) {}
}

// 中略 
scanQR() {
  BarcodeScanner.scan()
    .then((result) => {
      if (!result.cancelled) {
         const barcodeData = new BarcodeData(result.text, result.format);
         this.scanDetails(barcodeData);
      }
    })
    .catch((err) => {
       alert(err);
    })
}

スキャン結果は result.textに入ってきます。キャンセルされたか否かのステータスはresult.cancelledに入ってきます。
この辺は詳しくはマニュアルを読んでみて下さい。

これにより、無事にiOS版でもQRコードスキャナーが作成できました。
こちらのサイトを参考にさせていただきました。