有没有一种方法来删除FCM推送通知?

问题描述 投票:0回答:1

在我的应用程序,我提供的视频和用户之间的语音通话。我使用的火力地堡实时数据库和FCM,以及这样做。

这里是我的通知提供的数据:

data: { 
    channel_id: channel_id,
    user_id: user_id
}

在我FirebaseMessagingService类,我检索数据,打开视频/呼叫活动,如下所示:

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和火力地堡实时数据库中删除的通知。

所以,请有没有办法取消发送的通知,或者知道这些通知的发送状态,或周围的另一种方式来做到这一点?这将允许我加入让使用者未接来电列表。

谢谢!

java firebase firebase-cloud-messaging
1个回答
4
投票

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

  1. 发送另一个FCM消息时,呼叫被取消
  2. 仅使用FCM发送挠痒痒

Send another FCM message when the call is cancelled

在你能给的FCM消息的属性是collapse_key。当您发送邮件带有一个collapse_key,该消息替换具有相同collapse_key值以往任何消息。

你可以用它来发送一个“不,忘掉它”消息,当用户取消呼叫。

Only use FCM to send a tickle

或者你可以有FCM消息只是一个所谓的痒痛:一个几乎空的消息,只是告诉应用程序醒来,去检查其收到的消息队列在数据库中。

这样:如果呼叫仍然在数据库,应用程序可以把它捡起来。但是,如果在数据库中没有电话,它可以做什么。

你会想要做这种类型的数据库交互的服务,以便它可以在应用程序被运行中背景。

© www.soinside.com 2019 - 2024. All rights reserved.