Network traffic sent by server programs to your app can be challenging to
optimize. A solution to this problem is for your app to periodically poll the
server to check for updates. This approach can waste network connection and
power when your app starts up a device's radio, only to receive an answer that
no new data is available. A far more efficient approach would be for the server
to notify your app when it has new data, but figuring out how to send a
notification from your server to potentially thousands of devices was previously
no easy feat.

The Firebase Cloud Messaging (FCM) service solves this communication problem by
allowing your servers to send notifications to instances of your app wherever
they are installed, enabling greater network efficiency and lowering power
usage.

This lesson teaches you how to apply the FCM service to reduce network use for
server-initiated actions and reduce battery consumption.

## Send server updates with FCM

Firebase Cloud Messaging (FCM) is a lightweight mechanism used to transmit brief
messages from an app server to your app. Using FCM, your app server uses a
message-passing mechanism to notify your app that there is new data available.
This approach eliminates network traffic that your app would perform, by not
contacting a backend server for new data when no data is available.

An example use of FCM is an app that lists speaker sessions at a conference.
When sessions are updated on your server, the server sends a brief message to
your app telling it updates are available. Your app can then call the server to
update the sessions on the device only when the server has new data.

FCM is more efficient than having your app poll for changes on the server. The
FCM service eliminates unnecessary connections where polling would return no
updates, and it avoids running periodic network requests that could cause a
device's radio to power up. Since FCM can be used by many apps, using it in your
app reduces the total number of network connections needed on a device and
allows the device radio to sleep more often.
| **Note:** When using FCM, your app can pass messages in normal or high priority. Your server should typically use normal priority to deliver messages. Using this priority level prevents devices from being woken up if they are inactive and in a low-power Doze state. Use high priority messages only if absolutely required.