gpt4 book ai didi

java - 有没有办法删除 FCM 发送的推送通知数据消息?

转载 作者:行者123 更新时间:2023-11-29 07:25:16 25 4
gpt4 key购买 nike

在我的应用程序中,我在用户之间提供视频和语音通话。为此,我也在使用 Firebase 实时数据库和 FCM。

这是我的通知传递的数据:

data: { 
channel_id: channel_id,
user_id: user_id
}

在我的 FirebaseMessagingService 类中,我检索数据并打开视频/通话 Activity ,如下所示:

if(remoteMessage.getData().size > 0) {
Intent intent = new Intent(this, VideoCallActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.putExtra("channel_id", remoteMessage.getData().get("channel_id"));
intent.putExtra("user_id", remoteMessage.getData().get("user_id"));
getApplicationContext().startActivity(intent);

}

即使应用程序处于后台,一切也能完美运行。但是,我面临这个问题:

如果用户在被调用时没有互联网连接,当他连接到互联网时,他的手机将自动启动 VideoCallActivity,即使调用已中止(由调用者)并且通知已从 Firebase 实时数据库中删除.

那么,请问有没有办法取消已发送的通知,或者知道这些通知的发送状态,或者其他方法来做到这一点?这将允许我为用户添加未接来电列表。

谢谢!

最佳答案

在这种情况下,我知道有两种选择:

  1. 取消调用时发送另一条 FCM 消息
  2. 仅使用 FCM 发送挠痒痒

取消通话时发送另一条FCM消息

您可以为 FCM 消息提供的属性之一是 collapse_key。当您发送带有 collapse_key 的消息时,该消息会替换之前具有相同 collapse_key 值的任何消息。

当用户取消通话时,您可以使用它发送“不,忘了它”消息。

仅使用 FCM 发送挠痒痒

或者,您可以让 FCM 消息只是一个所谓的 tickle:一个几乎是空的消息,它只是告诉应用程序唤醒并去检查它在数据库中的传入消息队列。

这样:如果电话仍在数据库中,应用程序可以接听电话。但是如果数据库中没有调用,它就什么也做不了。

您需要在服务中执行此类数据库交互,以便它可以在应用程序后台运行时运行。

关于java - 有没有办法删除 FCM 发送的推送通知数据消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54498535/

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