我正在尝试将服务器上的通知发送到我的安卓设备。我正在使用 Firebase 云消息传递来发送通知。我可以通过 Firebase 控制台发送通知,并在手机上收到消息。但是,我正在尝试通过我的服务器发送消息,但尚未正常工作。
当我执行下面的代码时,我得到以下响应:
"{\"message_id\":58934758934758936346437}">
当我们在这里查看Firebase的文档时,我们可以看到收到message_id意味着消息已成功发送。不过,我的手机没有收到它。
我确实为该应用程序订阅了正确的主题。
我正在运行以下代码:
private void test(String topic) {
try {
//Setup request
URL url = new URL("https://fcm.googleapis.com/fcm/send");
HttpURLConnection hc = (HttpURLConnection) url.openConnection();
hc.setDoOutput(true);
hc.setDoInput(true);
//Set request params
String message = "{"to": "/topics/" + topic + ""}";
hc.addRequestProperty("Content-Type", "application/json");
hc.addRequestProperty("Authorization", "key=SECRET");
DataOutputStream dos = new DataOutputStream(hc.getOutputStream());
dos.writeBytes(message);
dos.close();
//Get Response
InputStream is = hc.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
StringBuilder response = new StringBuilder(); // or StringBuffer if Java version 5+
String line;
while ((line = rd.readLine()) != null) {
response.append(line);
}
rd.close();
label.setText("RESPONSE: " + response.toString());
} catch (Exception ex) {
label.setText("Er ging iets mis");
ex.printStackTrace();
}
}
您的有效负载不包含任何消息。
String message = "{"to": "/topics/" + topic + ""}";
它只包含收件人(to
(,但没有实际的消息。发送notification
或data
消息负载。像这样:
String message = "{"to": "/topics/" + topic + "",
"notification" : {
"title" : "sample title",
"body" : "sample body"
}
}";
请参阅此处的 notification
和data
的可用参数,并注意这两个消息负载的处理方式不同。有关更多详细信息,请参阅在 Android 中接收消息文档。