我有一个iOS应用程序在应用商店上线。我可以向安装了该应用的iOS设备发送推送通知,但只能从Firebase控制台发送。
当我尝试通过cURL请求发送推送通知时,服务器的响应表明我成功了,但是设备上没有收到消息。我已经尝试使用多播和单个接收者负载进行操作。
我肯定漏掉了更基本的东西,但我看不到它。
这是我的PHP代码:
<?php
// API access key from Google API's Console
define( 'API_ACCESS_KEY', 'AI*****4LPGkx8xtDG2tBl*****7KWJfmp1szcA' );
$registrationIds = array( $_GET['id'] );
// prep the bundle
$msg = array
(
'message' => 'here is a message. message',
'title' => 'This is a title. title'
);
$fields = array
(
'to' => "cUxd-iTVVWo:APA*****kQTuqJ5RREKhhlJjm27NCuVfUn5APg3lBFqh-YWjgx*****iOpAQeLB14CzM2YTwIJo_75jzCmbFLKj0_zpKSHvAEbmJz*****BBezGJIng-N4H-cAD6ahY7mQNYZtEJLAIE",
'data' => $msg
);
$headers = array
(
'Authorization: key=' . API_ACCESS_KEY,
'Content-Type: application/json'
);
$ch = curl_init();
curl_setopt( $ch,CURLOPT_URL, 'https://fcm.googleapis.com/fcm/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( $fields ) );
$result = curl_exec($ch );
curl_close( $ch );
echo $result;
运行这段代码时,我得到的响应如下:
{"multicast_id":5814921248239922706,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"0:1476193002715692%a4ddee3cf9fd7ecd"}]}
notification
而不是data
。我想做的就是在我的iOS应用程序中引发一个标准的推送通知消息,与从Firebase管理界面发送通知时出现的消息完全相同。另外,我应该使用body
而不是content
来设置消息内容。尽管如此,我的代码仍然无法工作。这是我的有效载荷:{"to":"cUxd-iTVVWo:APA...","notification":{"body":"here is a message. message","title":"This is a title. title"}}
。 - Robbie Lewis