Rabu, 19 April 2017

Push ke Firebase Cloud Messaging di PHP

Apa itu Firebase?

Saya tidak menjelaskan ke arah sana, karena sudah pasti dan cukup memuaskan apa itu dan mekanisme kerja dari firebase sesuai dengan yang terlihat di websitenya.

Jadi langsung saja..

Sebenernya sudah banyak package yang menyediakan FCM, tapi kita coba kostum dikit sesuai dengan yang sudah dicontohkan di dokumentasi oleh firebase.

Sesuai dengan cara kerjanya sebenernya kita tinggal tembak saja ke app url yang diberikan.

Kita buat saja langsung classnya.
Saya menggunakan package Jyggen CURL, jadi pastikan temen2 sudah menyediakan package tersebut. Jangan lupa server keynya dimasukan.


use \Jyggen\Curl\Curl;
use \Jyggen\Curl\Request as Request;
class FirebaseManager
{
       private $key = 'yourfcmkey';
       private $appURL = 'https://fcm.googleapis.com/fcm/send';
       private $device_target;
       private $data;
       private $response;
       private $notification;
 public function sendPush()
 {
         $headers = array('Authorization:key=' . $this->key, "Content-Type: application/json");
         $fields = array();
         $target = $this->device_target;
         $fields['data'] = $this->data;
         if(is_array($target))
         {
             if (count($target) == 1)
             {
                   $fields['condition'] = "'".$target[0]."' in topics";
             }
             if (count($target) >= 2) 
             {
                   $topics = '';
                   foreach ($target as $k => $v)
                   {
                        if ($topics == '') 
                        {
                             $topics = "'".$v."' in topics";
                        }
                        else
                        {
                             $topics .= " || '".$v."' in topics";
                        }
                   }
                   $fields['condition'] = $topics;
             }
         }
         else
         {
             $fields['condition'] = "'".$target."' in topics";
         }
         $request = new Request($this->appUrl);
         $request->setOption(CURLOPT_POST, true);
         $request->setOption(CURLOPT_HTTPHEADER,$headers);
         $request->setOption(CURLOPT_SSL_VERIFYHOST, 0);
         $request->setOption(CURLOPT_SSL_VERIFYPEER, FALSE);
         $request->setOption(CURLOPT_POSTFIELDS, json_encode($fields));
         $request->execute();
         $this->response = $request->getResponse();
     }
     public function setData($push_data)
     {
      $this->data = $push_data;
     }
   public function setTarget($target)
   {
    $this->device_target = $target;
   }
   public function setNotification($notif)
   {
    $this->notification = $notif;
   }
     public function getResponse()
     {
      return $this->response;
     }
}


Cara pakainya tinggal di instansiasi saja.

$contoh = new FirebaseManager;
$contoh->setData($data);
$contoh->setNotification($notif);
$contoh->setTarget($target);
$contoh->sendPush();

Terimakasih