Cómo determinar si la aplicación de Android se abre desde el mensaje de notificación?
En general, cuando tengo mensaje de notificación en la barra de notificación y haga clic en él. Abre la aplicación registrada para ese mensaje.
En la actividad de inicio, ¿Cómo determinar si la aplicación está abierta desde ella?
- Android GCM: forma diferente de gestionar el envío dependiendo de si la aplicación es visible o no
- Poll vs Push - ¿Alguna razón para evitar Push Notifications?
- ¿Cómo suprimir la notificación push se muestra cuando la aplicación se está ejecutando?
- GCM notificación de empuje funciona después de la aplicación de parada de la fuerza?
- No se puede recibir notificación push en Android mediante Parse
Y más mejor es ¿Cómo recuperar la identificación de la notificación en el método OnCreate ()?
Actualización : desde @Ovidiu – aquí está mi código de putExtra para empujar
Notification notification = new Notification(icon, tickerText, System.currentTimeMillis()); notification.contentView = contentView; Intent notificationIntent = new Intent(this, Startup.class); notificationIntent.putExtra("JOBID", jobId); PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_ONE_SHOT); notification.flags = Notification.FLAG_AUTO_CANCEL; notification.contentIntent = contentIntent; mNotificationManager.notify(jobId, notification);
Y en la actividad principal "Startup.java" el código es
Intent intent = this.getIntent(); if (intent != null && intent.getExtras() != null && intent.getExtras().containsKey("JOBID")) { int jobID = this.getIntent().getExtras().getInt("JOBID"); if (jobID > 0) { } }
Intent.getExtras () devuelve siempre null. Resulta que necesito pasar PendingIntent.FLAG_ONE_SHOT. ¡Ahora es pasado adelante !!
- Alerta de visualización cuando llega el empuje
- Cómo obtener RegistrationID usando GCM en android
- ¿Por qué obtengo "MismatchSenderId" desde el lado del servidor GCM?
- Registro de Google Cloud Messaging AUTHENTICATION_FAILED
- Pruebas GCM, ¿cómo provocar una respuesta del servidor GCM con un canonical_id?
- ¿Qué puerto y protocolo utiliza Google Cloud Messaging (GCM)?
- La notificación de Parse Push no funciona en android
- ¿Cómo implementar funcionalidades como Facebook "New Story" característica?
Necesitas usar putExtra(ID_KEY,id)
cuando crees tu Intent
para iniciar tu aplicación, y en tu método onCreate()
puedes usar getIntent().getExtras().getInt(ID_KEY);
Para recuperar su integer
identificación pasado.
El código Start Activity sería así, de lo contrario, una vez que se reciba de la notificación de GCM, desde entonces cada vez que la Activity venga de la lista Recent, se dirá que viene de la notificación de GCM, lo cual es incorrecto.
Intent intent = this.getIntent(); if (intent != null && intent.getExtras() != null && intent.getExtras().containsKey("JOBID") && (intent.getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) == 0) { int jobID = this.getIntent().getExtras().getInt("JOBID"); if (jobID > 0) { } }
Tuve el mismo problema, y no entiendo por qué tengo que usar el método putExtra … Así que resolví así: cuando reciba una notificación y toque en ella, la aplicación se abrirá (normalmente se abre la actividad principal de la aplicación ) Y, en los extras, puede encontrar alguna información sobre esa notificación. Puede agregar parámetros de clave / valor a las notificaciones que está enviando a los dispositivos registrados. Estos parámetros se agregarán a los extras de intención.
Así que puedes actuar así: en tu notificación, agrega un parámetro que representa tu ID de notificación. Para esample "messageId" -> "abc", donde abc es su identificador de notificación.
Entonces, en su actividad principal, usted puede hacer:
if (getIntent().getExtras().keySet().contains("messageId")) { // you opened the app from a notification String messageId = getIntent().getStringExtra("messageId") // do domething... } else { // you opened the app normally // do domething... }
Y recuperará el id de la notificación. Por lo tanto, puede utilizar esta información para, por ejemplo, obtener la notificación de su db u otras operaciones.