FirebaseMessaging

public class FirebaseMessaging extends Object

This class is the entry point for all server-side Firebase Cloud Messaging actions.

You can get an instance of FirebaseMessaging via getInstance(FirebaseApp), and then use it to send messages or manage FCM topic subscriptions.

Public Method Summary

static FirebaseMessaging
getInstance()
Gets the FirebaseMessaging instance for the default FirebaseApp.
synchronized static FirebaseMessaging
getInstance(FirebaseApp app)
Gets the FirebaseMessaging instance for the specified FirebaseApp.
String
send(Message message)
Sends the given Message via Firebase Cloud Messaging.
String
send(Message message, boolean dryRun)
Sends the given Message via Firebase Cloud Messaging.
BatchResponse
sendAll(List<Message> messages)
Sends all the messages in the given list via Firebase Cloud Messaging.
BatchResponse
sendAll(List<Message> messages, boolean dryRun)
Sends all the messages in the given list via Firebase Cloud Messaging.
ApiFuture<BatchResponse>
sendAllAsync(List<Message> messages)
Similar to sendAll(List) but performs the operation asynchronously.
ApiFuture<BatchResponse>
sendAllAsync(List<Message> messages, boolean dryRun)
Similar to sendAll(List, boolean) but performs the operation asynchronously.
ApiFuture<String>
sendAsync(Message message, boolean dryRun)
Similar to send(Message, boolean) but performs the operation asynchronously.
ApiFuture<String>
sendAsync(Message message)
Similar to send(Message) but performs the operation asynchronously.
BatchResponse
sendMulticast(MulticastMessage message)
Sends the given multicast message to all the FCM registration tokens specified in it.
BatchResponse
sendMulticast(MulticastMessage message, boolean dryRun)
Sends the given multicast message to all the FCM registration tokens specified in it.
ApiFuture<BatchResponse>
sendMulticastAsync(MulticastMessage message)
Similar to sendMulticast(MulticastMessage) but performs the operation asynchronously.
ApiFuture<BatchResponse>
sendMulticastAsync(MulticastMessage message, boolean dryRun)
Similar to sendMulticast(MulticastMessage, boolean) but performs the operation asynchronously.
TopicManagementResponse
subscribeToTopic(List<String> registrationTokens, String topic)
Subscribes a list of registration tokens to a topic.
ApiFuture<TopicManagementResponse>
subscribeToTopicAsync(List<String> registrationTokens, String topic)
Similar to subscribeToTopic(List, String) but performs the operation asynchronously.
TopicManagementResponse
unsubscribeFromTopic(List<String> registrationTokens, String topic)
Unsubscribes a list of registration tokens from a topic.
ApiFuture<TopicManagementResponse>
unsubscribeFromTopicAsync(List<String> registrationTokens, String topic)
Similar to unsubscribeFromTopic(List, String) but performs the operation asynchronously.

Inherited Method Summary

Public Methods

public static FirebaseMessaging getInstance ()

Gets the FirebaseMessaging instance for the default FirebaseApp.

Returns

public static synchronized FirebaseMessaging getInstance (FirebaseApp app)

Gets the FirebaseMessaging instance for the specified FirebaseApp.

Returns

public String send (Message message)

Sends the given Message via Firebase Cloud Messaging.

Parameters
message A non-null Message to be sent.
Returns
  • A message ID string.
Throws
FirebaseMessagingException If an error occurs while handing the message off to FCM for delivery.

public String send (Message message, boolean dryRun)

Sends the given Message via Firebase Cloud Messaging.

If the dryRun option is set to true, the message will not be actually sent. Instead FCM performs all the necessary validations and emulates the send operation. The dryRun option is useful for determining whether an FCM registration has been deleted. However, it cannot be used to validate APNs tokens.

Parameters
message A non-null Message to be sent.
dryRun a boolean indicating whether to perform a dry run (validation only) of the send.
Returns
  • A message ID string.
Throws
FirebaseMessagingException If an error occurs while handing the message off to FCM for delivery.

public BatchResponse sendAll (List<Message> messages)

Sends all the messages in the given list via Firebase Cloud Messaging. Employs batching to send the entire list as a single RPC call. Compared to the send(Message) method, this is a significantly more efficient way to send multiple messages.

The responses list obtained by calling getResponses() on the return value corresponds to the order of input messages.

Parameters
messages A non-null, non-empty list containing up to 500 messages.
Returns
Throws
FirebaseMessagingException If an error occurs while handing the messages off to FCM for delivery. An exception here indicates a total failure -- i.e. none of the messages in the list could be sent. Partial failures are indicated by a BatchResponse return value.

public BatchResponse sendAll (List<Message> messages, boolean dryRun)

Sends all the messages in the given list via Firebase Cloud Messaging. Employs batching to send the entire list as a single RPC call. Compared to the send(Message) method, this is a significantly more efficient way to send multiple messages.

If the dryRun option is set to true, the message will not be actually sent. Instead FCM performs all the necessary validations, and emulates the send operation. The dryRun option is useful for determining whether an FCM registration has been deleted. But it cannot be used to validate APNs tokens.

The responses list obtained by calling getResponses() on the return value corresponds to the order of input messages.

Parameters
messages A non-null, non-empty list containing up to 500 messages.
dryRun A boolean indicating whether to perform a dry run (validation only) of the send.
Returns
Throws
FirebaseMessagingException If an error occurs while handing the messages off to FCM for delivery. An exception here indicates a total failure -- i.e. none of the messages in the list could be sent. Partial failures are indicated by a BatchResponse return value.

public ApiFuture<BatchResponse> sendAllAsync (List<Message> messages)

Similar to sendAll(List) but performs the operation asynchronously.

Parameters
messages A non-null, non-empty list containing up to 500 messages.

public ApiFuture<BatchResponse> sendAllAsync (List<Message> messages, boolean dryRun)

Similar to sendAll(List, boolean) but performs the operation asynchronously.

Parameters
messages A non-null, non-empty list containing up to 500 messages.
dryRun A boolean indicating whether to perform a dry run (validation only) of the send.

public ApiFuture<String> sendAsync (Message message, boolean dryRun)

Similar to send(Message, boolean) but performs the operation asynchronously.

Parameters
message A non-null Message to be sent.
dryRun a boolean indicating whether to perform a dry run (validation only) of the send.
Returns
  • An ApiFuture that will complete with a message ID string when the message has been sent, or when the emulation has finished.

public ApiFuture<String> sendAsync (Message message)

Similar to send(Message) but performs the operation asynchronously.

Parameters
message A non-null Message to be sent.
Returns
  • An ApiFuture that will complete with a message ID string when the message has been sent.

public BatchResponse sendMulticast (MulticastMessage message)

Sends the given multicast message to all the FCM registration tokens specified in it.

This method uses the sendAll(List) API under the hood to send the given message to all the target recipients. The responses list obtained by calling getResponses() on the return value corresponds to the order of tokens in the MulticastMessage.

Parameters
message A non-null MulticastMessage
Returns
Throws
FirebaseMessagingException If an error occurs while handing the messages off to FCM for delivery. An exception here indicates a total failure -- i.e. the messages could not be delivered to any recipient. Partial failures are indicated by a BatchResponse return value.

public BatchResponse sendMulticast (MulticastMessage message, boolean dryRun)

Sends the given multicast message to all the FCM registration tokens specified in it.

If the dryRun option is set to true, the message will not be actually sent. Instead FCM performs all the necessary validations, and emulates the send operation. The dryRun option is useful for determining whether an FCM registration has been deleted. But it cannot be used to validate APNs tokens.

This method uses the sendAll(List) API under the hood to send the given message to all the target recipients. The responses list obtained by calling getResponses() on the return value corresponds to the order of tokens in the MulticastMessage.

Parameters
message A non-null MulticastMessage.
dryRun A boolean indicating whether to perform a dry run (validation only) of the send.
Returns
Throws
FirebaseMessagingException If an error occurs while handing the messages off to FCM for delivery. An exception here indicates a total failure -- i.e. the messages could not be delivered to any recipient. Partial failures are indicated by a BatchResponse return value.

public ApiFuture<BatchResponse> sendMulticastAsync (MulticastMessage message)

Similar to sendMulticast(MulticastMessage) but performs the operation asynchronously.

Parameters
message A non-null MulticastMessage.
Returns
  • An ApiFuture that will complete with a BatchResponse when the messages have been sent.

public ApiFuture<BatchResponse> sendMulticastAsync (MulticastMessage message, boolean dryRun)

Similar to sendMulticast(MulticastMessage, boolean) but performs the operation asynchronously.

Parameters
message A non-null MulticastMessage.
dryRun A boolean indicating whether to perform a dry run (validation only) of the send.
Returns
  • An ApiFuture that will complete with a BatchResponse when the messages have been sent.

public TopicManagementResponse subscribeToTopic (List<String> registrationTokens, String topic)

Subscribes a list of registration tokens to a topic.

Parameters
registrationTokens A non-null, non-empty list of device registration tokens, with at most 1000 entries.
topic Name of the topic to subscribe to. May contain the /topics/ prefix.

public ApiFuture<TopicManagementResponse> subscribeToTopicAsync (List<String> registrationTokens, String topic)

Similar to subscribeToTopic(List, String) but performs the operation asynchronously.

Parameters
registrationTokens A non-null, non-empty list of device registration tokens, with at most 1000 entries.
topic Name of the topic to subscribe to. May contain the /topics/ prefix.
Returns

public TopicManagementResponse unsubscribeFromTopic (List<String> registrationTokens, String topic)

Unsubscribes a list of registration tokens from a topic.

Parameters
registrationTokens A non-null, non-empty list of device registration tokens, with at most 1000 entries.
topic Name of the topic to unsubscribe from. May contain the /topics/ prefix.

public ApiFuture<TopicManagementResponse> unsubscribeFromTopicAsync (List<String> registrationTokens, String topic)

Similar to unsubscribeFromTopic(List, String) but performs the operation asynchronously.

Parameters
registrationTokens A non-null, non-empty list of device registration tokens, with at most 1000 entries.
topic Name of the topic to unsubscribe from. May contain the /topics/ prefix.
Returns