当前位置: 首页 > 知识库问答 >
问题:

Firebase Java服务器向所有设备发送推送通知

龚奇逸
2023-03-14

我正在尝试用新的Firebase服务向我的android设备发送推送通知。我注册并安装了一个应用程序,同时我把接收通知所需的所有代码都放在了android应用程序中。通过Firebase控制台,我可以向我的应用程序发送一个通知,然后它就会被接收并显示出来。现在我想编写一个java独立服务器,向所有设备发送通知。这是我当前的代码:

final String apiKey = "I added my key here";
URL url = new URL("https://fcm.googleapis.com/fcm/send");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Authorization", "key=" + apiKey);

conn.setDoOutput(true);

String input = "{\"notification\" : {\"title\" : \"Test\"}, \"to\":\"test\"}";

OutputStream os = conn.getOutputStream();
os.write(input.getBytes());
os.flush();
os.close();

int responseCode = conn.getResponseCode();
System.out.println("\nSending 'POST' request to URL : " + url);
System.out.println("Post parameters : " + input);
System.out.println("Response Code : " + responseCode);

BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();

while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();

// print result
System.out.println(response.toString());

这是我从他们的服务器上得到的结果:

{"multicast_id":6602141464107786356,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"InvalidRegistration"}]}

不幸的是,简单地移除“to”标记并不起作用,我得到的是返回的代码400。我读到我需要注册设备,将设备id发送到服务器并将其保存在那里,然后循环服务器上所有注册的设备以发送消息。难道没有更简单的方法,只向所有设备发送一条消息,就像在控制台中一样吗?

真的很感谢你的帮助,因为我一整天都在努力使这个工作=(

问候你,达斯汀

共有1个答案

糜征
2023-03-14

我不相信这是可能的。相反,我建议将所有设备注册到同一个主题,然后您可以一次发送所有设备的消息。以下是有关此方面的帮助文档:

从服务器发送主题消息

 类似资料:
  • 我正在制作一个工作应用程序,目的是为Android Studio中使用Java的用户提供一个门户。我已经设置了Firebase云消息传递、身份验证和一个实时数据库来存储用户。我可以很容易地从云控制台发出推送通知,但我在想,有没有一种方法可以在不使用控制台的情况下,将推送通知发送到所有设备? 我的理由是,我不希望有人在人力资源意外删除一个用户,但我希望他们能够发送推送通知的情况,如关闭。有没有办法做

  • 我需要使用< code>aws-sns-javascript向多个设备发送推送通知。当我创建createPlatformEndpoint时,我可以只添加一个设备令牌,但我需要向多个设备发送通知,如一个数组令牌 创建平台应用程序 创建平台终端节点 向Amazon SNS主题发送消息

  • 问题内容: 我正在尝试使用新的Firebase服务向我的android设备发送推送通知。我注册并设置了一个应用程序,然后将接收通知所需的所有代码都放入了android应用程序中。通过Firebase控制台,我可以将通知发送到我的应用程序,它会被接收并显示。现在,我想编写一个Java独立服务器,向所有设备发送通知。这是我当前的代码: 这就是我从他们的服务器找回来的结果: 不幸的是,简单地删除“ to

  • 我需要使用< code>aws-sdk-go lib通过设备令牌数组向多个设备发送SNS推送通知。 目前我正在使用以下步骤向SNS发送推送消息: 创建endpoint: 将消息发送到endpoint: 我还没有见过一种方法,只使用一个请求就可以将一个推送消息发送到多个设备。可能吗? 像这个例子来说明:

  • 当我需要使用Firebase向特定设备发送通知时,这就是JSON结构。那么,我应该如何修改它以向所有设备或两个选定设备发送相同的通知呢? android中使用Firebase向所有设备发送推送通知的JSON结构是什么?

  • 我有一个包含用户名数据库的服务器。我还有一个Android应用程序,用户可以在服务器数据库中注册自己的用户名,也可以在服务器的GCM部分注册设备。 我目前正在服务器代码中使用GCM演示,它将多播一个推送通知到每个注册的设备。但是,我希望它能够将推送通知发送给某些用户,而不是每个注册的GCM设备。 我的第一个想法是将数据库中的每个用户与其GCM注册表关联起来。这样行吗?我读过一些关于regID更改或