Firebase Cloud Messaging PHP - PullRequest
       0

Firebase Cloud Messaging PHP

0 голосов
/ 12 февраля 2020

Я пытаюсь отправить сообщение указанному c человеку с помощью Google Firebase Cloud с PHP. Токен человека, получившего сообщение, хранится в БД. Вот мой код:

define('SERVER_API_KEY','MYSERVERAPIKEY');
define('FRIEND_TOKEN','FRIEND_TOKEN')

$message = array(
    'title'=>'Bet invitation',
    'body' =>'Notification from ...',
);
$url = 'https://fcm.googleapis.com/fcm/send'; 
$fields = array(
    'registration_ids' => FRIEND_TOKEN,
    'data' => $message
);
$headers = array(
    'Content-Type: application/json',
    'Authorization: key='.SERVER_API_KEY
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));

$result = curl_exec($ch);
if ($result === FALSE) {
    die('FCM Send Error: ' . curl_error($ch));
}
echo "Result: $result";
echo "Curl: ". curl_error($ch);
curl_close($ch);

Проблема в том, что указанный пользователь не получает сообщение. И когда я тестирую его через консоль Firebase, он работает ... Однако, сообщение об ошибке, как ни странно, мне тоже не показывается: (

Ответы [ 2 ]

0 голосов
/ 13 февраля 2020

Я сам нашел проблему. Я добавил "gcm_sender_id": "YOUR_FIREBASE_PROJECT_SENDER_ID" в файл манифеста. json и переписал скрипт, вот решение:

define('SERVER_API_KEY', 'MYSERVERAPIKEY');

$data = array(
   "to" => "$RECIVER_TOKEN",
   "notification" => array(
       "title" => "Test-Title",
       "body" => "Test-Message",
       "icon" => "https://url/images/iamge.png",
       "click_action" => "https://url")
    );

$headers = array(
    'Content-Type: application/json',
    'Authorization: key=' . SERVER_API_KEY
);
$url = 'https://fcm.googleapis.com/fcm/send';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
$result = curl_exec($ch);
if ($result === FALSE) {
   die('FCM Send Error: ' . curl_error($ch));
}
curl_close($ch);

Привет: Ашокан, Дэвид Ангуло и https://santhoshveer.com/web-push-notification/

0 голосов
/ 12 февраля 2020

Попробуйте приведенный ниже код, надеюсь, он поможет.

$message=[
    'title'=>'Bet invitation',
    'body' =>'Notification from ...',
];

$send = $this->GoogleCloudMessaging($friend_token,$message);
echo $send;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...