Добавлять сообщения для push-уведомлений - Firebase - PullRequest
0 голосов
/ 01 июня 2018

Я работаю над веб-приложением, похожим на WhatsApp, и хочу уведомлять пользователя о новых сообщениях.Я использую push-уведомления от Firebase.

Если пользователь получает сообщение1, уведомление будет отображаться как «сообщение1».Когда приходит сообщение 2, я хочу добавить его к телу предыдущего уведомления и не показывать новое уведомление.

Как "Сообщение 1 \ n Сообщение 2" и так далее.

После того, как уведомление прочитано, щелкнув его, и когда появится новое сообщение, скажем «Сообщение3», оно должно быть новым сообщением в теле, без Сообщений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, где новое сообщение разговора добавляется в тело уведомления.Как это можно сделать с помощью firebase?

1 Ответ

0 голосов
/ 01 июня 2018

«Пометить и обновить» - это две вещи, которые вы должны использовать, чтобы достичь того, чего вы хотите. Пример кода здесь под этими двумя заголовками.

   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);

Используйте массив сообщений для хранения всех входящих сообщений.Если пользователь нажал на уведомление, вы можете использовать «Событие щелчка уведомления», как описано в ссылке на пример кода, чтобы очистить ваш «массив сообщений», который вы используете для создания тела уведомления.

...