0

この2つのPhoneGapプラグイン「BarcodeScanner」と「ChildBrowser」(iOSアプリ内、XCode4とPhoneGap2.0を使用)の使用で問題が発生しています。

アプリのUIに[スキャン]ボタンがあります。ユーザーがこのボタンをクリックすると、バーコードスキャナーが起動します。

そのため、バーコードスキャナーコールバックのSuccess関数で、スキャンから復元されたURLを新しいChildbrowserウィンドウ(アプリ内)で開く必要があります。

ただし、コンソールに「Opening Url: http ://fr.wikipedia.org/」と表示されている間は、新しいChildbrowserウィンドウが開かれることはありません(たとえば)。

これが私のJSのコード部分です:

$("#btnStartScan").click(function() {
       var scanBarcode = window.plugins.barcodeScanner.scan(
                           function(result) {
                                    if (!result.cancelled){
                                         openUrl(result.text);
                                    }
                            },
                            function(error) {
                                    navigator.notification.alert("scanning failed: " + error);
       });
 });

function openUrl(url)
{
      try {
          var root = this;
          var cb = window.plugins.childBrowser;

          if(cb != null) {
                    cb.showWebPage(url);
          }
          else{
              alert("childbrowser is null");
          }
       }
       catch (err) {
           alert(err);
       }
}

たとえば、Confirmアラートコールバック内でopenURL()関数を呼び出すと、すべて正常に機能します。たとえば、次のようになります。

if (!result.cancelled){
        navigator.notification.confirm("Confirm?",
                                       function (b) {
                                              if (b === 1) {
                                                   openUrl(result.text);
                                              }
                                       },
                                       'Test',
                                       'Yes, No');
 } 

ただし、確認アラートなどを使用せずに、スキャンの直後にChildBrowserウィンドウを起動する必要があります。

誰かがこれを解決する方法を知っていますか?

4

2 に答える 2

2

私も同じ問題を抱えています。

タイムアウトを設定して解決します。

   var scanBarcode = window.plugins.barcodeScanner.scan(
                       function(result) {
                                if (!result.cancelled){
                                     setTimeout(function(){ openUrl(result.text); },500);
                                }
                        },
                        function(error) {
                                navigator.notification.alert("scanning failed: " + error);
   });
于 2012-12-04T08:33:29.683 に答える
1

私はまったく同じ問題に直面しています。

私のアプリケーションには、バーコードリーダー以外に、Webページを表示する別のメカニズムもあります。そのアクションを実行すると、バーコード関連のページが読み込まれたことがわかりますが、表示されませんでした。

ChildBrowserViewController.mで、最後の行を見て、バーコードの後に​​子ブラウザーが表示されるように設定されてloadURL()いるwebView.hidden = NO;と思いますが、バーコードリーダーウィンドウに関する何かが原因で、子ブラウザーが間違ったzに設定されました-注文しますが、それをテストする方法や前面に出す方法を知るには、SDKに精通していません。

これが潜在的な領域をターゲットにするのに役立つことを願っています。

于 2012-08-27T20:33:41.497 に答える