繁体   English   中英

Firebase 云消息 PHP

[英]Firebase Cloud Messaging PHP

我正在尝试使用 Google Firebase Cloud 和 PHP 向特定的人发送消息。接收消息的人的令牌存储在数据库中。 这是我的代码:

define('SERVER_API_KEY','MYSERVERAPIKEY');
define('FRIEND_TOKEN','FRIEND_TOKEN')

$message = array(
    'title'=>'Bet invitation',
    'body' =>'Notification from ...',
);
$url = 'https://fcm.googleapis.com/fcm/send'; 
$fields = array(
    'registration_ids' => FRIEND_TOKEN,
    'data' => $message
);
$headers = array(
    'Content-Type: application/json',
    'Authorization: key='.SERVER_API_KEY
);

$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('FCM Send Error: ' . curl_error($ch));
}
echo "Result: $result";
echo "Curl: ". curl_error($ch);
curl_close($ch);

问题是指定的用户没有收到消息。 当我通过 Firebase 控制台对其进行测试时,它可以正常工作...但是,奇怪的是,错误消息也没有向我显示:(

尝试下面的代码,希望它会有所帮助。

$message=[
    'title'=>'Bet invitation',
    'body' =>'Notification from ...',
];

$send = $this->GoogleCloudMessaging($friend_token,$message);
echo $send;

我现在自己发现了问题。 我将"gcm_sender_id": "YOUR_FIREBASE_PROJECT_SENDER_ID"添加到 manifest.json 文件并重写了脚本,这里是解决方案:

define('SERVER_API_KEY', 'MYSERVERAPIKEY');

$data = array(
   "to" => "$RECIVER_TOKEN",
   "notification" => array(
       "title" => "Test-Title",
       "body" => "Test-Message",
       "icon" => "https://url/images/iamge.png",
       "click_action" => "https://url")
    );

$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) {
   die('FCM Send Error: ' . curl_error($ch));
}
curl_close($ch);

问候:ashokan、David Angulo 和https://santhoshveer.com/web-push-notification/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM