gpt4 book ai didi

java - 如何在 android 中收到来自 firebase 的消息时创建事件监听器?

转载 作者:搜寻专家 更新时间:2023-11-01 08:17:41 26 4
gpt4 key购买 nike

我正在使用 firebase 接收消息。收到消息时 (onMessageReceived())。我想检查消息是否包含所需的字符串(比如“你好”)。如果是,我希望它被另一个 fragment 知道,这样 fragment 中的一些方法将根据消息被调用。

为此,我想在收到消息时创建事件监听器。在我的 fragment 中,将调用两个 API。 on API 将调用 onCreatedView()。基于来自 firebase 的消息,应该调用第二个 API。这两个 API 调用应在几分之一毫秒内完成。

MyFireBaseMessage.java

public class MyMessagingService extends FirebaseMessagingService {

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
Log.d("message here","message here "+ remoteMessage.getData().toString());
String value = remoteMessage.getData().get("msg");
Log.d("value here","value here"+" "+value);
if (value.equalsIgnoreCase("hello"))
{
//implement custom event listener here
}
}
}

最佳答案

我现在能想到的一种方法是使用 LocalBroadcast。做这个

  1. 修改您的 Firebase 服务并放置此内容

    public class MyMessagingService extends FirebaseMessagingService {
    private LocalBroadcastManager broadcaster;

    @Override
    public void onCreate() {
    broadcaster = LocalBroadcastManager.getInstance(this);
    }


    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
    super.onMessageReceived(remoteMessage);
    Log.d("message here", "message here " + remoteMessage.getData().toString());
    String value = remoteMessage.getData().get("msg");
    Log.d("value here", "value here" + " " + value);
    if (value.equalsIgnoreCase("hello")) {
    Intent intent = new Intent("custom-listener");
    broadcaster.sendBroadcast(intent)
    }
    }

  2. 在 fragment 类中进行更改

公共(public)类 BlankFragment 扩展 fragment {

    Context context;
BroadcastReceiver br;

public BlankFragment() {
// Required empty public constructor
}

@Override
public void onAttach(Context context) {
super.onAttach(context);
this.context = context;
}

@Override
public void onResume() {
super.onResume();
setup();
}

@Override
public void onDestroyView() {
super.onDestroyView();
LocalBroadcastManager.getInstance(context).unregisterReceiver(mMessageReceiver);
}

private void setup() {
LocalBroadcastManager.getInstance(context).registerReceiver(mMessageReceiver,
new IntentFilter("custom-listener"));
}


private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Get extra data included in the Intent
String message = intent.getStringExtra("message");
Log.d("receiver", "Got message: " + message);
}
};

}

通过广播,您将能够收听您想要收听的 Activity 。当您的 if 条件为真时,将触发 Fragment 类中的 onReceive 方法,即 value.equalsIgnoreCase("hello")

对于此答案的格式,我们深表歉意。难以调整。

关于java - 如何在 android 中收到来自 firebase 的消息时创建事件监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57488181/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com