Ionic Push notificación: ¿Cómo manejar onClick?

LA SITUACIÓN:

Estoy utilizando las notificaciones de Ionic Push en mi aplicación.

Todo está funcionando bien.

Cuando el usuario envía un mensaje, la notificación se disparará a través de una solicitud cURL, y llegará sólo si el receptor tiene la aplicación apagado o en segundo plano.

Sólo tengo un problema al manejar la devolución de llamada onClick.

Después de la documentación he puesto la función de devolución de llamada en el parámetro onNotification.

"OnNotification": Esta función se llamará cuando el dispositivo reciba una notificación y se le proporcione el objeto de notificación recibido.

Lo que necesito hacer, cuando el usuario haga clic en la notificación, es para redirigirlo a una determinada página.

Está funcionando.

El problema es que cuando la aplicación está en FOREGROUND, el usuario será redirigido a esa página cada vez que se hace una solicitud cURL … independientemente del hecho de que la notificación ha sido recibida (aplicación desactivada o de fondo) o no (primer plano de la aplicación) …

EL CÓDIGO:

.run(function($ionicPlatform, $rootScope, $location, $state) { $ionicPlatform.ready(function() { var push = new Ionic.Push({ "debug": true, "onNotification": function(notification) { $rootScope.get_my_account_data(); $location.path('app/chat'); }, "onRegister": function(data) { console.log(data.token); }, }); 

LA PREGUNTA:

¿Cómo puedo configurar una función de devolución de llamada que se llamará SOLAMENTE cuando el usuario haga clic en la notificación y no cuando esté dentro de la aplicación?

Tengo que hacer algunos trucos dentro de la onNotification o existe la posibilidad de configurar una devolución de llamada onClick?

¡Gracias!

LA SOLUCIÓN:

Ok, me las arreglé usando AppStatus . Al verificarlo, aplicaré el redireccionamiento sólo si el estado de la aplicación está asleep o closed .

if (notification.app.asleep || notification.app.closed)

EL CÓDIGO:

 var push = new Ionic.Push({ "debug": true, "onNotification": function(notification) { $rootScope.get_my_account_data(); if (notification.app.asleep || notification.app.closed) { // the app was asleep or was closed, so do the redirect $location.path('app/your_chat_page'); } }, "onRegister": function(data) { console.log(data.token); }, }); 

EDITAR:

Ahora ionic-platform-web-client está obsoleto. Debe migrar a Ionic Cloud .

Con Ionic Cloud algunas cosas cambian, así que ahora el código será ligeramente diferente:

 $scope.$on('cloud:push:notification', function(event, data) { var msg = data.message; if (msg.app.asleep || msg.app.closed) { // the app was asleep or was closed, so do the redirect $location.path('app/your_chat_page'); } }); 

Estoy trabajando con este método y está trabajando

1.Primero inicialice el empuje

 var push = PushNotification.init({ android: { senderID: "XXXXXXXXX" }, browser: { pushServiceURL: 'http://push.api.phonegap.com/v1/push' }, ios: { alert: "true", badge: true, sound: 'true' }, windows: {} }); 

2. push.on('notification', function(data) { use esto para los empujes solicitados y manejarlos como

 if (data.additionalData.link_url.indexOf('http')>-1){ $state.go('x',{x:x}); } 
  • GCM no canceló el registro del dispositivo cuando la aplicación se desinstaló
  • Mensajería en la nube de Google, incapaz de inicializar el receptor
  • Notificaciones de Firebase en primer plano
  • Notificación de 10 días de la infracción a término de desarrollador de Google Play con respecto al servicio de notificación push de OneSignal
  • No se puede obtener la notificación push desde el Dirigible Urbano
  • Notificación de envío cuando se carga un video nuevo en el canal de Youtube
  • No se puede resolver "com.google.android.gms.gcm.GcmReceiver"?
  • GCM elimina el ID de registro antiguo si el usuario instala la aplicación de nuevo inmediatamente después de la desinstalación?
  • Enviar notificación múltiple a GCM usando JSON
  • Android - No se puede iniciar el receptor com.parse.ParsePushBroadcastReceiver
  • ¿Cómo obtener el estado del dispositivo Android (sin conexión o en línea) mediante GCM?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.