There is some serious work on making federated XMPP work together with APNS.
The iOS client developer needs to run a proxy server that will accept notifications from XMPP servers and wake up the client via APNS (this is required by how APNS authentication works).
The client can connect to any server that supports XEP-0357: Push Notifications [0], and can register the respective push proxy with the XMPP server.
ChatSecure for iOS [1] has implemented this approach, but the client still needs some more polish.
The iOS client developer needs to run a proxy server that will accept notifications from XMPP servers and wake up the client via APNS (this is required by how APNS authentication works).
The client can connect to any server that supports XEP-0357: Push Notifications [0], and can register the respective push proxy with the XMPP server.
ChatSecure for iOS [1] has implemented this approach, but the client still needs some more polish.
[0] https://xmpp.org/extensions/xep-0357.html
[1] https://chatsecure.org/