不要在 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
节点时才有效。
这是 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
节点时才有效。