My biggest problem with FCM is how hostile it is to open source and self-hosted services. If you want to push a message to a phone, you don't just need to be registered with Google; you need to
be the app developer. App developers cannot allow third parties to push to their app, because they'd have to give them their FCM credentials, which is a no-no.
So the only way to get push notifications on, say, apps that provide a client for generic protocols or self-hosted services, is for either the app developer to run a proxy gateway (which inevitably runs into scalability issues forcing them to start charging for it or require registration with free quotas), or for you to create your own build of the app. I ended up having to do that with Linphone, rebuild it under my own app ID with my own FCM creds, just so I could get push notification integration with my own SIP server instead of having to keep a background SIP connection open to receive calls.
This is completely silly, with the only free endgame being everyone has to compile their own apps and have one app installed for every potential provider, even if they share a protocol.
So the only way to get push notifications on, say, apps that provide a client for generic protocols or self-hosted services, is for either the app developer to run a proxy gateway (which inevitably runs into scalability issues forcing them to start charging for it or require registration with free quotas), or for you to create your own build of the app. I ended up having to do that with Linphone, rebuild it under my own app ID with my own FCM creds, just so I could get push notification integration with my own SIP server instead of having to keep a background SIP connection open to receive calls.
This is completely silly, with the only free endgame being everyone has to compile their own apps and have one app installed for every potential provider, even if they share a protocol.