我正在开发类似Web应用的WhatsApp,并希望通知用户有新消息。我正在使用Firebase的推送通知。
如果用户收到消息1,将显示" message1"的通知。 当消息2出现时,我想将其附加到上一个通知的正文,而不是显示新的通知。
喜欢"消息1 \ n消息2"等等。
一旦通过点击通知读取通知,并且当有新消息进入时,请说" Message3",它应该是正文中的新消息,而不是已经读取的Message1和Message2。
我发送通知的代码看起来像这样。
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一样,对话的新消息被添加到通知的正文中。 如何使用firebase完成?
答案 0 :(得分:1)
"标记并重新注明"是你必须用来实现你想要的两件事。 Code example here在这两个标题下。
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);
使用messages数组存储所有传入的消息。如果用户点击了通知,您可以使用"通知单击事件"如代码示例链接中所解释的那样,清除你的" messages数组"用于构建通知正文的内容。