[英]Firebase Cloud Message (FCM) : trying to send message to device from PHP (error: InvalidRegistration)
我正在嘗試從 PHP 發送推送消息,但收到以下錯誤消息:
{"multicast_id":4832091122368281316,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"InvalidRegistration"}]}
我想瀏覽器 ID 不匹配,但我不知道應該使用哪個。
當我通過 JS 注冊推送通知時,我在 PHP 服務器上收到以下有效負載:
{"endpoint":"https://fcm.googleapis.com/fcm/send/XXX:YYY","expirationTime":null,"keys":{"p256dh":"ZZZ","auth":"AAA "}}
為了在 PHP 中發送消息,我使用了以下代碼(在 stackexchange 上找到):
function sendnotification($to, $title, $message, $img = "", $datapayload = "")
{
$msg = urlencode($message);
$data = array(
'title'=>$title,
'sound' => "default",
'msg'=>$msg,
'data'=>$datapayload,
'body'=>$message,
'color' => "#79bc64"
);
if($img)
{
$data["image"] = $img;
$data["style"] = "picture";
$data["picture"] = $img;
}
$fields = array(
'to'=>$to,
'notification'=>$data,
'data'=>$datapayload,
"priority" => "high",
);
$headers = array(
'Authorization: key=MYSERVERKEY',
'Content-Type: application/json'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send');
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);
curl_close( $ch );
return $result;
我想我使用了正確的服務器密鑰,如果沒有,我會收到不同的錯誤消息。
對於 $to,我想知道我應該使用什么。 我以為我必須在端點之后使用 XXX:YYY 但它不起作用(XXX 很短,YYY 很長)。 我也嘗試過 ZZZ 和 AAA,但也無濟於事。
我的問題:
我應該使用哪種 ID 將消息發送到特定瀏覽器?
我應該怎么做才能向所有注冊的瀏覽器發送通知?
謝謝!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.