我尝试在我的服务器上向我的Android设备发送通知。我使用Firebase Cloud Messaging发送通知。我可以通过Firebase控制台发送通知,然后在手机上收到消息。但是,我尝试通过我的服务器发送消息,但该消息尚未完成。
我执行以下代码时收到以下响应:
" {\" MESSAGE_ID \":58934758934758936346437}"
当我们在此处查看Firebase文档Firebase Documentation时,我们可以看到收到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();
}
}
答案 0 :(得分:4)
检查从服务器发送的消息格式。
例如,这里是与上面相同的IM应用程序中的JSON格式的消息,其中信息封装在数据密钥中,客户端应用程序应该解释内容:
{
"to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"data" : {
"Nick" : "Mario",
"body" : "great match!",
"Room" : "PortugalVSDenmark"
},
}
如需更多查询,请查看此文档: FCM Docs
答案 1 :(得分:3)
您的有效负载 不包含任何消息 。
String message = "{\"to\": \"/topics/" + topic + "\"}";
它只包含收件人(to
),但没有实际的消息。发送notification
或data
消息有效负载。像这样:
String message = "{\"to\": \"/topics/" + topic + "\",
\"notification\" : {
\"title\" : \"sample title\",
\"body\" : \"sample body\"
}
}";
请参阅notification
和data
here的可用参数,并注意这两个消息有效负载的处理方式不同。有关详细信息,请参阅Receiving Messages in Android文档。