将消息附加到推送通知 - Firebase



我正在开发一个类似WhatsApp的网络应用程序,并希望通知用户新消息。我正在使用 Firebase 的推送通知。

如果用户收到消息 1,将显示"消息 1"的通知。 当消息 2 出现时,我想将其附加到上一个通知的正文中,而不显示新通知。

如"消息 1 消息 2"等。

通过单击通知阅读通知后,当收到新消息时,说"Message3",它应该是正文中的新消息,没有消息 1 和消息 2,它已经被读取。

我发送通知的代码如下所示。


define( 'API_ACCESS_KEY', 'AAAAlHKlaCE_______________________-NdJXkojLf9Ap9mu' );
$data = array("to" =>$key,
"priority" =>"normal",
"collapseKey" =>"demo",
"notification" =>array( 
"title" =>"New message",
"body" =>"message1 ",
"icon" =>"../profiles/p1.jpg",
"tag" =>"hello",
"click_action" =>"http://website.com"
));                                                                    
$data_string = json_encode($data); 
echo "The Json Data : ".$data_string; 
$headers = array
(
'Authorization: key=' . API_ACCESS_KEY, 
'Content-Type: application/json'
);                                                                                 
$ch = curl_init();  
curl_setopt( $ch,CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send' );                                                                  
curl_setopt( $ch,CURLOPT_POST, true );  
curl_setopt( $ch,CURLOPT_HTTPHEADER, $headers );
curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch,CURLOPT_POSTFIELDS, $data_string);                                                                  
$result = curl_exec($ch);
curl_close ($ch);

它就像whatsapp一样,将对话的新消息添加到通知的正文中。 如何使用火力基地做到这一点?

"标记和重新通知"是您必须用来实现所需内容的两件事。这两个标题下的代码示例。

const title = 'My Messenger';
const options = {
body: 'Message 1 n Message 2',
tag: 'MyMessengerGroup'
};
registration.showNotification(title, options);

每次收到新消息时,请使用与上面突出显示的标签名称相同的标签名称。这将确保它将覆盖相同的通知,但附加您的消息,如下所示。

const title = 'My Messenger';
const options = {
body: 'Message 1 n Message 2 n Message3',
tag: 'MyMessengerGroup'
};
registration.showNotification(title, options);

使用消息数组存储所有传入消息。如果用户单击了通知,则可以使用代码示例链接中所述的"通知单击事件"来清除用于生成通知正文的"消息数组"。

最新更新