Я пытаюсь отправить уведомления через Firebase, но это не работает. Я просто хочу отправить всем своим зарегистрированным пользователям их идентификаторы Firebase, хранящиеся в MySQL.
РЕДАКТИРОВАТЬ:
Вот код ниже.
<?php $message="test message"; $title="Test Title";
$path_to_fcm='https://fcm.googleapis.com/fcm/send';
$server_key="AIzaSyxxxxxxxxxxxxxxxxXxxxsk";
$con = mysqli_connect('localhost','username','passs','db');
$email ="hii"; $sql = "SELECT * FROM users WHERE email = '$email'";
$res = mysqli_fetch_array(mysqli_query($con,$sql)); $key=
$res['token']; $headers=array(
'Authorization:key='.$server_key,
'Content-Type:application/json'
); $fields=array('to'=>$key,'notification'=>array('title'=>$title,'body'=>$message));
$payload=json_encode($fields); $curl_session=curl_init(); curl_setopt($curl_session,CURLOPT_URL,$path_to_fcm);
curl_setopt($curl_session,CURLOPT_POST,true);
curl_setopt($curl_session,CURLOPT_HTTPHEADER,$headers);
curl_setopt($curl_session,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl_session,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($curl_session,CURLOPT_IPRESOLVE,CURL_IPRESOLVE_V4);
curl_setopt($curl_session,CURLOPT_POSTFIELDS,$payload);
$result=curl_exec($curl_session); curl_close($curl_session);
mysqli_close($con);
?>
Работает нормально, но только для отправки одному пользователю. Что мне нужно для отправки нескольким пользователям.
Существует три способа отправки на несколько устройств. Использовать registration_ids
параметр вместо to
, Обратите внимание, что для этого параметра существует максимум 1000 регистрационных токенов. Если у вас есть более 1000 регистрационных токенов, вы должны выполнять пакетные запросы (1000 на каждый запрос).
(А так же из моего ответа в возможном дублирующем посте)
В зависимости от вашего варианта использования вы можете использовать Тема сообщений или же Обмен сообщениями группы устройств.
Тема сообщений
Тема сообщений Firebase Cloud Messaging (FCM) позволяет вам отправить сообщение нескольким устройствам, которые выбрали определенную тему. Основываясь на модели публикации / подписки, обмен сообщениями в темах поддерживает неограниченное количество подписок для каждого приложения. Вы создаете тематические сообщения по мере необходимости, а Firebase обрабатывает маршрутизацию сообщений и надежно доставляет сообщение на нужные устройства.
Например, пользователи локального приложения для прогнозирования погоды могут выбрать тему «Предупреждения о суровой погоде» и получать уведомления о штормах, угрожающих указанным районам. Пользователи спортивного приложения могут подписаться на автоматическое обновление результатов матчей своих любимых команд. Разработчики могут выбрать любое название темы, соответствующее регулярному выражению:
"/topics/[a-zA-Z0-9-_.~%]+"
,
Обмен сообщениями группы устройств
С помощью обмена сообщениями группы устройств серверы приложений могут отправлять одно сообщение нескольким экземплярам приложения, работающего на устройствах, принадлежащих к группе. Как правило, «группа» относится к набору различных устройств, принадлежащих одному пользователю.. Все устройства в группе имеют общий ключ уведомления, который является токеном, который FCM использует для разветвления сообщений на все устройства в группе.
Обмен сообщениями между группами устройств позволяет каждому экземпляру приложения в группе отображать последнее состояние обмена сообщениями. Помимо отправки сообщений по нисходящей линии на ключ уведомления, вы можете разрешить устройствам отправлять восходящие сообщения группе устройств. Вы можете использовать обмен сообщениями группы устройств с сервером соединений XMPP или HTTP. Предел полезной нагрузки данных составляет 2 КБ при отправке на устройства iOS и 4 КБ для других платформ.
Максимальное количество членов допускается для
notification_key
20
Для более подробной информации, вы можете проверить Отправка на несколько устройств в FCM Docs.
Других решений пока нет …