Android push-уведомление через firebase (на стороне сервера)

Я пытаюсь отправить push-уведомление на устройство Android с сервера с помощью системы облачных сообщений Firebase. Я смог успешно зарегистрировать свое устройство, и был сгенерирован токен для моего устройства. У меня проблемы с отправкой уведомления на мое устройство с использованием приведенного ниже сценария

<?php

function send_notification($token1,$message)
{
$url = 'https://fcm.googleapis.com/fcm/send';
$fields = array('registration_ids'=>$token1,'data'=>$message);
$header = array('Authorization:key = <my key here>','Content-Type: application/json');

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
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('Curl failed'.curl_error($ch));
}
curl_close($ch);

return $result;

}

require "init.php"; //my db details here

$sql = "select token from fbuser";

$result = mysqli_query($con,$sql);
$tokens = array();

if(mysqli_num_rows($result)>0)
{
while($row = mysqli_fetch_assoc($result))
{
$tokens[] = $row["token"];   // i was able to successfully echo out token as well
}
}

mysqli_close($con);

$message = array("message"=> "This is a test message");
$message_status = send_notification($tokens,$message);
echo $message_status; ***//Trouble here. it just prints out "To" whenever i hit the php script***

?>

Теперь, когда я нажимаю на скрипт, ответ просто возвращается

To

и больше ничего .. и уведомление не доставляется. Невозможно выяснить проблему. Запрос вашего руководства.

Спасибо

1

Решение

Попробуйте использовать «to» вместо «registration_ids»

Вот данные тела, сохраненные в истории почтальона [я не помню, работает это или нет]:

{ "data": {
"score": "5x1",
"time": "15:10" }, "to" : "token_id"}

Проверьте этот сценарий: если вы хотите сделать обмен сообщениями по теме

$url = "https://fcm.googleapis.com/fcm/send";
$topic = "topic_name";
$fields = array(
"to"                => "/topics/".$topic,
"data"              => $message,
"time_to_live"      => 30,
"delay_while_idle"  => true
);

$auth_key = "auth_key";

$headers = array(
"Authorization: key=".$auth_key,
"Content-Type: application/json");

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

Надеюсь, что помощь

1

Другие решения

Большое спасибо @Shubham за решение.

Ребята, пожалуйста, используйте код @ Shubham для отправки уведомлений в «Темы»

Я немного изменил его код, чтобы разрешить обмен сообщениями с одним получателем. Вот оно идет

<?php

$url = "https://fcm.googleapis.com/fcm/send";
$val = "<your recipient id>";
$message = array("message" => "This is a test message from server");
$fields = array(
"to"                => $val,
"data"              => $message,
"time_to_live"      => 30,
"delay_while_idle"  => true
);

$auth_key = "<Your auth key>";

$headers = array(
"Authorization: key=".$auth_key,"Content-Type: application/json");

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

?>

до — один получатель
registration_ids — многоадресные сообщения (многие получатели — должны быть в массиве)

Это может быть не идеальное решение с моей стороны, но оно определенно работает 🙂

0

По вопросам рекламы [email protected]