У меня проблемы с отправкой сообщений, включая специальные символы (например, «łżźć») в FCM. Когда я отправляю их через консоль разработчика, мобильные приложения отображают их правильно. Но когда я отправляю их с нашего сервера, они заменяются на «?????».
Ниже показано, как я отправляю само сообщение на сервер FCM:
@Async
CompletableFuture<String> send(HttpEntity<String> entity, String accessToken) throws HttpClientErrorException {
RestTemplate restTemplate = new RestTemplate();
ArrayList<ClientHttpRequestInterceptor> interceptors = new ArrayList<>();
interceptors.add(new HeaderRequestInterceptor("Authorization", "Bearer " + accessToken));
interceptors.add(new HeaderRequestInterceptor("Content-Type", "application/json;charset=UTF-8"));
restTemplate.setInterceptors(interceptors);
String firebaseResponse = restTemplate.postForObject(FCM_API, entity, String.class);
return CompletableFuture.completedFuture(firebaseResponse);
}
Я хотел бы избежать преобразования сообщения, например. строку base64, если это возможно (это был один из ответов на другие вопросы).
@KarolDowbecki .... Я сейчас чувствую себя таким глупым - это идеальный ответ! Не думал об этом (пытался с кодировкой самой строки безрезультатно)
Не кодируйте полезные нагрузки при работе с библиотеками Spring, это работа для ConversionService




Вы пытались добавить конвертер строковых сообщений UTF-8 в соответствии с этот вопрос?