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コードスキャナーが作成できました。
こちらのサイトを参考にさせていただきました。