Ionic Push notificación: ¿Cómo manejar onClick?
LA SITUACIÓN:
Estoy utilizando las notificaciones de Ionic Push en mi aplicación.
- ¿Cómo analizar enviar push sin registro de gcm?
- ¿Cómo los servidores de la conexión GCM envían mensajes a un dispositivo Android?
- Mostrar notificaciones push cuando la aplicación se abre / cierra de manera diferente
- ¿Es necesaria una cuenta de Google para GCM (Google Cloud Messaging)?
- ¿Cuál es el límite de caracteres para el texto del mensaje en la notificación basada en la consola de Firebase?
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!
- PHP del servidor GCM - Error 401 no autorizado
- Android GCM PushNotification - Añadir añadir archivo de sonido personalizado en la aplicación
- ID de registro canónico y formato ID de mensaje
- Algunas consultas sobre C2DM en Android
- ¿Cómo podemos obtener un dispositivo de token para Android para notificación push?
- Obtenga el ID de registro canónico de GCM sin enviar un mensaje
- GCM Error = MissingRegistration enviando mensajes vía JSON
- Cómo obtener clave de API de GCM, no hay aplicaciones registradas en el menú
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}); }