From 01b5fd62dc24e1b36c17270e875b15ef4b81a25b Mon Sep 17 00:00:00 2001 From: joefspiro <97258781+joefspiro@users.noreply.github.com> Date: Thu, 12 Jun 2025 16:41:27 -0400 Subject: [PATCH 1/2] Adds sendEach based snippets for FCM. --- .../snippets/FirebaseMessagingSnippets.java | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/src/test/java/com/google/firebase/snippets/FirebaseMessagingSnippets.java b/src/test/java/com/google/firebase/snippets/FirebaseMessagingSnippets.java index 4a4a25472..b17459af9 100644 --- a/src/test/java/com/google/firebase/snippets/FirebaseMessagingSnippets.java +++ b/src/test/java/com/google/firebase/snippets/FirebaseMessagingSnippets.java @@ -149,6 +149,36 @@ public void sendAll() throws FirebaseMessagingException { // [END send_all] } + public void sendEach() throws FirebaseMessagingException { + String registrationToken = "YOUR_REGISTRATION_TOKEN"; + + // [START send_each] + // Create a list containing up to 500 messages. + List messages = Arrays.asList( + Message.builder() + .setNotification(Notification.builder() + .setTitle("Price drop") + .setBody("5% off all electronics") + .build()) + .setToken(registrationToken) + .build(), + // ... + Message.builder() + .setNotification(Notification.builder() + .setTitle("Price drop") + .setBody("2% off all books") + .build()) + .setTopic("readers-club") + .build() + ); + + BatchResponse response = FirebaseMessaging.getInstance().sendEach(messages); + // See the BatchResponse reference documentation + // for the contents of response. + System.out.println(response.getSuccessCount() + " messages were sent successfully"); + // [END send_each] + } + public void sendMulticast() throws FirebaseMessagingException { // [START send_multicast] // Create a list containing up to 500 registration tokens. @@ -201,6 +231,36 @@ public void sendMulticastAndHandleErrors() throws FirebaseMessagingException { // [END send_multicast_error] } + public void sendEachForMulticastAndHandleErrors() throws FirebaseMessagingException { + // [START send_each_for_multicast_error] + // These registration tokens come from the client FCM SDKs. + List registrationTokens = Arrays.asList( + "YOUR_REGISTRATION_TOKEN_1", + // ... + "YOUR_REGISTRATION_TOKEN_n" + ); + + MulticastMessage message = MulticastMessage.builder() + .putData("score", "850") + .putData("time", "2:45") + .addAllTokens(registrationTokens) + .build(); + BatchResponse response = FirebaseMessaging.getMessaging().sendEachForMulticast(message); + if (response.getFailureCount() > 0) { + List responses = response.getResponses(); + List 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); + } + // [END send_each_for_multicast_error] + } + public Message androidMessage() { // [START android_message] Message message = Message.builder() From d07b069464b268c3b6596b374e7c88e37d3759b0 Mon Sep 17 00:00:00 2001 From: joefspiro <97258781+joefspiro@users.noreply.github.com> Date: Fri, 13 Jun 2025 12:55:07 -0400 Subject: [PATCH 2/2] Corrects getting the messaging instance. --- .../com/google/firebase/snippets/FirebaseMessagingSnippets.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/google/firebase/snippets/FirebaseMessagingSnippets.java b/src/test/java/com/google/firebase/snippets/FirebaseMessagingSnippets.java index b17459af9..b17a5d58a 100644 --- a/src/test/java/com/google/firebase/snippets/FirebaseMessagingSnippets.java +++ b/src/test/java/com/google/firebase/snippets/FirebaseMessagingSnippets.java @@ -245,7 +245,7 @@ public void sendEachForMulticastAndHandleErrors() throws FirebaseMessagingExcept .putData("time", "2:45") .addAllTokens(registrationTokens) .build(); - BatchResponse response = FirebaseMessaging.getMessaging().sendEachForMulticast(message); + BatchResponse response = FirebaseMessaging.getInstance().sendEachForMulticast(message); if (response.getFailureCount() > 0) { List responses = response.getResponses(); List failedTokens = new ArrayList<>();