I can strongly recommend Conversations for this, which I'm using for years happily. The app is available from the privacy-friendly F-Droid as well as on Google Play if you insist. By default, it suggests you creating an account at their server (conversations.im), but you can easily use your own (I do).
Conversations is also the most complete Android client for Jabber/XMPP (one could say it's the "reference client"). It's developer often seems to be consulted on XMPP topics, and also wrote other clients (e.g. Quicksy, which is a phone-number based fork of Conversations).
Selected screenshots of Conversations (source: Google Play); click images for larger variants
I'm using the F-Droid version of Conversations (which comes without FCM) for quite a while now, and am very satisfied with it. It's reliable (yes, even notifications work fine without the Google stuff), not too heavy on the battery, comfortable enough, and rarely disappoints me (rare connection issues which I rather subscribe to my tin-foil setup than to Conversations). So I can warmly recommend it: it's meeting all the requirements you've mentioned, and it comes for free – even is open-source.