在 Java 中向 Firebase 中的特定主题发送通知

Posted

技术标签:

【中文标题】在 Java 中向 Firebase 中的特定主题发送通知【英文标题】:Send Notification to Specific Topic in Firebase in Java 【发布时间】:2017-06-12 06:57:37 【问题描述】:

您好,我正在尝试从 java 代码发送 firebase 消息,我已经从控制台及其工作中完成了此操作,并且我在我的设备上收到了通知,并且我已经通过 java 通过令牌将消息发送到特定设备它也可以正常工作,而且我无法将主题发送到主题,我没有收到任何错误,服务器端也没有异常,但设备上没有收到任何内容。 这是我用来向 firebase 发送请求的代码:

 String authKey = AUTH_KEY_FCM;   // You FCM AUTH key
    String FMCurl = API_URL_FCM;

    URL url = new URL(FMCurl);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();

    conn.setUseCaches(false);
    conn.setDoInput(true);
    conn.setDoOutput(true);

    conn.setRequestMethod("POST");
    conn.setRequestProperty("Authorization","key="+authKey);
    conn.setRequestProperty("Content-Type","application/json");

    JSONObject json = new JSONObject();
    json.put("to","/topics/all");
    JSONObject data = new JSONObject();
    data.put("message",title);
    json.put("data", data);

    OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
    wr.write(json.toString());
    wr.flush();
    conn.getInputStream();

您可以看到 Json 中的内部对象是带有参数“消息”的数据,就像 google docs 上提供的那样,我也尝试将其替换为带有“正文”和“标题”的“通知”作为其工作用于通过令牌向特定设备发送消息,但同样不适用于主题。 再一次,它不需要提到 android 端的所有东西都在工作,因为它可以通过 firebase 控制台发送主题消息

更新:此方法有效,我必须处理它才能在收到消息时实际显示通知。

提前感谢您的帮助。

【问题讨论】:

嗨,马汉。您确定要向其发送消息的设备订阅了名为all 的主题吗? (例如subscribeToTopic("all"))? @ALi 实际上没有它的“全部”,我在双方(服务器、应用程序)都使用“全部” 您是否调试并检查了 FirebaseMessagingService 类中的 onMessageReceived 方法? 奇怪。您能否尝试使用简单的请求发送消息(使用 Postman 或 cURL 的示例可在 here 找到)并查看是否相同? 您必须处理这些通知,因为它有消息和数据。快乐编码 【参考方案1】:

此方法现在正在工作,并且必须处理它以在设备上收到消息时实际显示通知。

【讨论】:

以上是关于在 Java 中向 Firebase 中的特定主题发送通知的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Firebase 实时数据库(Android 开发)中获取特定子项的键值?

批量用户订阅 Firebase 中的主题时出现权限被拒绝错误

当一批用户订阅Firebase中的主题时,权限被拒绝错误

如何在文档字段而不是集合字段中向Firebase添加数据?

在 Django 中向所有用户公开主题

向主题发送消息 - Firebase iOS