Согласно этой документации, есть поле data
, которое я пытаюсь использовать:
$fields = [
'message' => [
'token' => $deviceToken,
'notification' => [
'title' => $notifTitle,
'body' => $notifDesc
],
'data' => $data
]
];
$ch = curl_init();
curl_setopt( $ch,CURLOPT_URL, 'https://fcm.googleapis.com/v1/projects/bla/messages: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) . '<br><br>';
print($result);
Вот что содержит $data
:
array(11) {
["title"]=>
string(21) "Antwort auf Kommentar"
["msg"]=>
string(29) "Cornholio hat dir geantwortet"
["image"]=>
string(12) "30321555.jpg"
["notifType"]=>
string(5) "reply"
["channelID"]=>
string(21) "channel_reply_comment"
["memeID"]=>
int(20202)
["memeTitle"]=>
string(10) "meme title"
["meme"]=>
string(19) "TrlNO38.mp4"
["size"]=>
string(7) "460|818"
["commentCount"]=>
int(7)
["mentioned"]=>
int(1)
}
И я получаю эту ошибку:
{ "error": { "code": 400, "message": "Недопустимое значение в 'message.data[5].value' (TYPE_STRING), 20202\nНеверное значение в 'message.data[9].value' ( TYPE_STRING), 7\nНеверное значение в 'message.data[10].value' (TYPE_STRING), 1", "status": "INVALID_ARGUMENT", "details": [ { "@type": "type.googleapis.com /google.rpc.BadRequest", "fieldViolations": [ { "field": "message.data[5].value", "description": "Недопустимое значение в 'message.data[5].value' (TYPE_STRING) , 20202" }, { "field": "message.data[9].value", "description": "Неверное значение в 'message.data[9].value' (TYPE_STRING), 7" }, { "field ": "message.data[10].value", "description": "Недопустимое значение в 'message.data[10].value' (TYPE_STRING), 1" } ] } ] } }
Мне удалось отправить такие данные со старым API, но как это сделать с текущим?
Чтобы решить проблемы с отправкой данных в Firebase Cloud Messaging, вам необходимо преобразовать все значения ключа данных в строки. Это позволяет избежать ошибок «Недопустимое значение» при отправке данных. Вот как это сделать:
прежде чем $fields добавьте это, чтобы преобразовать все данные в строку:
foreach ($data as $key => $value) {
$data[$key] = (string) $value;
}