cordova-plugin-barcodeScannerでスキャンキャンセル後に再度スキャンするとScan is already in progressと表示されスキャンできなかった時の対処法

  • 2022年5月19日
  • 2022年5月19日
  • Cordova

※ios13以上の方向けの記事です。

cordova-plugin-barcodeScannerプラグインを導入したアプリでiphoneでスキャンを

しよう!→やっぱりやーめたと下にスワイプをするとスキャンを取りやめることができます。

ですがここでスワイプキャンセルをして再度スキャンをしようとすると、Scan is already in progressと

表示されスキャンに失敗します。

質の悪いことに、androidでいうキャンセル扱いにはならずスキャン失敗時の処理まで辿りつきません。

調べてみるとプラグイン自身のバグらしく、公式でfixが上がっていたのでそれに合わせて修正します。

xcodeを開いて左の一覧からpluginの中から「CDVBarcodeScanner」という名前ファイルを探す。

365行目くらい(self.viewController.orientationDelegateが書いてあるところの下ら辺)に

以下のコードを追加

if(@available(ios 13.0, *)){
  self.viewController.modalInPresentation = YES;
}

105行目に以下のコードを追加

@property (nonatomic, getter=isModalInPresentation) BOOL modalInPresentation;

こちらは自動で追加されたと思いますが一応。

モーダルの制御をするようネイティブアプリに指示するというわけですね。

これでスワイプを制御することができます。次のバージョンではちゃんと治っているのでしょうか。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG