我想发送firebase通知到Android设备的mysql数据库中的所有注册令牌,我使用正常的php方式创建收件人令牌数组,以便我可以发送通知,但是何时我发送通知非注册设备收到它。我想知道是否需要添加一些PHP代码来与Firebase一起工作,以便完成工作,如果是的话,我应该如何以及在哪里使用它,这取决于我的代码或我的代码有什么问题,以及我可以修复它吗?发送Firebase通知到多个注册的Android设备
//这里是发送通知
<?php
$message =$_POST['message'];
$title=$_POST['title'];
//firebase server url
$path_to_fcm='https://fcm.googleapis.com/fcm/send';
// Here is the server_key
$server_key="##########################";
$conn = mysqli_connect("localhost","db_username","password","database_name");
$sql = "select * from fcm_info";
$result = mysqli_query($conn,$sql);
//HERE IS THE TOKEN
$tokens = array();
if(mysqli_num_rows($result) > 0){
while ($row = mysqli_fetch_assoc($result)) {
$tokens[] = $row["fcm_token"];
}
}
/// HERE IS THE KEY SINGLE RECIPIENT IT WORKS FINE WHEN I INTRODUCE TO THE RECIPIENT FIELD("to" field)
$key="############";
$headers= array(
'Authorization:key='.$server_key,
'Content-Type:application/json'
);
// here use $tokens as the replace $key
$fields= array('to'=>$token,
'notification'=>array('title'=>$title,'body'=>$message,
'click_action'=>'com.jrcomjk.firebasemysql_TARGET_NOTIFICATION'
));
$payload= json_encode($fields);
$curl_session= curl_init();
curl_setopt($curl_session,CURLOPT_URL,$path_to_fcm);
curl_setopt($curl_session,CURLOPT_POST,true);
curl_setopt($curl_session,CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl_session,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl_session,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($curl_session,CURLOPT_IPRESOLVE,CURL_IPRESOLVE_V4);
curl_setopt($curl_session,CURLOPT_POSTFIELDS,$payload);
$result =curl_exec($curl_session);
curl_close($curl_session);
mysqli_close($conn);
?>
http://www.androidhive.info/2012/10/android-push-notifications-using-google-cloud-messaging-gcm-php-and-mysql/选中此项 –
Firebase控制台的单个设备通知正在工作?首先从Firebase控制台检查单个设备通知,然后再行进 –
是否有错误响应?您的目标是发送给*所有用户*,但是在您的代码中,您使用的是'to'参数,该参数用于单个令牌。看我的[在这里回答](http://stackoverflow.com/a/39547590/4625829),看看你可以使用什么发送到多个设备。 –