5

GCM通知の実装があります。私は、クライアントアプリケーションがフォアグラウンド、バックグラウンド、またはキル状態にあるかどうか通知を受け取ることを知っています。私が知りたいのは、アプリケーションが強制終了状態になったときに、通知を受けてアプリケーションを起動するにはどうすればいいのですか?GCM通知を受信したときにアプリケーションを起動します。

答えて

5

、私は次のようにします。ここでは

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

エントリー活性とYourActivity.classを交換してください。これは私のために働いた。

+2

アプリケーションが既に実行されている場合はどうなりますか? – Ahmed

+0

アプリをタスクリストから削除するとどうなりますか?その場合、「メッセージ受信者」は呼び出されません。それはシステムによって処理され、 "click_action"タグでクリックされます。しかし、通知が届いた後、私の懸念事項は私の目標活動を開いています。 –

+0

ここでfcmメッセージでコンテキストを取得する方法は? –

2

NotificationManagerを使用してアクティビティを開始できます。

は、GCMのGCMBaseIntentServiceクラスを拡張するクラスでオーバーライドされたメソッドをあるあなたののonMessage()メソッド内のコードの下には使用してみてください。メッセージの受信機では

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

ありがとうございました。アプリケーションからアクティビティを開始する方法を知っています。しかし、私がしたいのは、通知が受信されたときに、アプリケーションがバックグラウンドにある場合、フォアグラウンドにある場合は フォアグラウンドであれば処理を続行し、アプリケーションが停止/殺した状態は、その後、私は "アプリケーションを再起動する"活動ではありません。 通知が届いたときにアプリケーションが停止/強制終了状態になったときにアプリケーションを起動する方法があるかどうかを教えてください。 – jasdmystery

+0

@ジャスミステリー:あなたは離れていましたか?私は同じ問題に直面している。 – user836026

+1

上記の答えを参照してください。 – jasdmystery

関連する問題