我正在我的安卓应用和 Spring 后端使用 firebase 通知。
一切正常,但是在我将Android版本发布到Google Play商店进行测试后,可能会出现问题。现在我有这个回应:
FirebaseResponse{multicast_id=0, success=null, failure=null, canonical_ids=null, results=null}
通知已发送并且一切正常,但是为什么我在 Spring 后端中得到一个空值?
我的后端 java 弹簧代码:
@RequestMapping(value = "/send", method = RequestMethod.GET,
produces = "application/json")
public ResponseEntity<String> send() {
JSONObject body = new JSONObject();
try {
body.put("to", "/topics/photos");
body.put("priority", "high");
JSONObject notification = new JSONObject();
notification.put("body", "body string here");
notification.put("title", "title string here");
JSONObject data = new JSONObject();
data.put("lat", "value1");
data.put("lng", "value2");
body.put("notification", notification);
body.put("data", data);
} catch (JSONException e) {
e.printStackTrace();
}
HttpEntity<String> request = new HttpEntity<>(body.toString());
CompletableFuture<FirebaseResponse> pushNotification = androidPushNotificationsService.send(request);
CompletableFuture.allOf(pushNotification).join();
try {
FirebaseResponse firebaseResponse = pushNotification.get();
if (firebaseResponse.getSuccess() == 1) {
log.info("push notification sent ok!");
} else {
log.error("error sending push notifications: " + firebaseResponse.toString());
}
return new ResponseEntity<>(firebaseResponse.toString(), HttpStatus.OK);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
return new ResponseEntity<>("the push notification cannot be send.", HttpStatus.BAD_REQUEST);
}
我在这里得到空指针,这是空成功:
firebaseResponse.getSuccess()
原因是什么?我在项目 Firebase 控制台中定义了主题"照片"。除了直到今天一切都运行良好之外,还有什么问题?对我来说真的很奇怪。
也许您设置了多个部署环境,当您在Play商店中启动应用程序时,您更改为生产环境,而在Firebase中,您只添加了开发中的数据。这曾经对我来说是一个问题,我只在 dev 中设置数据,当我向客户端发布一个版本时,应用程序没有任何数据(暂存为空(。