Добрый день.
На сайте X реализовал пуш-уведомления средствами firebase. Инициализация, получения токена - всё работает. Однако, с отправкой пушей и их доставкой возникли проблемы.
Скрипт отправки выглядит примерно так:
$notification = [
'title' => 'Title',
'body' => 'Text',
'click_action' => 'https://site.ru',
];
$ids = [
// токены
];
$key = '###key###';
$headers = array(
"Content-Type: application/json",
"Authorization: key={$key}"
);
$postData = json_encode(array(
'notification' => $notification,
'registration_ids' => $ids,
"priority" => "high"
));
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_URL, "https://fcm.googleapis.com/fcm/send");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
$response = curl_exec($ch);
curl_close($ch);
print_r($response);
Отправка пуша каждый раз даёт разный результат.
1) Бывало, что сразу после получения токена первый пуш на него отправлялся корректно, все последующие - не доставлялись.
2) Бывает, что сообщения вообще ни в какую не доставляется
3) Бывает, что сообщения доставляются каждый раз без проблем.
4) Бывает, что из 10 сообщений доставляются 1-2
При этом всём, firebase возвращает ответ без ошибок, то есть сообщения уходят, но до клиента не доставляются.
И на различных устройствах исход разный.
Ещё момент: если пуш не доставляется, я пробовал взять его токен и отправить на него пуш через онлайн-сервис (их много разных). Итог - через них всё (чаще всего) доставляется без проблем.
Собственно, вопрос: что я делаю не так?