The way I'm handling this is to ask nip 29 relays to push events to user (client)-selected push servers. This keeps the events off of public relays, allows nip 29 community relays to choose not to support notifications if they prefer privacy, and supports fcm/apns push. See below for the nip:
https://github.com/nostr-protocol/nips/pull/2194
