De acordo com esta documentação, existe o campo data
que estou tentando usar:
$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);
Isto é o que $data
contém:
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)
}
E recebo este erro:
{ "error": { "code": 400, "message": "Valor inválido em 'message.data[5].value' (TYPE_STRING), 20202\nValor inválido em 'message.data[9].value' (TYPE_STRING), 7\nValor inválido em '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": "Valor inválido em 'message.data[5].value' (TYPE_STRING), 20202" }, { "field": "message.data[9].value", "description": "Valor inválido em 'message.data[9].value' (TYPE_STRING), 7" }, { "field": "message.data[10].value", "description": "Valor inválido em 'message.data[10].value' (TYPE_STRING), 1" } ] } ] } }
Eu conseguia enviar dados assim com a API antiga, mas como fazer isso com a atual?
Solução:
Para resolver problemas com o envio de dados no Firebase Cloud Messaging, você precisa converter todos os valores na chave de dados para strings . Isso evita erros de “Valor inválido” ao enviar os dados. Veja como fazer isso:
antes de $fields adicione isto para converter todos os seus dados em string: