提问人:Mahi 提问时间:7/20/2017 最后编辑:Mahi 更新时间:7/20/2017 访问量:2128
具有 firebase 连接超时的 Java 服务器端连接
Java server side connection with firebase connection timeout
问:
我正在尝试连接到 firebase 以向 android 应用程序发送推送通知。 我在 Java Server 端编写了以下代码。但是我总是收到连接超时异常。
final String apiKey="AAAAeEpqP-w:APA91bFulyT23Km-onTNr_q5yEz4uoOaM8KdE4LMyIoz6kWlk3pJSHirDJBSiqESRXKiGa-Z_tBfpXA6naaaTXxcFFxAnaSkMTPVVOMswyJ0bhhdpwlo-92HXgxRMsHV6Y8bNaHX7tMd";
int i=0;
try {
URL url = new URL("https://fcm.googleapis.com/fcm/send");
HttpsURLConnection conn = (HttpsURLConnection ) url.openConnection();
System.out.println("after connection open");
//conn.setDoInput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Authorization", "key=" + apiKey);
conn.setDoOutput(true);
JSONObject json = new JSONObject();
json.put("to", "device-token");
JSONObject info = new JSONObject();
info.put("title", "notification title"); // Notification title
info.put("body", "message body");
json.put("notification", info);
OutputStreamWriter wr = new OutputStreamWriter(
conn.getOutputStream());
wr.write(json.toString());
wr.flush();
BufferedReader br = new BufferedReader(new InputStreamReader(
(conn.getInputStream())));
String output;
System.out.println("Output from Server .... \n");
while ((output = br.readLine()) != null) {
System.out.println(output);
}
// result = CommonConstants.SUCCESS;
System.out.println("after closed out put stream");
int responseCode = conn.getResponseCode();
// System.out.println("Post parameters : " + input);
System.out.println("Response Code : " + responseCode);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch(Exception e){
e.printStackTrace();
}
}
它始终显示会话超时错误。 这是向应用程序发送通知的正确方法吗? 任何帮助都是值得赞赏的。
编辑:- 我已经从 rest 客户端调用了带有设备令牌和其他东西的相同 url,并且效果很好。我的应用中收到了一条通知。但是当我通过 Java 代码发送它时,它显示连接超时。
答:
0赞
The Riddler
7/20/2017
#1
以下是 Firebase 的官方文档,可帮助您设置服务器。https://firebase.google.com/docs/cloud-messaging/server
在您的代码中,我注意到并假设您仅将其用作示例的占位符。如果没有,则需要在请求中发送类似 .json.put("to", "device-token");
{ "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..." }
评论
0赞
Mahi
7/22/2017
我已经按照上面提到的文档进行了操作,现在我已经在我的Andorid端java代码中添加了上面提到的代码。现在有时我会收到通知,但并非总是如此。我正在开发模式下检查它。现在我的消息接收代码也被调用,我得到了一个日志跟踪,我已将其放入消息接收中。但是通知不是通过电话来的。
下一个:在不同用户上创建地理围栏
评论