PhoneGap Build Push Notification (Android)

17,854

I think I've found the solution.

I was passing an integer instead of a string for the property senderID in the object

Doesnt work

pushNotification.register( 
    function(){alert('Push: win');}, // NOT called
    function(){alert('Push: Error');},  // NOT called
    { senderID: 123456789, ecb: "app.push_android" }
);

DOES work

pushNotification.register( 
    function(){alert('Push: win');}, // called
    function(){alert('Push: Error');},  // called
    { senderID: "123456789", ecb: "app.push_android" }
);
Share:
17,854
pleshy
Author by

pleshy

Updated on June 14, 2022

Comments

  • pleshy
    pleshy about 2 years

    I am having trouble receiving any type of callback for the push notifications plugin for phonegap build, I have included the plugin inside config.xml.

    I have signed up to GCM and got my project number needed for pushNotification.register().

    I also have access to the window.plugins.pushNotification object so I know it's included the plugin.

    • PhoneGap Build Version: 3.1
    • Hydration: Disabled
    • Debug: Enabled
    • Device: Samsung Tab 2

    My index.html js files included are:

    <script type="text/javascript" src="phonegap.js"></script>
    <script type="text/javascript" src="PushNotification.js"></script>
    <script type="text/javascript" src="js/lib/jquery.js" ></script>
    <script type="text/javascript" src="js/lib/handlebars.js"></script>
    <script type="text/javascript" src="js/handlebars/helpers.js"></script>
    <script type="text/javascript" src="js/plugins/fastclick.js"></script>
    <script type="text/javascript" src="js/app.js"></script>
    

    My config.xml plugins included are:

    // plugins
    <gap:plugin name="org.apache.cordova.console" />
    <gap:plugin name="org.apache.cordova.device" />
    <gap:plugin name="org.apache.cordova.geolocation" />
    <gap:plugin name="org.apache.cordova.dialogs" />
    <gap:plugin name="org.apache.cordova.inappbrowser" />
    <gap:plugin name="org.apache.cordova.splashscreen" />
    <gap:plugin name="com.phonegap.plugins.pushplugin" />
    // access to external domains
    <access origin="*"/>
    

    My app.js call to pushNotification.register()

    var app = {
    init: function() {
        document.addEventListener("deviceready", this.onDeviceReady, false);
        },
    
        onDeviceReady: function(){
           // DO STUFF
           // ....
    
           // ENABLE PUSH
           this.push_init();
        },
    
        push_init: function(){
            app.SENDER_ID = 123456789; // replaced by my actual GCM project no
    
            var pushNotification = window.plugins.pushNotification;
    
            pushNotification.register( 
                function(){alert('Push: win');}, // never called
                function(){alert('Push: Error');},  // never called
                { senderID: app.SENDER_ID, ecb: "app.push_android" }
            );
        },
       // never called
       push_android: function(e){
           alert('connection established...');
       console.log( 'successfully started android' );
       console.log( e );
       }
    
    };
    
    // start the app
    app.init();
    

    After that is called nothing is executed, app.push_android() is a function of app object.

    If i don't enter a senderID I get an error saying no sender ID so I know that something is working. This is so frustrating any ideas?

    PS - I also noticed something weird, when I console.log the window.plugins.pushNotification it returns an empty object, however I can still call window.plugins.pushNotification.register(), but I thought I would be visible inside the console.log.