我试图使用Firebase将通知推送到我的Android应用程序。我已经在我的本地系统上尝试过了,它工作正常。这是我的代码。Curl无法发送FCM消息
function sendPushNotiication($tokens,$message){
$url='https://fcm.googleapis.com/fcm/send';
$fields= array(
'registration_ids'=>$tokens,
'data'=>$message
);
$headers=array(
'Authorization: key='.GOOGLE_API_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);
var_dump($result);
if($result==FALSE){
die('curl failed: '. curl_error($ch));
}
curl_close($ch);
return $result;
}
我已经调用sendPushNotification()方法将数据发送到firebase。 问题是当我把这个在线服务器上。它在var_dump的$ result结果中为NULL。并在它死后与
卷曲失败。
curl有什么问题,它应该工作,如果它在本地系统上工作。
我还执行phpinfo()函数,发现
cURL support enabled
cURL Information libcurl/7.21.0 OpenSSL/0.9.8q zlib/1.2.3
改为使用'==='。测试'== false'是有风险的,因为空字符串,整数'0'等...都测试为等于false。 '0'是一个完全有效的json响应。 –
@MarcB感谢您的快速回复。是的,我用===替换了==,但是如果脚本在本地工作正常,为什么它在服务器上给null。 –
也许谷歌的黑名单你的主机公司或什么的。不知道。 –