| ▲ | greysonp 6 hours ago |
| Signal developer here. Not entirely sure what you're saying. I'm only an Android guy, but FCM messages are certainly one trigger that can allow an app process to run, but it's not the only trigger. You can schedule system alarms, jobs, etc. And the notification does not need to be provided by the FCM message. In our case, the server just sends empty FCM messages to wake up the app, we fetch the messages ourselves from the server, decrypt them, and build the notification ourselves. No data, encrypted or otherwise, is ever put into the FCM payloads. |
|
| ▲ | satvikpendem 5 hours ago | parent [-] |
| Sure but it needs to go through Firebase regardless of the content of the notification message, I do not believe there is a way to use a third party notification service which does not depend on Firebase. |
| |
| ▲ | Zak 2 hours ago | parent | next [-] | | It doesn't. The API for displaying a notification is purely local. Receiving a ping from Firebase Cloud Messaging triggers the app to whatever it does in order to display its notification. In the case of Signal, that probably means something like fetching the user's latest messages from the server, then deciding what to show in the notification based on the user's settings, metadata, and message content. Here's example code for using FCM to show a notification. In this case, the notification content also passes through FCM, but Signal does not do that. https://www.geeksforgeeks.org/android/how-to-push-notificati... | | |
| ▲ | satvikpendem an hour ago | parent [-] | | Sorry I should clarify, by "it" I meant any sort of ping must go through Firebase Cloud Messaging, not that the message content itself goes through Firebase. Looks like there is a way to bypass Firebase by using something like UnifiedPush which runs a perpetual background process that acts similar to Google Play Services to pick up notifications from the server and calls the local notification API. | | |
| ▲ | Zak an hour ago | parent [-] | | It's theoretically possible to just keep an app running in the background all the time and periodically poll a server. That's unreliable though since some OEM Android builds will kill it for that even if the user disables battery optimizations. Those OEMs sort of have a point; if lots of apps did that it would drain the battery fast. | | |
| ▲ | satvikpendem an hour ago | parent [-] | | Then that's basically what I said right? That there is in practice no way to opt out of using Firebase if you want consistent notifications. |
|
|
| |
| ▲ | eptcyka 3 hours ago | parent | prev | next [-] | | When running Signal without google play services, Signal reliably received push notifications and with minimal battery drain. | |
| ▲ | gertop 3 hours ago | parent | prev [-] | | Any application can send notifications without going through a server. |
|