This is a full-stack Android app I built to send push notifications to devices that subscribe to a topic, using Google Firebase for the messaging layer and AWS on the backend. I made it mostly to teach myself how cloud messaging actually works end to end, from generating a device token on the phone all the way to triggering a notification from a server.
The project utilizes:
- Google Firebase: Cloud Messaging services to establish the connection between our server and user devices to deliver and receive messages.
- Amazon AWS: SNS Topics (that user devices subscribe to using their unique device tokens), SQS Queues, and Lambda Functions that use SNS endpoints to invoke the Firebase Android services connected with the Android Studio Project.
- Android Studio: Android Loaders, Fragments, Lifecycle methods, User Permissions, Kotlin Plugins, and Android OOP Libraries.
Add your own google-services.json from the Firebase Console into Source-Code/Android-Source-Code/src/ before building.
When a user registers and opens the app, the activity's lifecycle methods kick in and pull a token that's unique to that device. In this gif I copy the token to the clipboard so it's easy to see for the demo, though in a real build it would be sent straight to Firebase instead.
Sending a notification with a Lambda function. Here I invoke an AWS Lambda that reaches the SNS topic and its subscribed endpoints, which hands off to Firebase and pops a Toast inside the running app.
And to tie it all together, this last clip shows the Node.js Lambda test passing. Once it's green, Firebase pushes the message and it lands on the device, the whole server-to-phone path working in one shot.


