Phonegap: BarcodeScanner & Childbrowser 插件

Posted

技术标签:

【中文标题】Phonegap: BarcodeScanner & Childbrowser 插件【英文标题】:Phonegap: BarcodeScanner & Childbrowser plugins 【发布时间】:2012-08-27 15:49:44 【问题描述】:

我在使用这 2 个 PhoneGap 插件时遇到了问题:“BarcodeScanner”和“ChildBrowser”(在 ios 应用程序中,使用 XCode 4 和 PhoneGap 2.0)。

我的应用 UI 上有一个“扫描”按钮。当用户点击此按钮时,条码扫描器将启动。

因此,在条形码扫描器回调的 Success 函数中,我需要在新的 Childbrowser 窗口(应用程序内部)中打开从扫描中恢复的 URL。

但新的 Childbrowser 窗口从未打开,而控制台显示“Opening Url : http://fr.wikipedia.org/”(例如)。

这是我的 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);
       

如果我在确认警报回调中调用我的 openURL() 函数,一切正常,例如:

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

但我需要在扫描后直接启动 ChildBrowser 窗口,没有任何确认警报等。

请问有人知道怎么解决吗?

【问题讨论】:

【参考方案1】:

我也有同样的问题。

通过设置超时来解决。

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

【讨论】:

【参考方案2】:

我遇到了完全相同的问题。

除了条形码阅读器之外,我的应用程序还有另一种显示网页的机制,当我执行该操作时,我可以看到与条形码相关的页面已加载,但从未显示。

在 ChildBrowserViewController.m 中,我正在查看 loadURL() 的最后一行 webView.hidden = NO; 并且我认为子浏览器在我们条形码后设置为可见但条形码阅读器窗口的某些内容导致了孩子浏览器设置为错误的 z 顺序,但我对 sdk 不够熟悉,不知道如何测试或尝试将其置于最前面。

希望这有助于定位潜在领域。

【讨论】:

以上是关于Phonegap: BarcodeScanner & Childbrowser 插件的主要内容,如果未能解决你的问题,请参考以下文章

Phonegap 插件:BarcodeScanner 在 Eclipse 中导致错误

PhoneGap: BarcodeScanner 分享插件

iOS 的 phonegap-plugin-barcodescanner(数据矩阵)问题

phonegap 插件barcodescanner 在iOS 上不起作用

phonegap-plugin-barcodescanner 在 ios 上冻结

如何将barcodescanner生成的条形码图像存储在phonegap中