我正在尝试通过Firebase发送通知,但它无法正常工作。我只想向所有注册用户发送存储在MySQL中的Firebase ID。
修改:
以下是代码。
<?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);
?>
它工作正常,但它仅用于发送给单个用户。我需要的是发送给多个用户。
答案 0 :(得分:0)
有三种方法可以发送到多个设备。使用registration_ids
参数代替to
。请注意,每个此参数最多可以有1000个注册令牌。如果您有超过1000个注册令牌,那么您必须执行批量请求(每个请求1000个)。
(从我在可能的重复帖子中的回答)
根据您的使用情况,您可以使用Topic Messaging或Device Group Messaging。
主题消息
Firebase云消息传递(FCM)主题消息传递允许您向已选择加入特定主题的多个设备发送消息。基于发布/订阅模型,主题消息传递支持每个应用程序的无限订阅。您可以根据需要撰写主题消息,Firebase可以处理消息路由并将消息可靠地传递给正确的设备。
例如,本地天气预报应用的用户可以选择加入恶劣天气警报&#34;主题并接收威胁指定区域的风暴通知。体育应用的用户可以为他们喜欢的球队订阅实时比赛分数的自动更新。开发人员可以选择与正则表达式匹配的任何主题名称:
"/topics/[a-zA-Z0-9-_.~%]+"
。
设备组消息
通过设备组消息传递,应用服务器可以将单个消息发送到在属于某个组的设备上运行的应用的多个实例。 通常,&#34; group&#34;是指属于单个用户的一组不同设备。组中的所有设备共享一个公共通知密钥,该密钥是FCM用于将消息扇出到组中所有设备的标记。
设备组消息传递使组中的每个应用程序实例都能够反映最新的消息传递状态。除了向下游发送消息到通知密钥之外,您还可以启用设备以将上游消息发送到设备组。您可以将设备组消息传递与XMPP或HTTP连接服务器一起使用。发送到iOS设备时,数据有效负载的限制为2KB,其他平台的限制为4KB。
notification_key
允许的最大成员数为20。
有关详细信息,请查看Sending to Multiple Devices in FCM文档。