You're correct that the Firebase Cloud Messaging is essentially required for Android push. As of Android 8, Google prevents background connections from being held open by apps, and requires FCM in order to wake up apps (eg: to receive a notification). This is documented here: https://developer.android.com/training/monitoring-device-sta...
If the app is already running (eg: in the foreground), then you can (and probably should) use your own non-FCM connection for sending messages or data.
If the app is already running (eg: in the foreground), then you can (and probably should) use your own non-FCM connection for sending messages or data.