Documentation for the Shuttle Tracker Android app.
Push notifications are handled by Firebase Cloud Messaging (FCM) - see background/service/FirebaseService.kt
and background/notification/Notifications.kt in Architecture. This is a manually-operated
channel: staff send a message directly from the Firebase Console, there’s no app-side “send” flow to build or
test against.
app/google-services.json is already checked into this repo, so a normal Installation build
is already wired up to the shared Firebase project - you don’t need to do anything extra to receive a push.
To send yourself a test notification:
FCM_TOKEN - FirebaseService.onNewToken() logs it on debug builds only.FirebaseService.onMessageReceived() builds
and shows it manually instead - both paths are worth testing.Notification permission (Android 13+) is requested during the first-run setup flow
(feature/setup/Permission.kt); if you skipped or denied it, re-enable it from the device’s app settings.
You’d want this if you’re working somewhere you don’t have access to the shared project, or want to send test pushes without touching the real one everyone else’s dev builds are wired to.
app/build.gradle.kts (edu.rpi.shuttletracker) -
or a different one if you also change applicationId, since it has to match exactly.google-services.json and replace app/google-services.json with it.com.google.gms.google-services Gradle plugin reads this file at build time, so nothing
else in the code needs to change.Don’t commit your own google-services.json over the shared one unless that’s an intentional, agreed-on
switch - anyone else building from main would silently start using your project instead of the shared one.