5

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

5

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.

+2

Cosa succede se l'applicazione è già in esecuzione? – Ahmed

+0

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. –

+0

come ottenere il contesto qui nel messaggio fcm ?? –

2

È 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); 
+1

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

+0

@jasdmystery: hai scoperto? sto affrontando lo stesso problema. – user836026

+1

Fare riferimento alla risposta sopra. – jasdmystery

Problemi correlati