Skip to content

Instantly share code, notes, and snippets.

@lyarinet
Forked from nitinegoro/Firebase_push.php
Created March 1, 2021 19:42
Show Gist options
  • Save lyarinet/1e781df0d4161c192b24c119ad1eddc8 to your computer and use it in GitHub Desktop.
Save lyarinet/1e781df0d4161c192b24c119ad1eddc8 to your computer and use it in GitHub Desktop.
Codeigniter Firebase Push Notification
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
/**
* Single Sender FIrebase Push To Android
*
* @package Codeigniter
* @author Vicky Saputra <http://vicky.work
**/
class Firebase_push
{
protected $ci;
private $api_key = "YOUR_API_KEY";
private $url = 'https://fcm.googleapis.com/fcm/send';
// push message title
private $to;
private $title;
private $message;
private $image;
// push message payload
private $data;
// flag indicating whether to show the push
private $is_background;
public function __construct()
{
$this->ci =& get_instance();
}
public function setTo($to) {
$this->to = $to;
}
public function setTitle($title) {
$this->title = $title;
}
public function setMessage($message) {
$this->message = $message;
}
public function setImage($imageUrl) {
$this->image = $imageUrl;
}
public function setPayload($data) {
$this->data = $data;
}
public function setIsBackground($is_background) {
$this->is_background = $is_background;
}
public function getPush() {
$res = array();
$res['data']['title'] = $this->title;
$res['data']['is_background'] = $this->is_background;
$res['data']['message'] = $this->message;
$res['data']['image'] = $this->image;
$res['data']['payload'] = $this->data;
$res['data']['timestamp'] = date('Y-m-d G:i:s');
return $res;
}
// sending push message to single user by firebase reg id
public function send() {
$fields = array(
'to' => $this->to,
'data' => $this->getPush(),
);
return $this->sendPushNotification($fields);
}
// Sending message to a topic by topic name
public function sendToTopic() {
$fields = array(
'to' => '/topics/' . $this->to,
'data' => $this->getPush(),
);
return $this->sendPushNotification($fields);
}
// sending push message to multiple users by firebase registration ids
public function sendMultiple() {
$fields = array(
'to' => $this->to,
'data' => $this->getPush(),
);
return $this->sendPushNotification($fields);
}
// function makes curl request to firebase servers
public function sendPushNotification($fields) {
$curl = curl_init();
// Set the url, number of POST vars, POST data
curl_setopt($curl, CURLOPT_URL, $this->url);
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_HTTPHEADER,
array(
'Authorization: key='.$this->api_key,
'Content-Type: application/json'
)
);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
// Disabling SSL Certificate support temporarly
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($fields));
// Execute post
$result = curl_exec($curl);
if ($result === FALSE)
die('Curl failed: ' . curl_error($curl));
// Close connection
curl_close($curl);
return $result;
}
}
/* End of file Firebase_push.php */
/* Location: ./application/libraries/Firebase_push.php */
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment