5

Mam wdrożenie powiadomienia GCM. Wiem, że aplikacja kliencka otrzymuje powiadomienie, czy znajduje się na pierwszym planie, w tle czy w stanie zabicia. Chciałbym wiedzieć, jak mogę uruchomić moją aplikację po otrzymaniu powiadomienia, gdy aplikacja znajduje się w stanie uśmiercenia?Uruchamianie aplikacji po otrzymaniu powiadomienia GCM

Odpowiedz

5

W odbiornika komunikatów, mam następujące:

final Intent notificationIntent = new Intent(context, YourActivity.class); 
notificationIntent.setAction(Intent.ACTION_MAIN); 
notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER); 

Tutaj wymienić YourActivity.class z działalnością wejściowej. To działało dla mnie.

+2

Co zrobić, jeśli aplikacja jest już uruchomiona? – Ahmed

+0

Co się stanie, jeśli aplikacja zostanie usunięta z listy zadań? w takim przypadku "odbiornik wiadomości" nie zostanie wywołany. Będzie obsługiwany przez system i kliknięty tagiem "click_action". Ale moją troską jest moja aktywność docelowa po otrzymaniu powiadomienia. –

+0

jak uzyskać kontekst tutaj w wiadomości fcm? –

2

Możesz użyć Menedżera powiadomień, aby rozpocząć swoją działalność.

spróbować użyć poniższy kod Wewnątrz onMessage() metoda, która jest zastąpiona metoda w klasie, która rozciąga GCMBaseIntentService klasę 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

Dziękuję. Wiem, jak rozpocząć działanie z poziomu aplikacji. Ale, co chciałbym zrobić, to po otrzymaniu powiadomienia, jeśli moje zgłoszenie jest w tle, przyniosę je na pierwszy plan, , jeśli jest na pierwszym planie, wtedy kontynuowałem przetwarzanie, a jeśli moja aplikacja jest włączona, stan stop/zabite, a następnie chcę "ponownie uruchomić aplikację" nie aktywność. Czy możesz mi powiedzieć, czy jest jakiś sposób uruchomienia aplikacji, gdy aplikacja jest w stanie stop/zabity po otrzymaniu powiadomienia? – jasdmystery

+0

@jasdmystery: znalazłeś się poza domem? Mam do czynienia z tym samym problemem. – user836026

+1

Patrz odpowiedź powyżej. – jasdmystery

Powiązane problemy