我需要将 FCM 推送通知发送到多个设备。我不能为此使用“主题”,因为我需要将其发送到特定的和多个令牌。
在旧方法中,我使用“register_ids”来实现此目的,但 Google 在 2023 年 6 月 20 日宣布,旧方法将于 2024 年 6 月 20 日结束。在新的 v1 API 中,不再支持“register_ids”。
我需要的是一个使用 cURL 和 PHP 向多个令牌发送推送通知的解决方案。
在这个网站上,有人问了和我类似的问题:
@Frank van Puffelen 说:
在这个新的版本化 API 中,您可以通过向常规端点发送多部分请求来发送多条消息。此过程在有关发送批量消息的部分中有完整记录,并且大多数可用的管理 SDK 也支持该过程. ”
Frank von Puffelen 提供了一个链接:
https://firebase.google.com/docs/cloud-messaging/send-message#send-a-batch-of-messages
然而,现在该网站上有一条说明:
本节中描述的批量发送方法已于 2023 年 6 月 21 日弃用,并将于 2024 年 6 月删除。相反,请通过实现您自己的批量发送逻辑、迭代收件人列表和发送到每个收件人的令牌。对于 Admin SDK 方法,请确保更新到下一个主要版本。 ”
在该网站的更上方,有一个标题为“向多个设备发送消息”的部分。但是,本节仅提供 Node.js、Java、Python、Go、C# 和 REST 的解决方案。我需要 PHP 和 cURL 的解决方案。
到目前为止我已经尝试过如下,但由于架构错误而无法正常工作:
$tokens = array(
"token 1", …Run Code Online (Sandbox Code Playgroud) 我正在编写 ac# 服务,它将允许我使用 FCM 发送推送通知。现在,一切正常,但我想使用 FCM 发送批量推送通知。
我希望能够一次向多个设备发送相同的消息。当前取一个注册令牌,然后经过整个过程,然后转到下一个。但是,如果我必须一次向多个号码发送推送通知,这将毫无用处。我最好的选择应该是什么?
代码
public String SendPushNotification(string regtoken)
{
try
{
string applicationID = "#############3";
string senderId = "##########";
string deviceId = regtoken;
WebRequest tRequest = WebRequest.Create("https://fcm.googleapis.com/fcm/send");
tRequest.Method = "post";
tRequest.ContentType = "application/json";
var data = new
{
to = deviceId,
notification = new
{
body = message,
title = "",
sound = ""
}
};
var serializer = new JavaScriptSerializer();
var json = serializer.Serialize(data);
Byte[] byteArray = Encoding.UTF8.GetBytes(json);
tRequest.Headers.Add(string.Format("Authorization: key={0}", applicationID));
tRequest.Headers.Add(string.Format("Sender: id={0}", senderId)); …Run Code Online (Sandbox Code Playgroud)