簡體   English   中英

Firebase 雲消息 (FCM):嘗試從 PHP 向設備發送消息(錯誤:InvalidRegistration)

[英]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 將消息發送到特定瀏覽器?

我應該怎么做才能向所有注冊的瀏覽器發送通知?

謝謝!

好吧,您必須確保存儲用戶瀏覽器的令牌,只有在他們允許請求提示時才能獲得該令牌,例如

在此處輸入圖像描述

在用戶允許請求時,它會生成如下所示的令牌

在此處輸入圖像描述

此令牌可用於將消息發送到特定瀏覽器。

因此,在您的代碼中,您的 $to = 它應該是設備令牌。

即“到”:“<DEVICE_REGISTRATION_TOKEN>”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM