PhoneGap Costruire Push Notification ( Android )

? pleshy @ | Original: StackOverFlow
---

Sto avendo problemi con la ricezione di qualsiasi tipo di callback per il https://github.com/phonegap-build/PushPlugin per PhoneGap costruire, ho incluso il plugin all'interno config.xml .

Ho firmato per http://developer.android.com/google/gcm/index.html e ottenuto il mio numero di progetto necessario per pushNotification.register ( ) .

Ho anche l'accesso all'oggetto window.plugins.pushNotification così so che è incluso il plugin .

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

I miei file js index.html inclusi sono :

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

I miei plugin config.xml inclusi sono :

// 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="*"/>

Il mio invito a app.js 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();

Dopo l'esecuzione, che si chiama nulla, app.push_android ( ) è una funzione di oggetto di app .

Se non entro in un SenderID ottengo un errore che dice no ID del mittente quindi so che qualcosa sta funzionando . Questo è così frustrante tutte le idee ?

PS - Ho anche notato qualcosa di strano, quando ho console.log il window.plugins.pushNotification restituisce un oggetto vuoto, ma posso ancora chiamare window.plugins.pushNotification.register ( ), ma ho pensato di essere visibili all'interno della console log .

---

Top 5 Risposta

1Suhas @

Prova questo codice di notifica push -

var pushNotification;

document.addEventListener('deviceready', onDeviceReady, true);

function onDeviceReady() {

   try {
       pushNotification = window.plugins.pushNotification;
       if (device.platform == 'android' || device.platform == 'Android') {
           pushNotification.register(successHandler, errorHandler, { "senderID": "123456789", "ecb": "onNotificationGCM" });    // required!
          }
      else {
          pushNotification.register(tokenHandler, errorHandler, { "badge": "true", "sound": "true", "alert": "true", "ecb": "onNotificationAPN" }); // required!
          }
      }  
    catch (err) {
        txt = "There was an error on this page.

";
        txt += "Error description: " + err.message + "

";
        alert(txt);
     }
   };

// handle GCM notifications for Android
function onNotificationGCM(e) {
    switch (e.event) {
        case 'registered':
            if (e.regid.length > 0) {
                alert(e.regid);
                storeToken(e.regid);
            }
            break;

        case 'message':
            if (e.foreground) {
                var my_media = new Media("beep.wav");
                my_media.play();
            }
            else {  
              // otherwise we were launched because the user touched a notification in the notification tray.
            }

            break;

       case 'error':
           break;
       default:
          break;
    }
}

riferirsi http://www.androidhive.info/2012/10/android-push-notifications-using-google-cloud-messaging-gcm-php-and-mysql/

http://devgirl.org/2013/07/17/tutorial-implement-push-notifications-in-your-phonegap-application/

2pleshy @

Credo di aver trovato la soluzione .

Stavo passando un intero invece di una stringa per la proprietà SenderID nell'oggetto

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