我想从应用程序发送推送通知,我可以从Firebase Cloud消息传递中获取令牌。我可以在Appserv中使用代码,但我不能从服务器在线使用,服务器在线错误HTTP错误500这是我的代码
<?php
function send_notification ($tokens, $message)
{
$url = 'https://fcm.googleapis.com/fcm/send';
$fields = array(
'registration_ids' => $tokens,
'data' => $message
);
$headers = array(
'Authorization:key = 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_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;
}
$conn = mysqli_connect("localhost","user","pass","db");
$User_id = $_POST['User_id'];
$sql = "SELECT * FROM user_token";
$result = mysqli_query($conn,$sql);
$tokens = array();
if(mysqli_num_rows($result) > 0 ){
while ($row = mysqli_fetch_assoc($result)) {
$tokens[] = $row["Token"];
}
}
mysqli_close($conn);
$message = array("message" => " SendNotification Txt");
$message_status = send_notification($tokens, $message);
echo $message_status;
?>
错误 500 表示Internal Server Error
。您遇到此处提到的问题,或者问题是 FCM,在这种情况下,您必须(根据文档(:
500-599 范围内的错误(例如 500 或 503(表示 FCM 连接服务器在尝试处理请求时出现内部错误,或者服务器暂时不可用(例如,由于超时(。发件人必须稍后重试,并遵循响应中包含的任何 Retry-After 标头。应用程序服务器必须实现指数退避。