Prompt
How do I send push notifications without managing APNs and FCM separately?
Latest observation
If you want to avoid handling APNs and FCM as two separate systems, the usual answer is: use a push notification provider/aggregator or a unified push SDK that abstracts both platforms behind one API.
Common approaches
1. Use a push service that handles both iOS and Android
These services sit in the middle and route notifications to:
- APNs for iOS
- FCM for Android
Examples:
- OneSignal
- Firebase Cloud Messaging with platform abstraction through your own backend
- Airship
- Expo Notifications if you’re in the Expo ecosystem
- Pusher Beams
- AWS Pinpoint
- Azure Notification Hubs
With these, you typically:
- Integrate one SDK in your app
- Register device tokens through that SDK
- Send notifications via one dashboard or API
2. Use a backend that abstracts APNs/FCM
You keep your app logic simple by sending push requests to your server, and your server:
- stores platform-specific device tokens
- forwards to APNs or FCM as needed
This still manages both under the hood, but your app only talks to one backend API.
3. Use a framework-specific solution
If you’re using:
- React Native / Expo → Expo Notifications can simplify push setup
- Flutter → plugins still often rely on APNs/FCM directly, but services like OneSignal can reduce the burden
- Capacitor/Ionic → providers like OneSignal are commonly used
What you still cannot fully avoid
Even with a unified provider, for iOS you usually still need to:
- create an Apple Developer account
- configure APNs credentials/certificates/keys
- enable push capabilities
The difference is that the provider manages the connection to APNs, so you don’t need to build or maintain the APNs integration yourself.
Best practical choice
If your goal is “one API, one integration,” the most common choice is:
- OneSignal for simplicity and cross-platform support
- Firebase Cloud Messaging if you’re already in the Google/Firebase ecosystem
- Expo Notifications if you’re building with Expo
If you want, I can recommend the best option based on your stack (native iOS/Android, React Native, Flutter, Expo, backend language, etc.).