Push Notifications

Using Firebase Admin SDK for Java Push Notification Service

Sanjeev Kumar
March 4, 2024
Learn how to automate push notifications using Firebase Admin SDK for Java. Streamline communication and enhance user engagement effortlessly.

Apart from manual composition, you could automate the process through programming interfaces. One popular choice among developers involves leveraging the Firebase Admin SDK for Java.

Start off by incorporating the required dependencies in your project's build.gradle file. These dependencies include libraries for Google Cloud, Firebase Admin, and other essential components.

            dependencies {
              // ...
              implementation 'com.google.cloud:google-cloud-translate:1.33.2'
              implementation 'com.google.guava:guava:29.0-jre'
              implementation 'com.google.auth:google-auth-library-credentials:1.12.0'
              implementation 'com.google.firebase:firebase-admin:8.0.0'
              implementation 'org.slf4j:slf4j-api:1.7.30'

Next, initialize the admin SDK instance somewhere early in your application lifecycle. This step involves providing the necessary credentials and options to configure the SDK.

            FileInputStream serviceAccount = new FileInputStream("path/to/serviceAccount.json");
            GoogleCredentials credential = GoogleCredentials.fromStream(serviceAccount);
            FirebaseOptions options = FirebaseOptions.builder()

            // Initialize the Firebase app

            // Access the Firebase Instance ID Service
            InstanceIdService idService = FirebaseInstanceId.getInstance();
            String token = idService.getToken();
            System.out.println("Device token:" + token);

Once the Firebase Admin SDK is initialized, you can proceed to construct and transmit push notifications programmatically. This involves specifying the target audience, composing the message payload, and sending the notification via the Firebase Cloud Messaging (FCM) service.

            public static void main(String[] args) throws Exception {
              String topicName = "/topics/" + "news";

              // Create a new HTTP/HTTPS request
              HttpRequestFactory factory = HTTPTransport.newTrustedTransport().createRequestFactory();

              GenericUrl url = new GenericUrl("https://fcm.googleapis.com/fcm/send");

              JSONObject json = new JSONObject();
              json.put("to", topicName);
              json.put("data", new JSONObject().put("title", "News Update").put("body", "Check out today's news highlights!"));

              HttpContent httpContent = new JsonHttpContent(factory, json);
              httpContent.setType("application/json; charset=utf-8");

              HttpResponse response = factory.buildPostRequest(url, httpContent).execute();
              int statusCode = response.getStatusCode();
              System.out.println("Status Code: " + statusCode);

              if (statusCode == 200) {
                System.out.println("Successfully published message.");
              } else {
                System.err.println("Failed to publish message.");

That concludes the introduction to automated push notifications generation using the Firebase Admin SDK for Java. Feel free to explore alternative implementations for other languages depending on your requirements.


Push notifications play an essential role in modern mobile applications for engaging and retaining users effectively. Utilizing tools like Firebase Cloud Messaging, developers gain a powerful ally to handle complex tasks effortlessly. Incorporate push notifications seamlessly into your projects with minimal hassle and enhance the overall user experience significantly. Good luck and happy coding!

Written by:
Sanjeev Kumar
Engineering, SuprSend

What’s a Rich Text element?

The rich text element allows you to create and format headings, paragraphs, blockquotes, images, and video all in one place instead of having to add and format them individually. Just double-click and easily create content.

Static and dynamic content editing

A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila!

How to customize formatting for each rich text

Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.

Implement a powerful stack for your notifications

By clicking “Accept All Cookies”, you agree to the storing of cookies on your device to enhance site navigation, analyze site usage, and assist in our marketing efforts. View our Privacy Policy for more information.