0

После настройки Firebase я получаю уведомление, созданное с помощью консоли Firebase, и когда я нажимаю на него, мое приложение открывает объявленный в манифесте firstactivity.Уведомление Android всегда открывается MainActivity

Я хочу открыть конкретную detailactivity, у которой есть firstactivity как родитель.

Мой манифест:

... 
    <activity 
     android:parentActivityName=".views.main.MainActivity" 
     android:name=".views.detail.DetailActivity" 
     android:screenOrientation="portrait"> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value=".views.main.MainActivity" /> 
    </activity> 
.... 

Мой заказ FirebaseMessagingService:

Intent i = new Intent(this, DetailActivity.class); 
    Intent intent2 = new Intent(this, MainActivity.class); 
    i.putExtra(ProfileDescriptionActivity.USER_ID, 14); 
    TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); 
    stackBuilder.addParentStack(ProfileDescriptionActivity.class); 
    stackBuilder.addNextIntentWithParentStack(intent2); 
    stackBuilder.addNextIntent(i); 
PendingIntent pendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); 

    NotificationCompat.Builder builder = new NotificationCompat.Builder(this) 
      .setAutoCancel(true) 
      .setDefaults(Notification.DEFAULT_SOUND) 
      .setContentTitle(title) 
      .setContentText(message) 
      .setSmallIcon(R.drawable.ic_notification) 
      .setContentIntent(pendingIntent); 

    NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
    manager.notify(0, builder.build()); 

Если я получить уведомление, когда приложение закрыто, он правильно показывает уведомление в трее уведомление. Но когда я щелкнул, как говорят, firstactivity.

Когда приложение было открыто, и я получил уведомление, в центр уведомлений было показано пустое представление, которое корректно открывает активность, которую я хочу.

Что не так? Благодарю.

+0

Возможно, вы ошиблись с типом push-сообщения (данных или уведомлений). Опубликуйте полезную нагрузку, которую ваш сервер отправляет в ваше приложение. – BMacedo

ответ

0

Чтобы автоматически открыть приложение через FCM, вам необходимо использовать data-message, что гарантирует всегда вызов метода onMessageReceived().

Например, ваша полезная нагрузка может быть:

{ 
    "to" : "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...", 
    "notification" : { 
     "body" : "great match!", 
     "title" : "Portugal vs. Denmark", 
     "icon" : "myicon" 
    }, 
    "data" : { 
     "Nick" : "Mario", 
     "Room" : "PortugalVSDenmark" 
    } 
    } 

Для того, чтобы проверить отправку этого сообщения, вы можете использовать любой онлайн ТСМ тестер, таких как this.