Final Android package
Use the release applicationId from app/build.gradle. If you rename it, also update Firebase, OAuth, App Links, Facebook, and store configuration.
EasyPlexVersion 2.4 handbook
EasyPlex 2.4 · notification delivery
EasyPlex already includes OneSignal Android SDK 5.9.6. Buyers connect Firebase Cloud Messaging to OneSignal, save the OneSignal identifiers in the web panel, and let the mobile app initialize from downloaded settings—without hardcoding credentials in Java.
Delivery path
Prerequisites
Most notification failures are identity mismatches. Decide the final release package name before creating Firebase and OneSignal applications.
Use the release applicationId from app/build.gradle. If you rename it, also update Firebase, OAuth, App Links, Facebook, and store configuration.
Add an Android app with that exact package name. Download its current google-services.json.
Use Android with Google Play services and internet access. Android 13+ requires runtime notification permission.
Step 1 · Google
In Firebase Console, create or open the production project. Add Android using the exact release package name, then download google-services.json into the Android source at app/google-services.json.
Open the connected Google Cloud project and ensure Firebase Cloud Messaging API v1 is enabled. Do not configure the retired legacy server key workflow for a new installation.
Generate a dedicated Firebase service-account JSON for messaging. The credential needs permission to create FCM messages and read the Firebase project. Save it in a private password or secrets manager.
In Firebase Project Settings → Cloud Messaging, note the Sender ID. It must match the Firebase project shown when the credential is uploaded to OneSignal.
Step 2 · OneSignal
Sign in to OneSignal, create an application for this EasyPlex release, and choose Google Android (FCM) under Settings → Push & In-App.
Upload the private Firebase service-account JSON to the Google Android platform configuration. Confirm that the displayed Firebase project and Sender ID match the Android app.
Open Settings → Keys & IDs and copy the 36-character OneSignal App ID. This is a public identifier used by the Android SDK.
Create a key scoped to this OneSignal app and store it immediately. This private key allows the EasyPlex server to send notifications. Do not use an Organization API key and do not expose the app key in Android code.
| Value | Where to find it | Where EasyPlex uses it | Secret? |
|---|---|---|---|
| OneSignal App ID | App → Settings → Keys & IDs | Panel setting returned to the Android SDK | No |
| App API key | App → Settings → Keys & IDs → Add Key | EasyPlex backend when sending | Yes |
| Organization ID/key | Organization settings | Not required for normal EasyPlex sending | Organization key is secret |
| FCM service account | Firebase / Google Cloud | Uploaded to OneSignal platform configuration | Yes |
Step 3 · Web panel
Subscribed Users; older applications may expose All. Custom segments must already exist in OneSignal.php artisan optimize:clear, restart the queue worker, and fully restart the Android app.Step 4 · Android
The supplied EasyPlex 2.4 project already contains the required SDK, manifest extension, notification handler, and user login/logout integration.
implementation 'com.onesignal:OneSignal:5.9.6'app/google-services.json.Constants.java, strings.xml, or Gradle properties; EasyPlex reads onesignal_app_id from protected panel settings.gradlew.bat clean
gradlew.bat assembleReleaseStep 5 · Verification
Install the release-signed build, launch with internet access, and allow notifications when Android prompts.
In OneSignal → Audience → Subscriptions, confirm the device is subscribed under the expected app and FCM platform.
Open Admin → Notifications, compose a small custom message, confirm the audience label, and send it.
Audience
The panel’s configured segment is used for general notifications. Copy its name exactly from OneSignal, including spaces and capitalization. Use a small test segment before broadcasting to every subscriber.
EasyPlex content notifications can carry a type, TMDB/content identifier, title, message, image, and optional custom URL.
EasyPlex associates a signed-in mobile user with OneSignal using the EasyPlex numeric user ID as the external ID. User-targeted backend jobs can therefore address that external identity after the user has opened the configured app and signed in.
If a user reinstalls, changes Firebase project, or has not opened the latest build, allow the app to register again before testing targeted delivery.
Security
The App ID identifies the OneSignal application and may be used by the mobile SDK. It cannot authorize message sending by itself.
Keep it only in the protected backend setting. Never commit, email, screenshot, expose through public settings JSON, or package it in Android.
Store it in OneSignal/Firebase and a secure backup. Never confuse it with Android google-services.json.
Diagnostics
| Symptom | Likely cause | Corrective action |
|---|---|---|
| Device never appears | Missing/wrong App ID, app has not downloaded settings, no Play services, or notification SDK failed to initialize | Confirm the settings API returns the expected public App ID, reinstall the clean release, open it online, and inspect Logcat for OneSignal. |
| FCM configuration error | Service-account JSON belongs to a different Firebase project or FCM v1 is disabled | Match Firebase Sender ID with OneSignal’s Android platform, enable FCM API v1, and upload the correct credential. |
| 401 / unauthorized | Wrong, expired, rotated, or mismatched OneSignal app API key | Create a key under the same OneSignal app as the App ID, replace the panel value, save, and clear Laravel configuration cache. |
| No subscribed recipients | Permission denied, wrong segment, or device subscription is opted out | Grant Android notification permission, confirm subscription state, and copy an existing segment name exactly. |
| Accepted but not displayed | Battery restrictions, disabled notification channel, device offline, or OEM background limits | Test on another physical device, re-enable the app’s notification channel, remove battery restrictions for testing, and inspect OneSignal delivery status. |
| Correct message, wrong screen | Invalid content type, content ID, or custom link payload | Send a text-only notification first, then test one supported content type and identifier at a time. |
| Only some users receive | Users did not open the current build, changed FCM project, or are outside the selected segment | Ask users to open/update the app, verify their subscription and external ID, then review segment filters. |
adb logcat | findstr /I "OneSignal FirebaseMessaging EasyPlexApp"Final pass
Start typing to search this guide.