如何使用 PHP 发送 FCM 推送通知?

问题描述 投票:0回答:1

我有下面的代码,我试图将 FCM 推送通知发送到针对特定设备的 Android 应用程序。在终端中运行 php Push.php 我没有得到任何结果,也没有错误。

请帮助我这里出了什么问题,我可以使用旧版 FCM API 发送,但无法使用 HTTP v1

<?php
$serviceAccount = json_decode(file_get_contents('privatekey.json'), true);

$serverKey = $serviceAccount['private_key'];
$projectId = $serviceAccount['project_id'];

$data = [
    'message' => [
        'token' => 'd6dYpnaLSP2zRk4o6dFfFZ:APA91bG-ZB7XFB-01K54cEVAiyMuqbKyBGhYX-XeiR2QcC3QKv1-MXI4wAy_cwL-d1TLNOUkF-pqt0WQed4b2VcL8OeBxXOPVwrMiWv69TkDRRidOPUw_YjA-ISsgCNoxlWUIb5V_PV6',
        'notification' => [
            'title' => 'Your Title',
            'body' => 'Your Message',
        ],
    ],
];

$headers = [
    'Authorization: Bearer ' . $serverKey,
    'Content-Type: application/json',
];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://fcm.googleapis.com/v1/projects/notifizy/messages: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($data));

$result = curl_exec($ch);
curl_close($ch);


echo $result;
?>

我已经尝试了所有旧版 FCM API 都可以工作,但这个不行。

php firebase curl push-notification firebase-cloud-messaging
1个回答
0
投票
<?php
define('SERVER_API_KEY', 'MYSERVERAPIKEY');
$data = array(
   "to" => "$RECIVER_TOKEN",
   "notification" => array(
       "title" => "Test-Title",
       "body" => "Test-Message")
    );
$headers = array(
    'Content-Type: application/json',
    'Authorization: key=' . SERVER_API_KEY
);
$url = 'https://fcm.googleapis.com/fcm/send';
$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, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
$result = curl_exec($ch);
if ($result === FALSE) {
    echo 'FCM Send Error: ' . curl_error($ch);
   die('FCM Send Error: ' . curl_error($ch));
}
curl_close($ch);

echo $result;
?>
© www.soinside.com 2019 - 2024. All rights reserved.