根据此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)
}
我收到此错误:
{ “错误”:{ “代码”:400, “消息”:“'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“,”详细信息“:[{ “@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 发送这样的数据,但是如何使用当前的 API 来发送这样的数据呢?
解决方案:
要解决在 Firebase Cloud Messaging 中发送数据的问题,您需要将数据键中的所有值转换为字符串。这样可以避免在发送数据时出现“无效值”错误。操作方法如下:
在$fields之前添加以下内容将所有数据转换为字符串: