从gcm迁移到fcm后,推送通知不起作用

时间:2019-04-29 10:47:38

标签: firebase push-notification firebase-cloud-messaging apple-push-notifications

我已根据这些准则https://developers.google.com/cloud-messaging/ios/ios-migrate-fcm将我的代码从apns迁移到了fcm。更新代码后,推送通知不起作用。

我已经创建了.p12和.pem证书文件,并使用以前的APNs相关代码测试了这两个文件。证书很好,并且在使用旧代码时将推送通知发送到客户端设备。但是当我使用新的fcm相关代码测试这些证书时,没有推送通知出现。我还更改了服务器端点。我尝试从Firebase控制台发送通知,它也可以正常工作。

我需要更改服务器上的某些内容吗?

1 个答案:

答案 0 :(得分:0)

最终解决了该问题。我需要更改服务器端代码。使用FCM,服务器端不再需要.pem证书(php脚本)。我所做的是

$url = "https://fcm.googleapis.com/fcm/send";
$token = "";
$serverKey = '';
$title = "Title";
$body = "Body of the message";
$notification = array('title' =>$title , 'text' => $body, 'sound' => 'default', 'badge' => '1');
$arrayToSend = array('to' => $token, 'notification' => $notification,'priority'=>'high');
$json = json_encode($arrayToSend);
$headers = array();
$headers[] = 'Content-Type: application/json';
$headers[] = 'Authorization: key='. $serverKey;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_CUSTOMREQUEST,

"POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
curl_setopt($ch, CURLOPT_HTTPHEADER,$headers);
//Send the request
$response = curl_exec($ch);
//Close request
if ($response === FALSE) {
die('FCM Send Error: ' . curl_error($ch));
}
curl_close($ch);

源:https://www.cumulations.com/blogs/87/how-to-send-push-notifications-in-php-to-ios-devices-using-fcm