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)
This method is deprecated. Use sendEach(List) instead.
BatchResponse
sendAll(List<Message> messages, boolean dryRun)
This method is deprecated. Use sendEach(List, boolean) instead.
ApiFuture<BatchResponse>
sendAllAsync(List<Message> messages)
This method is deprecated. Use sendEachAsync(List) instead.
ApiFuture<BatchResponse>
sendAllAsync(List<Message> messages, boolean dryRun)
This method is deprecated. Use sendEachAsync(List, boolean) instead.
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
sendEach(List<Message> messages)
Sends each message in the given list via Firebase Cloud Messaging.
BatchResponse
sendEach(List<Message> messages, boolean dryRun)
Sends each message in the given list via Firebase Cloud Messaging.
ApiFuture<BatchResponse>
sendEachAsync(List<Message> messages)
Similar to sendEach(List) but performs the operation asynchronously.
ApiFuture<BatchResponse>
sendEachAsync(List<Message> messages, boolean dryRun)
Similar to sendEach(List, boolean) but performs the operation asynchronously.
BatchResponse
sendEachForMulticast(MulticastMessage message)
Sends the given multicast message to all the FCM registration tokens specified in it.
BatchResponse
sendEachForMulticast(MulticastMessage message, boolean dryRun)
Sends the given multicast message to all the FCM registration tokens specified in it.
ApiFuture<BatchResponse>
sendEachForMulticastAsync(MulticastMessage message)
Similar to sendEachForMulticast(MulticastMessage) but performs the operation asynchronously.
ApiFuture<BatchResponse>
sendEachForMulticastAsync(MulticastMessage message, boolean dryRun)
Similar to sendEachForMulticast(MulticastMessage, boolean) but performs the operation asynchronously.
BatchResponse
sendMulticast(MulticastMessage message, boolean dryRun)
This method is deprecated. Use sendEachForMulticast(MulticastMessage, boolean) instead.
BatchResponse
sendMulticast(MulticastMessage message)
This method is deprecated. Use sendEachForMulticast(MulticastMessage) instead.
ApiFuture<BatchResponse>
sendMulticastAsync(MulticastMessage message)
This method is deprecated. Use sendEachForMulticastAsync(MulticastMessage) instead.
ApiFuture<BatchResponse>
sendMulticastAsync(MulticastMessage message, boolean dryRun)
This method is deprecated. Use sendEachForMulticastAsync(MulticastMessage, boolean) instead.
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)

This method is deprecated.
Use sendEach(List) instead.

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, meaning that 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)

This method is deprecated.
Use sendEach(List, boolean) instead.

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, meaning that 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)

This method is deprecated.
Use sendEachAsync(List) instead.

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

Parameters
messages A non-null, non-empty list containing up to 500 messages.
Returns
  • An ApiFuture that will complete with a BatchResponse when the messages have been sent.

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

This method is deprecated.
Use sendEachAsync(List, boolean) instead.

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.
Returns
  • An ApiFuture that will complete with a BatchResponse when the messages have been sent, or when the emulation has finished.

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 sendEach (List<Message> messages)

Sends each message in the given list via Firebase Cloud Messaging. Unlike sendAll(List), this method makes an HTTP call for each message in the given array.

The list of responses obtained by calling getResponses() on the return value is in the same order as the input list.

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 or a BatchResponse with all failures indicates a total failure, meaning that none of the messages in the list could be sent. Partial failures or no failures are only indicated by a BatchResponse.

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

Sends each message in the given list via Firebase Cloud Messaging. Unlike sendAll(List), this method makes an HTTP call for each message in the given array.

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 list of responses obtained by calling getResponses() on the return value is in the same order as the input list.

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 or a BatchResponse with all failures indicates a total failure, meaning that none of the messages in the list could be sent. Partial failures or no failures are only indicated by a BatchResponse.

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

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

Parameters
messages A non-null, non-empty list containing up to 500 messages.
Returns
  • An ApiFuture that will complete with a BatchResponse when the messages have been sent.

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

Similar to sendEach(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.
Returns
  • An ApiFuture that will complete with a BatchResponse when the messages have been sent.

public BatchResponse sendEachForMulticast (MulticastMessage message)

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

This method uses the sendEach(List) API under the hood to send the given message to all the target recipients. The list of responses obtained by calling getResponses() on the return value is in the same order as the 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 or a BatchResponse with all failures indicates a total failure, meaning that none of the messages in the list could be sent. Partial failures or no failures are only indicated by a BatchResponse.

public BatchResponse sendEachForMulticast (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 sendEach(List) API under the hood to send the given message to all the target recipients. The list of responses obtained by calling getResponses() on the return value is in the same order as the 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 or a BatchResponse with all failures indicates a total failure, meaning that none of the messages in the list could be sent. Partial failures or no failures are only indicated by a BatchResponse.

public ApiFuture<BatchResponse> sendEachForMulticastAsync (MulticastMessage message)

Similar to sendEachForMulticast(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> sendEachForMulticastAsync (MulticastMessage message, boolean dryRun)

Similar to sendEachForMulticast(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 BatchResponse sendMulticast (MulticastMessage message, boolean dryRun)

This method is deprecated.
Use sendEachForMulticast(MulticastMessage, boolean) instead.

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, meaning that the messages could not be delivered to any recipient. Partial failures are indicated by a BatchResponse return value.

public BatchResponse sendMulticast (MulticastMessage message)

This method is deprecated.
Use sendEachForMulticast(MulticastMessage) instead.

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, meaning that the messages could not be delivered to any recipient. Partial failures are indicated by a BatchResponse return value.

public ApiFuture<BatchResponse> sendMulticastAsync (MulticastMessage message)

This method is deprecated.
Use sendEachForMulticastAsync(MulticastMessage) instead.

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)

This method is deprecated.
Use sendEachForMulticastAsync(MulticastMessage, boolean) instead.

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