Отправка данных с помощью push-уведомления на Android с помощью PHP

Согласно этой документации, есть поле 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, но как это сделать с текущим?

🤔 А знаете ли вы, что...
PHP поддерживает разнообразные базы данных, включая MySQL, PostgreSQL и SQLite.


1
54
1

Ответ:

Решено

Решение:

Чтобы решить проблемы с отправкой данных в Firebase Cloud Messaging, вам необходимо преобразовать все значения ключа данных в строки. Это позволяет избежать ошибок «Недопустимое значение» при отправке данных. Вот как это сделать:

прежде чем $fields добавьте это, чтобы преобразовать все данные в строку:

foreach ($data as $key => $value) {
    $data[$key] = (string) $value;
}