Set up Firebase for Binoban push
activeBinoban delivers push and web push through Firebase Cloud Messaging. This page covers only the parts of a Firebase project that are specific to Binoban — what Binoban needs from you, and what your app needs to hold.
Generic Firebase setup is Firebase's own documentation: creating a project, registering your apps, and installing the Firebase SDK. Start with Firebase Cloud Messaging if you have not done that yet.
Before you start
This page assumes:
- A Firebase project exists, with your web app, Android app, and/or iOS app registered in it.
- The Firebase SDK is already integrated —
google-services.jsonon Android,GoogleService-Info.pliston iOS, your Firebase config on the web. - You can reach whoever administers your Binoban workspace, since the final step is configured in the panel, not by an API call.
Binoban only ever sends data messages
Every message Binoban sends is a data-only message. It never sends an FCM
notification payload.
The consequence shapes the whole integration: FCM's automatic display never fires, so your handler or service worker always runs, and the Binoban SDK is what renders the notification and reports delivery, clicks, and dismissals. This is deliberate — it is what makes tracking and action buttons work identically across platforms.
Step 1 — Give Binoban permission to send
Binoban's backend sends through the FCM HTTP v1 API, which authenticates with a Google service account. You create one and hand its JSON key to your Binoban admin.
Grant it send-only access. Binoban needs to send messages and nothing else — do not give it broader rights over the project.
-
Create a dedicated service account for Binoban in the Google Cloud console (IAM & Admin → Service Accounts) on the project backing your Firebase project.
Don't reuse the default accountFirebase creates a
firebase-adminsdk-…service account with broad project privileges. Do not hand that one over. A dedicated, narrowly-scoped account can be revoked without affecting anything else you run. -
Grant it FCM send capability only — either the predefined Firebase Cloud Messaging API Admin role, or, for strict least privilege, a custom role containing just the
cloudmessaging.messages.createpermission.Role names are Google Cloud IAM's and can be renamed by Google. The requirement is send-only; these are the current way to express it.
-
Create a JSON key for that account and download it.
-
Give the JSON file to your Binoban admin, who configures it on the Engage push provider in the Product Workspace.
Treat the file as a credential: never commit it, never ship it inside your app bundle, and rotate it through Google Cloud IAM if it is ever exposed. Nothing in your app reads it — it is configured once, in the panel.
Step 2 — Web: get your VAPID key
Browser push needs a Web Push certificate key pair.
In the Firebase console: Project settings → Cloud Messaging → Web configuration → Web Push certificates. Generate a key pair if you do not have one.
The public key is what your site passes to getToken({ vapidKey }). Binoban
does not need it. See Web push.
Step 3 — iOS: upload your APNs key to Firebase
Binoban has no direct APNs integration. iOS delivery runs Binoban → FCM → APNs, so Apple's credentials go to Firebase, never to Binoban.
- Create an APNs authentication key (
.p8) in the Apple Developer portal. - Upload it in the Firebase console: Project settings → Cloud Messaging → Apple app configuration.
- In Xcode, enable the Push Notifications capability and Background Modes → Remote notifications. Background Modes is required because Binoban's messages are data-only — without it, iOS will not wake your app to display them.
Step 4 — Android: pick a notification channel
Android 8+ requires every notification to belong to a channel. The Binoban SDK
creates the channel you configure at IMPORTANCE_HIGH, which is what heads-up
notifications need.
If a channel with that id already exists, the SDK reuses it as-is and logs a
warning — Android does not allow raising an existing channel's importance after
creation. If your existing channel was created below IMPORTANCE_HIGH, give
Binoban a fresh channel id instead. See App push on Android.
What goes where
| Artifact | Lives in | Binoban needs it? |
|---|---|---|
| Service-account JSON (send-only) | Your Firebase/Google Cloud project | Yes — your admin configures it in the panel. |
| VAPID public key | Your website's code | No. |
APNs .p8 auth key | Uploaded to Firebase | No. |
google-services.json / GoogleService-Info.plist | Your app bundle | No. |
Next steps
- Web push — the browser recipe.
- App push — Android, iOS, and React Native.
- Push events — what the SDKs emit once this works.