来自PHP MYSQL服务器的Firebase推送通知不';不能在多个设备上工作

来自PHP MYSQL服务器的Firebase推送通知不';不能在多个设备上工作,php,android,mysql,firebase,firebase-cloud-messaging,Php,Android,Mysql,Firebase,Firebase Cloud Messaging,我试图使用MySql PHP服务器和Firebase在Android设备上发送通知。Firebase令牌在我的DB上成功检索,但当我尝试从php向所有设备发送通知时,它会发送到保存在我的DB上的第一个设备 我在这里发布了PHP代码,我对其进行了一些分析,但代码是针对一个firebase令牌编写的 function sendPushNotification() { require "init.php"; $message="Notification Details"; $title="Notif

我试图使用MySql PHP服务器和Firebase在Android设备上发送通知。Firebase令牌在我的DB上成功检索,但当我尝试从php向所有设备发送通知时,它会发送到保存在我的DB上的第一个设备

我在这里发布了PHP代码,我对其进行了一些分析,但代码是针对一个firebase令牌编写的

function sendPushNotification()  {
require "init.php";
$message="Notification Details";
$title="Notification Title";

$url='https://fcm.googleapis.com/fcm/send';
$server_key="MY_FIREBASE_KEY";
$sql="select fcm_token from fcm_info";
$result=mysqli_query($con,$sql);
$row=mysqli_fetch_row($result);
$key=$row[0];

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

$fields=array('to'=>$key,'notification'=>
array('title'=>$title,'body'=>$message));

$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));
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); 

$result = curl_exec($ch); 
curl_close($curl_session); 
mysqli_close($con);}
后来我试着做了一点修改,从DB查询所有令牌并生成assoc数组,然后将该数组作为密钥传递。在这种情况下,通知不会发送,并给我一个错误提示


“to”必须是json

正如@Selvin所说,我用
注册ID解决了我的问题,而不是
to

你知道有一个关于json如何发送到
https://fcm.googleapis.com/fcm/send
应该看起来像
to
用于单个消息(因此您可以在前面的困难单词、循环中使用它)。。。如果您需要同时发送多条消息-请阅读文档(我打赌
注册\u id
),您上面的代码只从查询结果中获取一条记录。如果您想向所有用户发送通知,请循环查看结果。您能详细介绍一下您的场景吗?您是否正在尝试向所有设备发送相同的消息通知?如果是这样,为什么不直接使用主题消息呢?