Ho un'implementazione di notifica GCM. So che l'applicazione client riceve la notifica sia che si trovi in primo piano, in background o in stato di morte. Quello che vorrei sapere è, come posso avviare la mia applicazione sulla notifica ricevuta, quando l'applicazione è nello stato di morte?Avvia l'applicazione quando è stata ricevuta la notifica GCM
risposta
Nel ricevitore messaggio, effettuare le seguenti operazioni:
final Intent notificationIntent = new Intent(context, YourActivity.class);
notificationIntent.setAction(Intent.ACTION_MAIN);
notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER);
Qui sostituire YourActivity.class con l'attività di ingresso. Questo ha funzionato per me.
È possibile utilizzare NotificationManager per avviare l'attività.
tenta di utilizzare sottostante Codice All'interno della vostra onMessage() metodo che è il metodo sottoposto a override in classe che estende GCMBaseIntentService classe di GCM.
int icon = R.drawable.your_app_icon;
long when = System.currentTimeMillis();
NotificationManager notificationManager = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = new Notification(icon, message, when);
String title = context.getString(R.string.app_name);
Intent notificationIntent = new Intent(context, YOUR_ACTIVITY.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
// notificationIntent.putExtra("PostName", vPostText);
// Log.i(TAG, "Sent Postid " + postid);
// Util util = (Util) context.getApplicationContext();
// util.setPostID(postid);
// util.setNotify(true);
// util.setUserNAME(vPortCode);
// util.setPostNAME(vPostText);
// util.setmEDIA(vMedia);
// util.setmEDIATHHUMB(vMediaThumb);
// util.setmEDIATYPE(vMediaType);
// util.setAirportName(vAirportName);
notificationIntent.putExtra("Set_image", true);
notificationIntent.putExtra("Notify", true);
// set intent so it does not start a new activity
// notificationIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
// notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
// | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent intent = PendingIntent.getActivity(context,
(int) System.nanoTime(), notificationIntent, 0);
notification.setLatestEventInfo(context, title, message, intent);
notification.defaults |= Notification.DEFAULT_SOUND;
notification.flags |= Notification.FLAG_AUTO_CANCEL;
notificationManager.notify((int) System.nanoTime(), notification);
Grazie. So come avviare un'attività dall'applicazione. Ma, quello che vorrei fare è, in caso di notifica ricevuta, se la mia applicazione è in background, vorrei portarlo in primo piano, se è in primo piano, quindi continuerei l'elaborazione, e se la mia applicazione è in lo stato stop/ucciso quindi voglio "riavviare l'applicazione" non attività. Quindi puoi dirmi se esiste un modo per avviare l'applicazione quando l'applicazione è nello stato di arresto/abbattimento sulla notifica ricevuta? – jasdmystery
@jasdmystery: hai scoperto? sto affrontando lo stesso problema. – user836026
Fare riferimento alla risposta sopra. – jasdmystery
Cosa succede se l'applicazione è già in esecuzione? – Ahmed
Cosa succede se l'app viene rimossa dall'elenco delle attività? in tal caso il "destinatario del messaggio" non verrà chiamato. Gestirà dal sistema e ha fatto clic sul tag "click_action". Ma la mia preoccupazione è aprire la mia attività target dopo l'arrivo della notifica. –
come ottenere il contesto qui nel messaggio fcm ?? –