2015-09-13 2 views
1

Глядя на этот код, мне интересно, какие триггеры onNotificationGCM? Он запускается, когда приложение зарегистрировано, но когда оно снова запускается, скажем, когда когда я хочу направить сообщение пользователю? У меня есть приложение для чата, которое я хотел бы нажать на сообщение, когда появятся чаты. Поэтому я понимаю, что я регистрирую устройство, но затем этот код должен запускаться снова, я полагаю, с новым событием. Мне просто нужно понять часть потока и код детали.

// handle GCM notifications for Android 
$window.onNotificationGCM = function (event) { 
switch (event.event) { 
    case 'registered': 
    if (event.regid.length > 0) { 
     // Your GCM push server needs to know the regID before it can push to this device 
     // here is where you might want to send it the regID for later use. 
     var device_token = event.regid; 
     RequestsService.register(device_token).then(function(response){ 
      alert('registered!'); 
     }); 
     //send device reg id to server 

    } 
    break; 

    case 'message': 
     // if this flag is set, this notification happened while we were in the foreground. 
     // you might want to play a sound to get the user's attention, throw up a dialog, etc. 
     if (event.foreground) { 
      console.log('INLINE NOTIFICATION'); 
      var my_media = new Media("/android_asset/www/" + event.soundname); 
      my_media.play(); 
     } else { 
     if (event.coldstart) { 
      console.log('COLDSTART NOTIFICATION'); 
     } else { 
      console.log('BACKGROUND NOTIFICATION'); 
     } 
     } 

     navigator.notification.alert(event.payload.message); 
     console.log('MESSAGE -> MSG: ' + event.payload.message); 
     //Only works for GCM 
     console.log('MESSAGE -> MSGCNT: ' + event.payload.msgcnt); 
     //Only works on Amazon Fire OS 
     console.log('MESSAGE -> TIME: ' + event.payload.timeStamp); 
     break; 

    case 'error': 
     console.log('ERROR -> MSG:' + event.msg); 
     break; 

    default: 
     console.log('EVENT -> Unknown, an event was received and we do not know what it is'); 
     break; 
} 

};

ответ

0

Посмотрите на этот пример:

case 'message': 
    /* 
    if (e.foreground) { 
    window.alert("Message recieved"); 
    } 
    else { 
    if (e.coldstart) { 
    window.alert("Coldstart Notification"); 
    } else { 
    window.alert("Background Notification"); 
    } 
    } 
    window.alert("Notification message: " + e.payload.message 
       + "\n\n Time: " + e.payload.conversation); 
    */ 

    var data = e.payload; 
    if (data.conversation){ 
     window.history.replaceState(null, '', '#/chats/'); 
     ProjectName.conversation.load(data.conversation); 
    } 
    if (data.product){ 
     window.history.replaceState(null, '', '#/product/' + data.product); 
    } 
    break; 
case 'error': 
    // window.alert("Notification error: " + e.msg); 
    break; 
default: 
    // window.alert("Notification - Unknown event"); 
    break; 
} 

e.payload содержит все данные, которые вы отправляете в приложение, в том числе message. Вы можете получить доступ к своим другим переменным в case 'message'

+0

Хорошо, я думаю, что получаю. Мне просто интересно, если этот «ecb»: «window.onNotificationGCM» вызывается по требованию, скажем, что-то вниз по течению в моем приложении, которое содержит полезную нагрузку. Я написал узел api, используя node-gcm, который имеет регистр/маршрут и заменит ваше локальное хранилище, но также имеет маршрут/push. Там я создаю сообщение, которое я хочу отправить. Я предполагаю, что когда вызов нажать полностью, он каким-то образом вызовет «ecb»: «window.onNotificationGCM и отправьте полезную нагрузку, которую я там построил. Это выглядит правильно? Спасибо за пример –

+0

Прости, я не понимаю. :) – Ajoy

+0

Проблема Np. По той или иной причине ecb не был запущен с моего сервера после того, как я создал полезную нагрузку. Как оказалось, что-то не так с ключом, который я создал в Google. Я никогда не строил одну из этих вещей раньше и не знал, думал ли я об этом неправильно. Кажется, сейчас хорошо работает. –