Поле & quot; to & quot; должна быть строкой JSON [Firebase]

Я пытаюсь отправить уведомление с помощью задания cron. Я мигрировал из GCM в FCM. На моей стороне сервера я изменился https://android.googleapis.com/gcm/send to https://fcm.googleapis.com/fcm/send а также обновлены о том, как запросить изменение данных registration_ids в to, Проверка пройденного json — это действительный json, но у меня ошибка Field "to" must be a JSON string, Есть ли способ решить это?

Вот мой код

function sendNotificationFCM($apiKey, $registrationIDs, $messageText,$id) {$headers = array(
'Content-Type:application/json',
'Authorization:key=' . $apiKey
);

$message = array(
'to' => $registrationIDs,
'data' => array(
"message" => $messageText,
"id" => $id,
),
);$ch = curl_init();

curl_setopt_array($ch, array(
CURLOPT_URL => 'https://fcm.googleapis.com/fcm/send',
CURLOPT_HTTPHEADER => $headers,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => json_encode($message)
));

$response = curl_exec($ch);
curl_close($ch);

return $response;
}

4

Решение

Попробуйте явно конвертировать $registrationIDs в string,

$message = array(
'to' => (string)$registrationIDs,
'data' => array(
"message" => $messageText,
"id" => $id,
),
);

Отредактированный ответ

'to' параметр требует string — который является получателем сообщения.

$registrationIDs может быть передан отдельный параметр (как строковый массив) 'registration_ids'

Измените свой код на что-то вроде этого:

$recipient = "YOUR_MESSAGE_RECIPIENT";

$message = array(
'to' => $recipient,
'registration_ids' => $registrationIDs,
'data' => array(
"message" => $messageText,
"id" => $id,
),
);

куда $recipient является

регистрационный токен, ключ уведомления или тема.

Порекомендуйте это:
HTTP-протокол Firebase Cloud Messaging

9

Другие решения

Попробуйте сделать в качестве строки:

Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA

{
"to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"data" : {
...
},
}
1

У меня была похожая проблема. Оказывается, когда я получил регистрационный токен из моей базы данных Firebase (используя эту PHP-клиент Firebase), он был возвращен с двойными кавычками в начале и в конце токена. Поэтому мне пришлось удалить первый и последний символы из токена, прежде чем я смог его использовать. Код ниже решил мою проблему

substr($registrationToken, 1, -1)
0
По вопросам рекламы [email protected]