PhoneGap построить Push Notification (Android )

? pleshy @ | Original: StackOverFlow
---

У меня возникли проблемы принимающих какой-либо тип обратного вызова дляhttps://github.com/phonegap-build/PushPlugin для PhoneGap сборки, я включил плагин внутри config.xml .

Я подписал до http://developer.android.com/google/gcm/index.html и получил мой номер проекта необходима для pushNotification.register ().

У меня также есть доступ к объекту window.plugins.pushNotification так что я знаю, он включен плагин.

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

Мои index.html JS файлы входят:

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

Мои config.xml плагины входят:

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

Мой 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();

После этого вызывается ничего не выполняется, app.push_android ( ) является функцией приложения объекта .

Если я не ввести SenderId я получаю ошибку ничего не говоря, Sender ID, так что я знаю, что что-то работает . Это так сложно какие-то идеи ?

PS - Я также заметил, что-то странное, когда я console.log в window.plugins.pushNotification она возвращает пустой объект, однако я все еще могу назвать window.plugins.pushNotification.register (), но я думал, что я был бы виден внутри консоли .log .

---

Top 5 ответ

1Suhas @

Попробуйте нажать код уведомления -

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

ссылаться 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 @

Я думаю, я нашел решение.

Я проходил мимо целое число вместо строки для свойства SenderId в объекте

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