Search code examples
ioscordovabarcode-scannerphonegap-plugins

iOS PhoneGap 1.7.0 + Barcode Scanning Plugin issue


Has anyone managed to get the BarcodeScanning plugin for PhoneGap to work on PhoneGap 1.7.0?

Barcode Scanning plugin: https://github.com/phonegap/phonegap-plugins/tree/master/iOS/BarcodeScanner

The issues is that the plugin is not getting set when its added..

I get the following when I call "alert(window.plugins.barcodeScanner);"

"undefined"

I am trying to isolate the point where the plugin is failing to get added and will update the question once I know more..

Thanks in advance for anyone who can help...


Updated answer below:


Solution

  • OK so after a bit of poking around and using the twitter PhoneGap plugin as an example I managed to get it working!!

    I used this as a basis for my approach because the lovely people at twitter updated their plugin to work with PhoneGap 1.7.0 thank god!!

    Twitter PhoneGap Plugin: https://github.com/phonegap/phonegap-plugins/blob/master/iOS/Twitter/js/TwitterPlugin.js

    Here is the updated barcodescanner.js code:

    var BarcodeScanner = function(){};
    
    BarcodeScanner.prototype.isBarcodeScannerAvailable = function(response){
        cordova.exec(response, null, "BarcodeScannerPlugin", "isBarcodeScannerAvailable", []);
    };
    
    BarcodeScanner.prototype.isBarcodeScannerSetup = function(response){
        cordova.exec(response, null, "BarcodeScannerPlugin", "isBarcodeScannerSetup", []);
    };
    
    //-------------------------------------------------------------------
    BarcodeScanner.Encode = {
    TEXT_TYPE:     "TEXT_TYPE",
    EMAIL_TYPE:    "EMAIL_TYPE",
    PHONE_TYPE:    "PHONE_TYPE",
    SMS_TYPE:      "SMS_TYPE",
    CONTACT_TYPE:  "CONTACT_TYPE",
    LOCATION_TYPE: "LOCATION_TYPE"
    }
    
    //-------------------------------------------------------------------
    BarcodeScanner.prototype.scan = function(success, fail, options) {
        function successWrapper(result) {
            result.cancelled = (result.cancelled == 1)
            success.call(null, result)
        }
    
        if (!fail) { fail = function() {}}
    
        if (typeof fail != "function")  {
            console.log("BarcodeScanner.scan failure: failure parameter not a function")
            return
        }
    
        if (typeof success != "function") {
            fail("success callback parameter must be a function")
            return
        }
    
        if ( null == options ) 
            options = []
    
            return PhoneGap.exec(successWrapper, fail, "com.cordova.barcodeScanner", "scan", options)
            }
    
    //-------------------------------------------------------------------
    BarcodeScanner.prototype.encode = function(type, data, success, fail, options) {
        if (!fail) { fail = function() {}}
    
        if (typeof fail != "function")  {
            console.log("BarcodeScanner.scan failure: failure parameter not a function")
            return
        }
    
        if (typeof success != "function") {
            fail("success callback parameter must be a function")
            return
        }
    
        return PhoneGap.exec(success, fail, "com.cordova.barcodeScanner", "encode", [{type: type, data: data, options: options}])
    }
    
    cordova.addConstructor(function() {
    
                           /* shim to work in 1.5 and 1.6  */
                           if (!window.Cordova) {
                           window.Cordova = cordova;
                           };
    
    
                           if(!window.plugins) window.plugins = {};
                           window.plugins.barcodeScanner = new BarcodeScanner();
                           });