我的问题是我没有收到服务器发送的所有通知。
我确定我可以正确发送所有通知。
我的代码
String path = "~~~~path";
String MESSAGING_SCOPE = "https://www.googleapis.com/auth/firebase.messaging";
String[] SCOPES = { MESSAGING_SCOPE };
try {
GoogleCredential googleCredential = GoogleCredential.fromStream(
new FileInputStream(path)).createScoped(
Arrays.asList(SCOPES));
googleCredential.refreshToken();
HttpHeaders headers = new HttpHeaders();
headers.add("content-type", MediaType.APPLICATION_JSON_VALUE);
headers.add("Authorization",
"Bearer " + googleCredential.getAccessToken());
for (int i = 0; i < tokenList.size(); i++) {
JSONObject notification = new JSONObject();
notification.put("body", vo.getUserName() + " " + vo.getSelphone());
notification.put("title", vo.getConame());
JSONObject message = new JSONObject();
message.put("token", tokenList.get(i).getPushid());
message.put("notification", notification);
JSONObject jsonParams = new JSONObject();
jsonParams.put("message", message);
HttpEntity<JSONObject> httpEntity = new HttpEntity<JSONObject>(
jsonParams, headers);
RestTemplate rt = new RestTemplate();
ResponseEntity<String> res = null;
res = rt.exchange("https://fcm.googleapis.com/v1/projects/******/messages:send", HttpMethod.POST, httpEntity, String.class);
System.out.println("1 : " + res.getStatusCode().toString());
System.out.println("2 : " + res.getHeaders().toString());
System.out.println("3 : " + res.getBody().toString());
if (res.getStatusCode() != HttpStatus.OK) {
System.out.println("FCM-Exception");
System.out.println(res.getStatusCode().toString());
System.out.println(res.getHeaders().toString());
System.out.println(res.getBody().toString());
} else {
System.out.println("4 : " + res.getStatusCode().toString());
System.out.println(res.getStatusCode().toString());
System.out.println(res.getHeaders().toString());
System.out.println(res.getBody().toLowerCase());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
错误消息
org.springframework.web.client.HttpClientErrorException: 404 Not Found
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:94)
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:79)
at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63)
at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:766)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:724)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:680)
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:600)
at pms.base.util.PushUtil.pushMessage(PushUtil.java:83)
at pms.cr.in.web.CrIn1000Controller.setSaveCallInfo(CrIn1000Controller.java:653)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:877)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:783)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:974)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:866)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:301)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:136)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:74)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:516)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1015)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:652)
at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1575)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1533)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
如果您解决了website 404找不到错误消息
为什么fcm不起作用?