Search code examples
cordovafirebasepush-notificationfirebase-cloud-messagingphonegap-pushplugin

How to get push notification values in phonegap using FCM?


I am working in PhoneGap. I want to get the push notification value that I'm getting from FCM. Now, I am getting the notification, but I am not able to receive notification values inside my app.

PHP side FCM Code:

    <?php
// API access key from Google API's Console
define( 'API_ACCESS_KEY', 'AIzaxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' );
$registrationIds = array( $_GET['id'] );
// prep the bundle
$msg = array
(
    'body'  => $_GET['body'],
    'title'     => $_GET['title'],
    'vibrate'   => 1,
    'sound'     => 1,
);
var_dump($msg);
$fields = array
(
    'registration_ids'  => $registrationIds,
    'notification'          => $msg
);

$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_SSL_VERIFYPEER, false );
curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode( $fields ) );
$result = curl_exec($ch );
curl_close($ch);
echo $result;
?>

This is my script to receive the notification

 <script type="text/javascript">
  function onLoad() {
  document.addEventListener("deviceready", Fire, false);
                       }

    function Fire() {



        FCMPlugin.getToken(
          function (token) {

               var name = document.getElementById("fireup");
                 name.value = token;
                 localStorage.setItem("key",token);
          },
          function (err) {
                   alert("Error: " + 'error retrieving token: ' + err);
          }
        );

        FCMPlugin.onNotification(function(data){
                if(data.wasTapped){
                    alert( JSON.stringify(data.title ) );
                }else{
                  alert( JSON.stringify(data.title ) );
                }
              },
              function(msg){
                  alert('onNotification callback successfully registered: ' + msg);
              },
              function(err){
                  alert('Error registering onNotification callback: ' + err);
              }
            );

    };


</script>

Solution

  • This is what helped me

    <?php
    // API access key from Google API's Console
    define( 'API_ACCESS_KEY', 'AIzaSyCpN9xxxxxxxxxxxxxxxxxxxxxxx' );
    $registrationIds = array( $_GET['id'] );
    // prep the bundle
    $msg = array
    (
        'body'  => $_GET['body'],
        'title'     => $_GET['title'],
        'vibrate'   => 1,
        'sound'     => 1,
    );
    
    $fields = array
    (
        'registration_ids'  => $registrationIds,
        'data'                  => $msg,
            'notification'      => $msg
    );
    
    $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_SSL_VERIFYPEER, false );
    curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode( $fields ) );
    $result = curl_exec($ch );
    curl_close($ch);
    //echo $result;
    echo json_encode(array("data"=>$msg));
    ?>