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

时间:2018-06-01 09:07:50

标签: firebase web-applications push-notification notifications progressive-web-apps

我正在开发类似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完成?

1 个答案:

答案 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数组"用于构建通知正文的内容。