0

このような複数の投稿があることは知っていますが、私は多くのソリューションを試していますが、何も役に立たない。AndroidでFCM通知をクリックした後にアクティビティを開く

Firebase Cloud Messagingを使用して通知を送信しています。通知は到着しますが、私が望むものではなく、主な活動が開きます。

私は試してみますが、適切なアクティビティを開始すると失敗し続けます。他の意図や保留中の設定を試してみました。click_actionを試しましたが、何も私のために働きません。

私はFirebaseMessagingServiceにも入っていないと思うが、Firebase命令のようなことはすべてやった。

マニフェスト:

<service 
      android:name="com.packagename.FirebaseMessagingService"> 
      <intent-filter> 
       <action android:name="com.google.firebase.MESSAGING_EVENT" /> 
      </intent-filter> 
     </service> 

<activity android:name="com.packagename.NotificationActivity"> 
      <action android:name="OPEN_ACTIVITY_1" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </activity> 

FirebaseMessagingService:クリックした後

public class FirebaseMessagingService extends FirebaseMessagingService { 

    private static String TAG = "Firebase"; 

    @Override 
    public void onMessageReceived(RemoteMessage remoteMessage) { 

     Log.d(TAG, "From: " + remoteMessage.getFrom()); 
     if (remoteMessage.getData().size() > 0) { 
      Log.d(TAG, "Message data payload: " + remoteMessage.getData()); 
     } 


     if(remoteMessage.getNotification()!=null){ 
      Log.d(TAG,"Message body : "+remoteMessage.getNotification().getBody()); 
      sendNotification(remoteMessage.getNotification().getBody(), remoteMessage.getNotification().getTitle()); 
     } 
    } 

    private void sendNotification(String body, String title) { 
     Intent notificationIntent = new Intent(this, NotificationActivity.class); 
     notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     notificationIntent.putExtra("notification", body); 
     PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT); 

     NotificationCompat.Builder notification = 
       new NotificationCompat.Builder(this) 
         .setSmallIcon(R.drawable.notification) 
         .setContentTitle(getString(R.string.app_name)) 
         .setStyle(new NotificationCompat.BigTextStyle() 
           .bigText(body) 
         .setBigContentTitle(title)) 
         .setContentText(body) 
         .setContentIntent(pendingIntent) 
         .setAutoCancel(true) 
         .setDefaults(NotificationCompat.DEFAULT_SOUND); 

     NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
     notificationManager.notify(0,notification.build()); 
    } 
} 

ログ:

D/StatusBar: Clicked on content of 0|com.mypackagename|0|GCM-Notification:89893881|10177 , PendingIntent{cc15013: [email protected]} , Intent { act=com.google.firebase.MESSAGING_EVENT cmp=com.mypackagename/com.google.firebase.iid.FirebaseInstanceIdInternalReceiver (has extras) } 
+0

は条件ならばアプリがバックグラウンドで動作している場合getNotification()がnullを返すことがあるので外sendNotificationを()メソッドを呼び出してみてください。 –

+0

これを参照してください:http://stackoverflow.com/questions/37565599/firebase-cloud-messaging-fcm-launch-activity-when-user-clicks-the-notificati – rafsanahmad007

+0

コードは大丈夫です。サーバーサイドコードまたはサンプルペイロードを投稿できますか? –

答えて

3

バックグラウンドでアプリ、通知がシステムトレイに指示する場合。

クリック通知後、マニフェストファイルで指定されたランチャーアクティビティにリダイレクトされます。

ランチャーアクティビティから、任意のアクティビティを呼び出すことができますが、最初にランチャアクティビティに移動します。

ランチャーアクティビティでは、通知メッセージの内容を取得できます。

のAndroidManifest.xml

<activity 

      android:name=".view.SplashActivity" 

      android:screenOrientation="portrait"> 

      <intent-filter> 

       <action android:name="android.intent.action.MAIN" /> 



       <category android:name="android.intent.category.LAUNCHER" /> 

      </intent-filter> 

     </activity> 

SplashActivity.Java

public class SplashActivity extends AppCompatActivity { 



    @Override 

    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_splash); 
     Bundle bundle = getIntent().getExtras(); 

     if (bundle != null && bundle.get("data")!=null) { 


    //here can get notification message 
      String datas = bundle.get("data").toString(); 

    } 
} 
} 
+0

Splashアクティビティでは動作しませんでした:/ –

関連する問題