Java servlet成功连接到FCM,但Android应用程序未收到任何通知
我可以使用另一个第三方服务器向我的Android应用程序发送通知,我也可以从firebase控制台发送通知,但是这个servlet(下面的代码)不发送通知,尽管HTTP POST to FCM会成功返回200条消息 我认为servlet不包含创建通知的代码,我不确定在哪里确切创建此代码。我想听听你的意见Java servlet成功连接到FCM,但Android应用程序未收到任何通知,java,android,firebase-cloud-messaging,Java,Android,Firebase Cloud Messaging,我可以使用另一个第三方服务器向我的Android应用程序发送通知,我也可以从firebase控制台发送通知,但是这个servlet(下面的代码)不发送通知,尽管HTTP POST to FCM会成功返回200条消息 我认为servlet不包含创建通知的代码,我不确定在哪里确切创建此代码。我想听听你的意见 @WebServlet("/NPS_Servlet") public class NPS_Servlet extends HttpServlet { private static fin
@WebServlet("/NPS_Servlet")
public class NPS_Servlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static HashMap<String, Confirmation> TFA = new HashMap<String, Confirmation>();
/**
* @see HttpServlet#HttpServlet()
*/
public NPS_Servlet() {
super();
System.out.println("Servlet gestart");
// TODO Auto-generated constructor stub
}
/**
* @see Servlet#init(ServletConfig)
*/
public void init(ServletConfig config) throws ServletException {
// TODO Auto-generated method stub
NPS_Servlet Servlet = new NPS_Servlet();
Servlet.processAuthenticate(null, null);
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
processRequest(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
private void processRequest(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
InputStreamReader isr_Json_Request = null;
isr_Json_Request = new InputStreamReader(request.getInputStream());
ByteArrayOutputStream baos_Json_Request = new ByteArrayOutputStream();
int byteRead = 0;
do {
byteRead = 0;
byteRead = isr_Json_Request.read();
if (byteRead >= 0) {
baos_Json_Request.write(byteRead);
}
} while (byteRead >= 0);
String s_Json_Request = baos_Json_Request.toString();
String s_RequestURI = request.getRequestURI();
String s_ContextPath = request.getContextPath();
String s_Request_Prefix = s_ContextPath;
String s_Request = s_RequestURI.substring(s_Request_Prefix.length(), s_RequestURI.length());
if (! s_Request.startsWith("/")) {
s_Request = "/" + s_Request;
}
System.out.println("Request: " + s_Request);
String s_Response = "";
if (s_Request.equals("/TFA_Servlet_Rami_FinalTake/authenticate")) {
s_Response = handleAuthenticate(s_Json_Request);
}
else if (s_Request.equals("/TFA_Servlet_Rami_FinalTake/confirm")) {
s_Response = handleConfirm(s_Json_Request);
}
System.out.println("Response: " + s_Response);
response.getWriter().print(s_Response);
}
private String handleAuthenticate(String s_Json_Request) {
String s_Json_Response = "";
Gson _Gson = new Gson();
Message json_Request = _Gson.fromJson(s_Json_Request,
Message.class);
if (json_Request != null) {
if (json_Request.getFunction().equals("authenticate")) {
Message json_Response;
try {
json_Response = (Message) json_Request.clone();
processAuthenticate(json_Request, json_Response);
s_Json_Response = _Gson.toJson(json_Response);
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
}
}
if (s_Json_Response.isEmpty()) {
s_Json_Response = "{ \"result\":1 }";
}
return s_Json_Response;
}
private void processAuthenticate(Message json_Request, Message json_Response){
String s_RegistrationId = "AAAA-NCJai&*******9n&&&****f3gRYjH7*******Nh***********PsedxBhKsrFCuF";
String s_ApiKey = "AIz************EM";
String uniqueID = UUID.randomUUID().toString();;
String s_Data = "";
try {
s_Data = "{" +
"\"data\": {" +
"\"url\": \"http://" + InetAddress.getLocalHost().getHostAddress() + ":8080/TFA_Servlet/confirm\"," +
"\"id\": \"" + uniqueID + "\"" +
"}," +
"\"to\": \"" + s_RegistrationId + "\"" +
"}";
} catch (UnknownHostException e1) {
e1.printStackTrace();
}
try {
URL _URL = new URL("https://fcm.googleapis.com/fcm/send");
HttpURLConnection _HttpURLConnection = (HttpURLConnection) _URL.openConnection();
_HttpURLConnection.setRequestMethod("POST");
_HttpURLConnection.setRequestProperty("Content-Type", "application/json");
_HttpURLConnection.setRequestProperty("Authorization", "key=" + s_RegistrationId);
_HttpURLConnection.setDoOutput(true);
DataOutputStream _DataOutputStream = new DataOutputStream(_HttpURLConnection.getOutputStream());
_DataOutputStream.writeBytes(s_Data);
_DataOutputStream.flush();
_DataOutputStream.close();
int responseCode = _HttpURLConnection.getResponseCode();
System.out.println("\nSending 'POST' request to URL : " + _URL);
System.out.println("Response Code : " + responseCode);
BufferedReader _BufferedReader = new BufferedReader(
new InputStreamReader(_HttpURLConnection.getInputStream()));
String inputLine;
StringBuffer Response = new StringBuffer();
while ((inputLine = _BufferedReader.readLine()) != null) {
Response.append(inputLine);
}
_BufferedReader.close();
if (responseCode == 200) {
System.out.println("succes");
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private String handleConfirm(String s_Json_Request) {
String s_Json_Response = "";
Gson _Gson = new Gson();
Message json_Request = _Gson.fromJson(s_Json_Request,
Message.class);
if (json_Request != null) {
if (json_Request.getFunction().equals("confirm")) {
Message json_Response;
try {
json_Response = (Message) json_Request.clone();
processConfirm(json_Request, json_Response);
s_Json_Response = _Gson.toJson(json_Response);
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
}
}
if (s_Json_Response.isEmpty()) {
s_Json_Response = "{ \"result\":1 }";
}
return s_Json_Response;
}
private void processConfirm(Message json_Request, Message json_Response) {
String s_NotificationId = json_Request.getNotificationId();
String s_Confirmation = json_Request.getConfirmation();
Confirmation _Confirmation = null;
synchronized (TFA) {
_Confirmation = TFA.get(s_NotificationId);
if (TFA != null) {
_Confirmation.setReplied(true);
if (s_Confirmation.equals("approved")) {
_Confirmation.setConfirmed(true);
}
json_Response.setResult(0);
TFA.notifyAll();
}
else {
json_Response.setResult(1);
}
}
}
}
***************************响应部分********************************
Sending 'POST' request to URL : https://fcm.googleapis.com/fcm/send
Response Code : 200
succes
那么,你的要求和回应是什么呢?我在最上面的帖子中加了它。发布整个回应。响应代码可能为200,但主体可能指示故障状态和FCM错误。例如,服务器不可用或密钥过期/无效。
Sending 'POST' request to URL : https://fcm.googleapis.com/fcm/send
Response Code : 200
succes