Php android的FCM通知
我尝试使用PHP脚本发送FCM通知,在数据库插入事件中,我尝试从FCM控制台发送通知,使用topic选项工作正常,知道我使用MainActivity.java OnCreate类中的以下代码将应用程序实例注册到某个主题“exptopic”:Php android的FCM通知,php,android,firebase,firebase-cloud-messaging,Php,Android,Firebase,Firebase Cloud Messaging,我尝试使用PHP脚本发送FCM通知,在数据库插入事件中,我尝试从FCM控制台发送通知,使用topic选项工作正常,知道我使用MainActivity.java OnCreate类中的以下代码将应用程序实例注册到某个主题“exptopic”: FirebaseMessaging.getInstance().subscribeToTopic("exptopic"); 现在,PHP脚本如下所示: function sendMessage($data,$target){ //FCM api U
FirebaseMessaging.getInstance().subscribeToTopic("exptopic");
现在,PHP脚本如下所示:
function sendMessage($data,$target){
//FCM api URL
$url = 'https://fcm.googleapis.com/fcm/send';
//api_key available in Firebase console -> project settings -> cloud messaging -> server key
$server_key = "API_KEY";//my api key
$fields = array();
$fields['data'] = array('message'=>$data);
$fields['to'] = $target;
$headers = array('content-type:application/json',
'Authorization:key='.$server_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 'notification not sent';
}
curl_close($ch);
echo $result;
return $result;
}
显然,$target=“exptopic”
当我运行snedMessage函数时,它返回以下结果:
{"multicast_id":6779996340041741184,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"InvalidRegistration"}]}
有人能帮忙吗?您缺少数据中的
优先级
字段。试试这个:
$fields["priority"] = "high" //This is required
编辑:
我在这个机构取得了成功。也许可以尝试一下:
<?php
// Get cURL resource
$ch = curl_init();
// Set url
curl_setopt($ch, CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send');
// Set method
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
// Set options
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// Set headers
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: key=API_KEY",
"Content-Type: application/json",
]
);
// Create body
$json_array = [
"notification" => [
"title" => "TEST",
"sound" => "default",
"body" => $data
],
"to" => $target,
"priority" => "high"
];
$body = json_encode($json_array);
// Set body
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
// Send the request & save response to $resp
$resp = curl_exec($ch);
if(!$resp) {
die('Error: "' . curl_error($ch) . '" - Code: ' . curl_errno($ch));
} else {
echo "Response HTTP Status Code : " . curl_getinfo($ch, CURLINFO_HTTP_CODE);
echo "\nResponse HTTP Body : " . $resp;
}
// Close request to clear up some resources
curl_close($ch);
基于,to
字段应该是/topics/exptopic
MySQL似乎与此问题无关,标记已删除。感谢您的回复,但它返回了相同的错误,我认为这不是问题如果此答案有用,请单击其左侧的向上投票按钮。如果它回答了您的问题,请单击复选标记接受它。这样别人就知道你得到了(足够的)帮助。