【问题标题】:FCM notification payload - determine topic name when app is not runningFCM 通知负载 - 在应用未运行时确定主题名称
【发布时间】:2018-05-31 14:10:26
【问题描述】:

后端服务器发送 FCM 通知如下:

{
  "to": "/topics/599_7041",
  "priority": "high",
  "data": {
    "id_message": "45" 
  }
  "click_action": "SHOW" 
  "notification" : {
      "body" : "Lorem ipsum",
      "title" : "Sample" 
    }
}

我的应用程序订阅了多个主题。当应用程序未运行时,Firebase 会显示通知并允许我在点击通知消息后运行应用程序,并提供点击操作并将数据(在本例中为 message_id)传递给已启动的应用程序实例。

到目前为止还不错。但是,除此之外,我需要确定从哪个订阅主题通知接收。从通知中启动新应用实例时,我能否以某种方式确定它,或者我需要将主题名称添加到数据中(message_id 旁边)?

我知道我可以在我的应用程序运行时确定to,这样:

@Override
public void onMessageReceived(@NonNull final RemoteMessage remoteMessage)
{
 //....
 String to = remoteMessage.getTo();
}

但是,如果我的应用程序没有运行怎么办,那么onMessageReceived 将不会被调用。

【问题讨论】:

  • 您可以尝试使用消息的生命周期。更多信息您可以找到here
  • 寿命与我的问题有什么关系?
  • 你如何从控制台发送主题消息?
  • 看我的问题,包含消息体(json)
  • 在消息标题中添加主题名称

标签: java android firebase firebase-cloud-messaging firebase-notifications


【解决方案1】:

你可以这样做:

exports.pushNotification =
functions.database.ref('/messages/{pushId}').onWrite( event => {

console.log('Push notification event triggered');


var valueObject = event.data.val();

console.log("it is"+ valueObject.title);
//Create a notification
const payload = {
 notification: {
    title:valueObject.title,
    body: valueObject.message,
    sound: "default"
},
};

这样您就可以使用数据库触发器onWrite,它会检查是否有任何消息已写入pushid。

然后您使用:var valueObject = event.data.val(); 从数据库中检索数据。

在notification{..} 中,您可以使用valueObject.title 作为主题名称,因此当收到通知时,主题名称将出现在通知的标题中,这样您就可以知道它是什么主题。

更多信息请查看https://firebase.google.com/docs/functions/database-events

【讨论】:

  • 嗯,首先我没有使用JS(但id无所谓),其次,我正在寻找一些不需要修改请求的解决方案,我希望有一些方法可以检索to 字段,已经存在。另外,我不想在标题中包含主题名称,最好将其放在data
  • 那你在后台用什么?
  • 这实际上并不重要,最重要的是后端只是使用我在问题中提到的json数据执行POST请求。
  • 是的,正如我的回答中提到的,它正在将数据发布到数据库中并发送 Android 手机的通知。我添加主题名称作为标题的原因是为了让用户知道他从哪个主题正在接收此通知
  • 最终用户不应该知道添加了哪个主题主题。标题≠主题。最好向data 结构添加额外的数据,但这不是我想要的
猜你喜欢
  • 1970-01-01
  • 2016-09-21
  • 2020-04-20
  • 2019-11-06
  • 1970-01-01
  • 1970-01-01
  • 2019-05-27
  • 2015-09-24
  • 1970-01-01
相关资源
最近更新 更多