how to send push notifications to iphone using fcm(firebase console) in PHP?

19,890

Solution 1

Thanks shubank .. your answer works... The only thing I need to add is priority high... Here is the updated code... May it help someone too :)

 $ch = curl_init("https://fcm.googleapis.com/fcm/send");

    //The device token.
    $token = ""; //token here

    //Title of the Notification.
    $title = "Carbon";

    //Body of the Notification.
    $body = "Bear island knows no king but the king in the north, whose name is stark.";

    //Creating the notification array.
    $notification = array('title' =>$title , 'text' => $body);

    //This array contains, the token and the notification. The 'to' attribute stores the token.
    $arrayToSend = array('to' => $token, 'notification' => $notification,'priority'=>'high');

    //Generating JSON encoded string form the above array.
    $json = json_encode($arrayToSend);
    //Setup headers:
    $headers = array();
    $headers[] = 'Content-Type: application/json';
    $headers[] = 'Authorization: key= $key'; // key here

    //Setup curl, add headers and post parameters.
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
    curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
    curl_setopt($ch, CURLOPT_HTTPHEADER,$headers);       

    //Send the request
    $response = curl_exec($ch);

    //Close request
    curl_close($ch);
    return $response;

Solution 2

here's the code tested by me and works perfectly. make sure to pass the fcm token

 $path_to_firebase_cm = 'https://fcm.googleapis.com/fcm/send';
    $token=array($token);
   $fields = array(
        'registration_ids' => $token,
        'priority' => 10,
        'data'=>$send_notification ,
        'notification' => array('title' => $type_of_notification, 'body' => $title ,'sound'=>'Default'),
    );
    $headers = array(
        'Authorization:key=' .'your server key' ,
        'Content-Type:application/json'
    );  

    // Open connection  
    $ch = curl_init('https://fcm.googleapis.com/fcm/send'); 
    // Set the url, number of POST vars, POST data
    curl_setopt($ch, CURLOPT_URL, $path_to_firebase_cm); 
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
    // Execute post   
    $result = curl_exec($ch); 
    // Close connection      
    curl_close($ch);
    return $result;

Solution 3

Seems to return a success. Maybe check your app registration code to see whether the token has changed for the phone. Sometimes a new token will be generated.

Share:
19,890
Simerjit Parmar
Author by

Simerjit Parmar

Updated on June 15, 2022

Comments

  • Simerjit Parmar
    Simerjit Parmar almost 2 years

    While sending the notification from firebase console Notification is working fine.

    firebase console

    I am getting push notifications on ios device.

    Here is the code that I am using to send push notifications to iphone in php using FCM..

    <?php  $ch = curl_init("https://fcm.googleapis.com/fcm/send");
    
        //The device token.
        $token = "";
    
        //Title of the Notification.
        $title = "Carbon";
    
        //Body of the Notification.
        $body = "Bear island knows no king but the king in the north, whose name is stark.";
    
        //Creating the notification array.
        $notification = array('title' =>$title , 'text' => $body);
    
        //This array contains, the token and the notification. The 'to' attribute stores the token.
        $arrayToSend = array('to' => $token, 'notification' => $notification);
        //Generating JSON encoded string form the above array.
        $json = json_encode($arrayToSend);
    
        //Setup headers:
        $headers = array();
        $headers[] = 'Content-Type: application/json';
        $headers[] = 'Authorization: key= abcdgfdk'; //server key here
    
        //Setup curl, add headers and post parameters.
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
        curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
        curl_setopt($ch, CURLOPT_HTTPHEADER,$headers);       
    
        //Send the request
        $response = curl_exec($ch);
    
        //Close request
        curl_close($ch);
        return $response; ?>
    

    And it returns the following response:

    {"multicast_id":7847791275395796141,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"0:1473926169782959%51b989d251b989d2"}]}
    

    Please suggest me what I am doing wrong? I use same code for android too with its server key and device token and it is working fine...