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