1

Некоторое время назад я пытался выяснить, как отправлять push-уведомления. Приложение, которое я сделал для Android прямо сейчас, но я хочу расширить его на другие устройства, как только я это понял. Я изучил различные сервисы, такие как Amazon SNS, но все они не учитывают, как получить токен устройства. Все думают, что вы знаете, как это сделать.Как получить регистрационный ID с Intel XDK?

Так что я спрашиваю: как получить идентификатор устройства/идентификатор регистрации для устройства?

Я попытался с помощью этого кода:

var tokenID = ""; 

document.addEventListener("deviceready", function(){ 
    //Unregister the previous token because it might have become invalid. Unregister everytime app is started. 
    window.plugins.pushNotification.unregister(successHandler, errorHandler); 

    if(intel.xdk.device.platform == "Android") 
    { 
     //register the user and get token 
     window.plugins.pushNotification.register(
     successHandler, 
     errorHandler, 
     { 
      //senderID is the project ID 
      "senderID":"", 
      //callback function that is executed when phone recieves a notification for this app 
      "ecb":"onNotification" 
     }); 
    } 
    else if(intel.xdk.device.platform == "iOS") 
    { 
     //register the user and get token 
     window.plugins.pushNotification.register(
     tokenHandler, 
     errorHandler, 
     { 
      //allow application to change badge number 
      "badge":"true", 
      //allow application to play notification sound 
      "sound":"true", 
      //register callback 
      "alert":"true", 
      //callback function name 
      "ecb":"onNotificationAPN" 
     }); 
    } 
}, false); 

//app given permission to receive and display push messages in Android. 
function successHandler (result) { 
    alert('result = ' + result); 
} 

//app denied permission to receive and display push messages in Android. 
function errorHandler (error) { 
    alert('error = ' + error); 
} 

//App given permission to receive and display push messages in iOS 
function tokenHandler (result) { 
    // Your iOS push server needs to know the token before it can push to this device 
    // here is where you might want to send the token to your server along with user credentials. 
    alert('device token = ' + result); 
    tokenID = result; 
} 

//fired when token is generated, message is received or an error occured. 
function onNotification(e) 
{ 
    switch(e.event) 
    { 
     //app is registered to receive notification 
     case 'registered': 
      if(e.regid.length > 0) 
      { 
       // Your Android push server needs to know the token before it can push to this device 
       // here is where you might want to send the token to your server along with user credentials. 
       alert('registration id = '+e.regid); 
       tokenID = e.regid; 
      } 
      break; 

     case 'message': 
      //Do something with the push message. This function is fired when push message is received or if user clicks on the tile. 
      alert('message = '+e.message+' msgcnt = '+e.msgcnt); 
     break; 

     case 'error': 
      alert('GCM error = '+e.msg); 
     break; 

     default: 
      alert('An unknown GCM event has occurred'); 
      break; 
    } 
} 

//callback fired when notification received in iOS 
function onNotificationAPN (event) 
{ 
    if (event.alert) 
    { 
     //do something with the push message. This function is fired when push message is received or if user clicks on the tile. 
     alert(event.alert); 
    } 

    if (event.sound) 
    { 
     //play notification sound. Ignore when app is in foreground. 
     var snd = new Media(event.sound); 
     snd.play(); 
    } 

    if (event.badge) 
    { 
     //change app icon badge number. If app is in foreground ignore it. 
     window.plugins.pushNotification.setApplicationIconBadgeNumber(successHandler, errorHandler, event.badge); 
    } 
} 

Все, что я получаю предупреждение, что говорит «результат = нормально». Предупреждений позже в коде не происходит. Я пробовал понять код, но я никуда не денусь. Какие-либо предложения? Есть ли учебник для этого, которого я не нахожу?

ответ

0

Эти устаревшие функции intel.xdk выходят на пенсию (они продолжат жить в 01.org, см. Уведомление на этой странице: https://software.intel.com/en-us/node/492826).

Я рекомендую вам изучить одно из доступных плагинов Pushova, которые доступны. Используйте свой любимый инструмент поиска в Интернете, чтобы найти что-то вроде «плагина с уведомлением о плагине phone phone», чтобы найти его. У хороших будут примеры использования.

+0

Я использую плагин Кордова: https://github.com/phonegap-build/PushPlugin Разве это уже не так хорошо? –

+1

Извините, я слишком быстро посмотрел на ваш код и увидел ссылки на intel.xdk. * И предположил, что вы использовали материал уведомления PushMobi ... Что касается плагина, на который вы ссылаетесь, я не могу сказать вам, является ли он «хорошим» или нет, мы не можем отслеживать все плагины, которые там есть. Обратите внимание, что у него есть несколько тегов релиза, поэтому вы можете попробовать более старые версии. См. Раскрывающееся меню «ветвь: мастер» и выберите «теги» - затем ссылайтесь на плагин следующим образом: https://github.com/phonegap-build/PushPlugin.git#2.3.1, чтобы получить версию с тегом 2.3 .1 тег. – xmnboy

0

Примечание: -

  • Разрегистрировать - Its not strictly necessary to call it.....
  • Убедитесь, что у вас есть идентификатор отправителя для Android (понятия не имею о прошивкой).

Результат OK означает, что плагин установлен правильно и работает правильно.


Проблемы могут быть обусловлены:

  • Некорректное идентификатор отправителя
  • Тестирование в эмуляторе без надлежащей установки

Важно - Push уведомления предназначены для реального устройства. Они не тестируются для эмулятора WP8. Процесс регистрации завершится неудачей на симуляторе iOS. Уведомления могут быть сделаны для работы с эмулятором Android, однако для этого требуется установка некоторых вспомогательных библиотек, как указано here, в разделе «Установка вспомогательных библиотек и настройка эмулятора».

  • onNotification должен быть доступен в качестве глобального объекта. Поэтому попробуйте подключить его к window.Обратитесь к этому question

Примеры правильной инициализации PushPlugin в:

  • Ionic (мой ответ)

 Смежные вопросы

  • Нет связанных вопросов^_^