У меня проблема при попытке отправить изображение .png через службу Firebase. Уведомление работает нормально и доходит до моего телефона, но без изображения. Кроме того, я попытался поместить прямую ссылку на изображение из Интернета, но когда я попытался преобразовать BLOB-объект из базы данных в .png и отправить его таким образом, он не отправляет изображение. Я думаю, что я не отправляю изображение правильным способом?
Вот мой код контроллера ниже:
Java
Company company = companyService.findCompanyByName(systemUserService.findByUsername(principal.getName()).getCompany().getName());
Notification notify = notificationService.findByName(name);
System.out.println("Title: " + notify.getName());
System.out.println("Message: " + notify.getText());
JSONObject body = new JSONObject();
body.put("to", "/topics/" + TOPIC);
body.put("priority", "high");
JSONObject notification = new JSONObject();
notification.put("title", notify.getName());
notification.put("body", notify.getText());
notification.put("sound", "default");
try {
byte[] aByteArray = company.getLogo();
int width = 1;
int height = 2;
DataBuffer buffer = new DataBufferByte(aByteArray, aByteArray.length);
WritableRaster raster = Raster.createInterleavedRaster(buffer, width, height, 3 * width, 3, new int[] {0, 1, 2}, (Point)null);
ColorModel cm = new ComponentColorModel(ColorModel.getRGBdefault().getColorSpace(), false, true, Transparency.OPAQUE, DataBuffer.TYPE_BYTE);
BufferedImage image = new BufferedImage(cm, raster, true, null);
ImageIO.write(image, "png", new File("image.png"));
notification.put("image", image);
} catch (IOException e) {
e.printStackTrace();
}
JSONObject data = new JSONObject();
data.put("Key-1", "JSA Data 1");
data.put("Key-2", "JSA Data 2");
body.put("notification", notification);
body.put("data", data);
HttpEntity<String> request = new HttpEntity<>(body.toString());
CompletableFuture<String> pushNotification = androidPushNotificationsService.send(request);
CompletableFuture.allOf(pushNotification).join();
try {
String firebaseResponse = pushNotification.get();
return new ResponseEntity<>(firebaseResponse, HttpStatus.OK);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
return new ResponseEntity<>("Push Notification ERROR!", HttpStatus.BAD_REQUEST);