Я пытаюсь отправить уведомление с помощью задания 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;
}
Попробуйте явно конвертировать $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
Попробуйте сделать в качестве строки:
Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA
{
"to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"data" : {
...
},
}
У меня была похожая проблема. Оказывается, когда я получил регистрационный токен из моей базы данных Firebase (используя эту PHP-клиент Firebase), он был возвращен с двойными кавычками в начале и в конце токена. Поэтому мне пришлось удалить первый и последний символы из токена, прежде чем я смог его использовать. Код ниже решил мою проблему
substr($registrationToken, 1, -1)