PhoneGap Build- Push-Benachrichtigungen (Android)

? pleshy @ | Original: StackOverFlow
---

Ich habe Probleme beim Erhalt jede Art von Rückruf für die https://github.com/phonegap-build/PushPlugin für PhoneGap Build habe ich das Plugin innerhalb config.xml enthalten.

Ich habe bis zu http://developer.android.com/google/gcm/index.html unterzeichnet und bekam mein Projekt -Nummer für pushNotification.register erforderlich ().

Ich habe auch Zugriff auf die window.plugins.pushNotification Objekt, damit ich weiß, dass es das Plugin enthalten.

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

Meine index.html js -Dateien enthalten sind:

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

Meine config.xml Plugins enthalten sind:

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

Meine app.js Aufruf 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();

Danach heißt nichts ausgeführt wird, ist app.push_android () eine Funktion der App -Objekt.

Wenn ich eine SenderID nicht geben bekomme ich eine Fehlermeldung, dass keine Absender-ID, damit ich weiß, dass etwas funktioniert. Das ist so frustrierend, irgendwelche Ideen?

PS - Ich habe auch etwas seltsam, wenn ich console.log die window.plugins.pushNotification es ein leeres Objekt zurück, aber ich kann immer noch window.plugins.pushNotification.register () aufrufen, aber ich dachte, ich würde in der Konsole zu sehen sein .log .

---

Top 5 Antwort

1Suhas @

Versuchen Sie, diese Push-Benachrichtigung -Code -

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

beziehen Sich 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 @

Ich glaube, ich habe die Lösung gefunden .

Ich war eine ganze Zahl statt Weitergabe eines Strings für die Eigenschaft SenderID im Objekt

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