Отправка данных с помощью 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 в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Решение:

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

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

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

Другие вопросы по теме