【问题标题】:Is there a way to delete push notification data message sent by FCM?有没有办法删除 FCM 发送的推送通知数据消息?
【发布时间】:2019-02-02 23:30:02
【问题描述】:

在我的应用程序中,我提供用户之间的视频和语音通话。我也在使用 Firebase 实时数据库和 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);

    }

即使应用程序在后台,一切都运行良好。但是,我正面临这个问题:

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

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

谢谢!

【问题讨论】:

    标签: java firebase firebase-cloud-messaging


    【解决方案1】:

    在这样的场景中,我知道两种选择:

    1. 通话取消时发送另一条 FCM 消息
    2. 仅使用 FCM 发送痒感

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

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

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

    仅使用 FCM 发送 tickle

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

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

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

    【讨论】:

    • 我将进一步了解collapse_key。谢谢
    猜你喜欢
    • 2017-01-06
    • 1970-01-01
    • 1970-01-01
    • 2017-02-23
    • 2021-07-23
    • 1970-01-01
    • 2022-06-24
    • 2022-01-05
    • 1970-01-01
    相关资源
    最近更新 更多