2016-04-25 4 views
3

Я использовал Push Plugin, когда я отправляю push с кнопкой действия 1) принимаю 2) игнорировать.Cordova Android Push Notification With Action Button

Когда было получено уведомление, меня нажали на кнопку «принять». но мне нужны параметры с обратным вызовом кнопки «accept». из которого я буду идентифицироваться с уведомлением «accept».

код ссылки

//initialization of push object 
     var push = PushNotification.init({ 
      "android": { 
       "alert": "true", 
       "senderID": CONFIG.PROJECT_NUMBER, 
       "icon": "img/ionic.png", 
       "iconColor": "blue", 
       "badge": "true" 
      }, 
      "ios": { 
       "alert": "true", 
       "badge": "true", 
       "sound": "true" 
      }, 
      "windows": { 

      } 
     }); 

     //listner for getting registration detail of device 
     push.on('registration', function(data) { 
      device_id_for_push=data.registrationId; 
     }); 

     //listner called on new push notification 
     push.on('notification', function(data) { 
      // app.onPushAccept(data); 
      alert("on notification"); 
      alert(JSON.stringify(data)); 
     }); 

     //error listner 
     push.on('error', function(e) { 
      // alert(e); 
      // alert("push error"); 
     }); 

     app.onPushAccept=function(data){ 
      alert("onPushAccept") 
      alert(JSON.stringify(data)); 
      // cordova.plugins.notification.badge.clear(); 
      // cordova.plugins.notification.badge.increase(); 
     } 

в функции кода "app.onPushAccept" является обратный вызов кнопки "Accept" ..

Пожалуйста, помогите мне как можно скорее. Спасибо ..

ответ

2

Android Push уведомление (только)

Шаг 1 - Прежде всего перейти на данный ниже каталог

 plugins > phonegap-plugin-push > src > android > com > adobe > phonegap > push 

Шаг 2 - Открыть GCMIntentService.java файла из справочника

Шаг 3 - Определение функции вызова "createActions" и Добавить фактический параметр "requestCode", как ...

 createActions(extras,mBuilder,resources,packageName,notId,requestCode); 

Шаг 4 - Определение определение функции "createActions" и Добавить формальный параметр "Int requestCode", как .. ,

 private void createActions(Bundle extras, NotificationCompat.Builder mBuilder, Resources resources, String packageName, int notId,int requestCode) 

Шаг 5 - В определении функции "createActions" и внутри для петель Изменение второго параметра от "я" до "requestCode", как ...

 pIntent = PendingIntent.getActivity(this, requestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

    pIntent = PendingIntent.getBroadcast(this, requestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

Шаг 6 - После завершения всех выше шаги удаляют платформу Android, если уже добавлена ​​платформа. Затем добавьте платформу Android.

Извините и улучшите, если в моем решении обнаружена ошибка.

+0

Спасибо, много, это решение было действительно выполнено .. –

0

Используйте navigator.notification.confirm метод плагин cordova-plugin-dialogs

отображает диалоговое окно подтверждения настраиваемый.

Синтаксис

navigator.notification.confirm(message, confirmCallback, [title], [buttonLabels]) 
  • сообщение: Dialog сообщение. (String)
  • confirmCallback: Обратный вызов для вызова с указателем нажатой кнопки (1, 2 или 3) или при отклонении диалога без нажатия кнопки (0). (Функция)
  • название: Dialog название. (Строка) (Необязательно, по умолчанию для подтверждения)
  • buttonLabels: Массив строк с указанием ярлыков кнопок. (Array) (необязательно, по умолчанию [OK, Cancel])

вы можете изменить buttonLabels в [ "Accept", "Игнорировать"] , чтобы удовлетворить ваши потребности.

Пример

function onConfirm(buttonIndex) { 
    alert('You selected button ' + buttonIndex); 
} 

navigator.notification.confirm(
    'You are the winner!', // message 
    onConfirm,   // callback to invoke with index of button pressed 
    'Game Over',   // title 
    ['Accept','Ignore']  // buttonLabels 
); 
+0

Я определил, что меня нажали на кнопку «принять». но я хочу передать параметры от сервера к моему обратному вызову кнопки «принять» –

+0

@EjazMafat, вы не можете перейти от сервера к обратному вызову, я думаю, вы должны сделать вызов сервера с помощью $ .get или $ .ajax, чтобы получить эти параметры так что вы можете передать его. –

1

Хорошо, первый представьте, что вы отправляете следующую полезную нагрузку:

{ 
    "registration_ids": ["my device id"], 
    "data": { 
     "title": "My title", 
     "message": "My message.", 
     "actions": [ 
      { "title": "Accept", "callback": "app.accept", "foreground": true}, 
      { "title": "Ignore", "callback": "app.ignore", "foreground": false} 
     ] 
    } 
} 

и у вас есть настройки следующие обработчики кнопок действия:

app.accept = function(data} { 
    // do something 
} 

app.ignore = function(data} { 
    // do something 
} 

так что теперь у вас есть два варианта вы можете положить что-то в полезной нагрузке push, которая однозначно идентифицирует полученный push, который будет помещен в data.additionalData или модифицирует обратные вызовы для вызова другого обработчика событий:

app.accept = function(data} { 
    app.processPush('accept', data); 
} 

app.ignore = function(data} { 
    app.processPush('ignore', data); 
} 

app.processPush = function(type, data) { 
    if (type === 'accept') { 
    // do accept stuff 
    } else if (type === 'ignore') { 
    // do ignore stuff 
    } 
}