在 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 开发)中获取特定子项的键值?