Раньше я использовал GCM, теперь я перешел на FCM. По этой причине прямо сейчас я отправляю сообщение WebPu sh с Firebase Admin SDK. Когда я отправлял webpu sh, клиенты получали уведомление без данных. В соответствии с текстами, которые я прочитал, я должен кодировать полезную нагрузку с помощью JWT Однако я не смог найти способ encyrpt.
У меня есть clientAuthSecret, clientPublicKey и конечная точка. Мне нужно ваше руководство.
@Override
public WebPushResponse sendMessageToMultipleUsers(List<String> registrationTokens) throws IOException {
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredentials(GoogleCredentials.fromStream(new ClassPathResource(firebaseConfigPath).getInputStream())).build();
if (FirebaseApp.getApps().isEmpty()) {
FirebaseApp.initializeApp(options);
logger.info("Firebase application has been initialized");
}
MulticastMessage message = MulticastMessage.builder()
.setWebpushConfig(WebpushConfig.builder()
.setNotification(new WebpushNotification("$GOOG up 1.43% on the day",
"$GOOG gained 11.80 points to close at 835.67, up 1.43% on the day.", "https://my-server/icon.png"))
.build())
.addAllTokens(registrationTokens).build();
BatchResponse response = null;
try {
response = FirebaseMessaging.getInstance().sendMulticastAsync(message).get();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (response != null && response.getFailureCount() > 0) {
List<SendResponse> responses = response.getResponses();
List<String> failedTokens = new ArrayList<>();
for (int i = 0; i < responses.size(); i++) {
if (!responses.get(i).isSuccessful()) {
// The order of responses corresponds to the order of the registration tokens.
failedTokens.add(registrationTokens.get(i));
}
}
System.out.println("List of tokens that caused failures: " + failedTokens);
}
return null;
}