不要在 android studio 中显示来自 firebase 的通知

Don't show a notification from firebase in android studio

这是 firebase 函数中的代码:

exports.androidPushNotification = functions.database
.ref("/chat/{pushId}")
.onCreate((snapshot, context) => {
    admin.messaging().sendToTopic("notification", {
        data: {
            senderId: snapshot.val().senderId,
        },

        notification: {
            title: `${snapshot.val().name} has sent a message.`,
            body: snapshot.val().message,
        },
    });
});

这是 android 工作室中的 onMessageReceived:

override fun onMessageReceived(remoteMessage: RemoteMessage) {

    if(remoteMessage.notification == null){
        return
    }

    val mAuth: FirebaseAuth = FirebaseAuth.getInstance()

    if(mAuth.currentUser?.uid == null){
        return
    }

    if(remoteMessage.data["senderId"] == mAuth.currentUser?.uid){
        return
    }

    generateNotification(remoteMessage.notification?.title!!, remoteMessage.notification?.body!!)
}

我让大家订阅了一个叫“通知”的话题。

这是一个聊天应用程序,每个人都在一个大聊天中。我不希望发送消息的人收到通知。

代码在 returns 如果用户发送但发件人仍收到通知的情况下有效。

如果您要发送到某个主题,则无法阻止某个订阅者接收该消息。

然而,您可以做的是发送 仅数据 消息并在代码中处理它。但是,如果您包含一个 notification 节点(正如您所做的那样),如果应用程序未被积极使用,系统将显示该通知。因此,您所做的过滤仅在消息中只有 data 节点且没有 notification 节点时才有效。