应用关闭的Firebase通知不会触发正确的行为

时间:2018-03-07 14:26:44

标签: android firebase firebase-cloud-messaging

我有一个firebase混乱服务类,可以在应用程序运行时或在后台处理数据通知。我可以在应用程序运行时在栏中显示通知。

我对不同的通知有不同的行为,onMessageReceived处理我将要启动的片段。

public class MyFirebaseMessagingService extends FirebaseMessagingService {
    ...
    public void onMessageReceived(RemoteMessage remoteMessage) {
        ...
        // redirect to specific chat or chat list if we have messages from several conversations
        if (conversation_id.compareTo("") == 0 ||
          (conversation_id.compareTo(newConversationID) == 0 && classRedir == FragmentChat.class)) {
            classRedir = FragmentChat.class;
            conversation_id = newConversationID;
        }
        else {
            classRedir = FragmentChatList.class;
        }
        ...
    }
}

主要问题是此重定向仅在我单击通知并且应用程序正在运行时才有效。如果没有,当我点击通知时,应用程序只需开始启动启动画面并转到用户的默认屏幕。

我可以看到在启动画面内的附加内容中,我看到了通知的内容,因为它包含了我需要的所有字段。

我的问题是:在应用程序启动时,我应该如何指示firebase消息传递服务处理任何潜在的现有消息?或者我是以错误的方式调查这个?

谢谢。

1 个答案:

答案 0 :(得分:0)

刚刚解决了这个问题,经过大量的撞击我的头后。

我将以下内容添加到我的启动片段中,不确定这是否是更优雅的方式:

// check if we came from a notification click
            if (extras.containsKey(Constants.NOTIFICATION_CONVERSATION_ID)) {
                Log.d(TAG, "initialize: captured extra from notification ");

                Bundle bundle = new Bundle();

                bundle.putString(Constants.EXTRA_CHAT_CONVERSATION_ID, extras.getString(Constants.NOTIFICATION_CONVERSATION_ID));

                Intent intent = NavigationManager.getIntent(getContext(), ActivityMain.class, FragmentChat.class, bundle);

                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);

                getActivity().startActivity(intent);

            }