# Firebase App Setup

## Firebase App

First, go to the [<mark style="color:blue;">Firebase console</mark>](https://console.firebase.google.com/), log in, and select your existing project or add a new project.

Within your project click the gear icon next to the `Project Overview` section in the sidebar and select `Project Settings`.

<figure><img src="/files/IiNnP3jKFyyhByoalBh3" alt=""><figcaption></figcaption></figure>

Next, navigate to the `Cloud Messaging` tab.&#x20;

### Firebase Cloud Message API (V1) Setup

At Firebase Cloud Messaging API (V1) make note of the `Sender ID` value. This will be used later in this process.

Next, click on the link to Manage Service Accounts and the Google Cloud console will open in a new tab.

<figure><img src="/files/bnaq1ZvhRTzshQ4casDc" alt=""><figcaption></figcaption></figure>

#### Create Cloud Messaging Role

In the `IAM & Admin` sidebar, click on Roles.

Click the `+ Create Role` button and fill in the following fields:

* Title: `Cloud Messaging Notification Create`
* ID: `CloudMessagingNotificationCreate`
* Role launch stage: `General Availability`

Next, click the `+ Add Permissions` button, filter down permissions to the text: `Cloud Messaging Notification Create` . Select the checkbox for that permission and click the `Add` button.

{% hint style="warning" %}
If you can't find **Cloud Messaging Notification Create** when searching, instead search for **Firebase Cloud Messaging API Admin** and, after selecting it, look for the **cloudmessaging.messages.create**  permission, click the checkbox, and click **Add**.
{% endhint %}

<figure><img src="/files/LdjzRKa1nrH0ZWxuzZ7k" alt=""><figcaption></figcaption></figure>

Once you've added the permission click the `Create` button to finish creating the role.

#### Create Cloud Messaging Service Account

In the IAM & Admin sidebar, click on Service Accounts.

Click the `+ Create Service Account` button and fill in the service account name field as `Cloud Messaging` and then click the `Create and Continue` button.

From the `Select Role` dropdown filter down to `Cloud Messaging Notification Create` and choose the role we created in the previous step and then click the `Continue` button.

<figure><img src="/files/BzXFcB4mGdmNbsjWFxus" alt=""><figcaption></figcaption></figure>

Next, click the `Done` button to be returned back to the Service Accounts page.

At the Service accounts page, click on the email address link of the `Cloud Messaging` service account. On the following page, navigate to the `Keys` tab and click `Add Key -> Create New Key`.

<figure><img src="/files/HABFtAmLVd5n0k7xKgpe" alt=""><figcaption></figcaption></figure>

Choose the `JSON` Key type and click the `Create` button.

After clicking the `Create` button a Service Account JSON file will be downloaded to your computer. This is the file that you will use in the next step when setting up the integration in the platform.

#### Enable Integration in Platform

Log into the platform, navigate to the `Settings` page, and locate the `Send Integrations` section.

From here, click the `Edit` button in the `Send Integration` header, enable the `Native` switch under the `Android` heading and:

1. Enter the Firebase `Sender ID`  that you retrieved earlier.
2. Click the `Upload your Service Account JSON File` area and choose the file your downloaded in the previous step.
3. Click the `Submit` button

![](/files/fHH6Em1JtIPE7rn1oCOB)

If everything was entered correctly you should now see a section underneath `Send Integrations` that shows an active Android Native integration.

<figure><img src="/files/wemCIIJSWBTnIN5f3OrP" alt=""><figcaption></figcaption></figure>

Once this step is complete you can continue with implementation of the SDK into your app

### Cloud Messaging API (Legacy / Deprecated)

{% hint style="danger" %}
As of June 20, 2023, [Google has deprecated](https://firebase.google.com/support/faq#fcm-23-deprecation) the legacy FCM APIs and sending messages using them will no longer function starting June 2024.&#x20;

As-such we recommend using the V1 instructions above to avoid interruptions in your future notification delivery.
{% endhint %}

If the `Cloud Messaging API (Legacy)` is marked as disabled you will need to enable it.&#x20;

<figure><img src="/files/C6VmtIvG95fgGgc4FOlM" alt=""><figcaption></figcaption></figure>

Follow these steps:

* Click on the 3 dots next to `Cloud Messaging API (Legacy)`
* Select `Manage API on Google Cloud Console`
* Click `Enable` on the tab that opened
* After the page reloads you can close this tab and return to the Firebase Console
* On the Firebase Console tab refresh the page to reflect the enabled API

Once the legacy API has been enabled the `Server Key` and `Sender ID` will be displayed. Copy down each of these values and proceed to the Pushly platform.

Log into the platform, navigate to the `Settings` page, and locate the `Send Integrations` section.

From here, click the `Edit` button in the `Send Integration` header, enable the `Native` switch under the `Android` heading and:

1. Enter the Firebase `Sender ID`
2. Choose `Legacy` from the pill selection
3. Enter the `Server Key`
4. Click the `Submit` button

<figure><img src="/files/xz6lgG8t4vFmzTCEp5P5" alt=""><figcaption></figcaption></figure>

If everything was entered correctly you should now see a section underneath `Send Integrations` that shows an active Android Native integration.

<figure><img src="/files/wemCIIJSWBTnIN5f3OrP" alt=""><figcaption></figcaption></figure>

Once this step is complete you can continue with implementation of the SDK into your app


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://documentation.pushly.com/integration/implementation-steps/android/firebase-app-setup.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
