Android: Firebase Credentials
Directions on how to generate a Firebase Cloud Messaging API Credentials for sending Android App Notifications
For Android Apps only, not websites
This guide is for developers implementing OneSignal in an Android application for distribution on the Google Play App Store. This guide should not be used for Web Push.
A Google Service Account is a special type of account from Google that applications use to make authorized calls to a variety of APIs, including Firebase Cloud Messaging APIs. For more details, see Google's own documentation on Service Accounts. In order to send push notifications to Android devices, you will need a Service Account to generate a private key for OneSignal to utilize.
Requirements
- Android mobile app or Chrome app or extension
- Firebase Account
- OneSignal Account
Setup
1. Create A Firebase Project
Push Notifications require a Firebase Project. If you don't have one set up yet, click Add project and follow the directions to set up your project.
If you already have a FCM project, skip to Step 2.
2. Ensure Firebase Cloud Messaging API (V1) is Enabled
If you've just created a new project, this should already be enabled by default, and you can skip this step. However, if you are using an existing Firebase project, especially an older one, ensure Cloud Messaging API (V1) is enabled.
To check, click the gear icon next to "Project Overview" in the top left of the left-hand menu and select Project settings. Select the "Cloud Messaging" tab.
If Firebase Cloud Messaging API (V1) is disabled, then click the kebab menu icon on the top right corner and open the link.
On the subsequent page, click Enable. You may need to wait a few minutes for the action to propagate to Firebase systems.
3. Generate a Private Key JSON file
In Project settings, go to the Service accounts tab.
Click Generate new private key at the bottom of the page.
You'll then see a warning window. Click Generate key.
Save the JSON file somewhere secure. You will need to access it shortly.
Required Permissions
The following Service Account permissions are required for push notifications to work:
cloudmessaging.messages.create
firebase.projects.get
4. Configure Your OneSignal App's Android Platform Settings
In OneSignal, navigate to Settings > Platforms > Google Android > Activate
Click on Service Account JSON > Choose file and select the JSON file you downloaded from your service account.
What do if migrating from Legacy FCM settings
If migrating from Legacy FCM settings, you will need to select Firebase Cloud Messaging API (V1) from the dropdown menu before uploading the JSON file.
Click Save and Continue.
Select the SDK you are using for your app development and click Save & Continue.
Finally, check that you can copy your App ID and check for subscribed users before clicking Save & Continue to complete your setup.
Testing for Subscribed Users
This is only for setting up FCM for the first time. If you are updating credentials or upgrading from to FCM v1, please ignore this step (step 2).
Done!
You now have a key to send push notifications from your app. 🥳
Return to Mobile Push Quickstart
FAQ
Why do I see this error? "Cannot set the Sender ID of the platform, the App has over 100 Android users."
This error means that the file you are uploading is from a project that has a different Sender ID than what is currently used in your Android configuration. Since the push token on each of your user's devices is tied to the legacy Sender ID, updating to the new JSON file for a different Firebase project invalidates the push token. If you cannot get the JSON file for the original Firebase Project, you will need to create a new Firebase project and follow this guide to get a Service Account JSON file. You can then contact [email protected] with the OneSignal App ID/s and the attached JSON file for assistance in updating the app.
Can I change my sender ID instead of using FCM V1?
No, this is the same as uploading a JSON file for a different project. It would result in the same 1 hour wait after the user opens the app, this is why we do not allow this sender ID to change after 100 users. It is an unnecessary step and you should instead provide the JSON file here if you plan on using a different project.
Does switching from Legacy API to V1 require an update?
No this is handled entirely from the OneSignal dashboard and if you already have the Android SDK in your app, no action is needed anywhere else.
When is the actual deadline?
June 2024 per Google's announcement here. Although it is not guaranteed that we will keep the ability to use the Legacy API until this deadline, so we would advise tracking our email notifications that are being sent about these changes, and ensure you make this change as soon as you can.
Why don't I have a sender ID on OneSignal?
If you reveal your server key (Android Configuration settings for Legacy API) and it is a string that starts with 'AIz...' or it looks to only be ~40 characters long, this is a predecessor to the FCM legacy API, when it was Google Cloud Messaging. Ideally you should have created a Firebase project at some point since this change, if not you'll need to do so now. Unfortunately this is being deprecated along side the FCM Server Key and Sender ID, and you will still need to generate a JSON file for a firebase project that has a service account.
How can I check to see which apps are still using the Legacy API?
If you would like a full list of apps that you have access to, you can use the View Apps endpoint to pull a full list of apps and all of the configurations for them. If you see "gcm_key" has a value, it needs to be updated. If you see "fcm_v1_service_account_json" has a value, it is done. If you don't see either, this app is not using Android.
Updated about 2 months ago