浜松のWEBシステム開発・スマートフォンアプリ開発・RTK-GNSS関連の開発はお任せください
株式会社シーポイントラボ
TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:静岡県浜松市中区富塚町1933-1 佐鳴湖パークタウンサウス2F

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

※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;

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

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

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

  • この記事いいね! (0)