Mobile Development31 March 2026·11 min read

Push Notification Architecture: Design and Implementation

FCM, APNs, notification channels, deep linking, rich notifications, silent notifications, and analytics for effective push notification systems.

Push NotificationsFCMAPNsDeep LinkingMobileEngagement

The Role of Push Notifications

Push notifications are the most direct channel between your app and your users. Done well, they drive engagement, retention, and revenue. Done poorly, they drive uninstalls. The difference lies in architecture, timing, and relevance.

Platform Architecture: FCM and APNs

Apple Push Notification Service (APNs)

APNs is Apple's notification delivery system. Every push notification to an iOS device routes through Apple's servers:

Your server sends a notification payload to APNs with a device token
APNs delivers the notification to the specific device
If the device is offline, APNs stores the notification and delivers it when the device reconnects (with coalescing for identical notifications)

APNs requires either a TLS certificate or a JWT token for authentication. The JWT approach (token-based) is simpler to manage and recommended for new implementations.

Firebase Cloud Messaging (FCM)

FCM handles notifications for Android and can also deliver to iOS (by proxying through APNs). For cross-platform React Native apps, FCM is typically the unified layer:

Your server sends a notification to FCM with a device registration token
FCM delivers to Android directly and routes iOS notifications through APNs
FCM supports topic-based messaging (subscribe users to topics like "sports" or "breaking-news") and device group messaging

Notification Channels (Android)

Android 8.0+ requires notification channels. Each channel represents a notification category with user-controllable settings:

Importance level: Urgent (sound + heads-up), high (sound), default (sound), low (no sound), minimum (no sound, no visual)
Sound: Custom notification sounds per channel
Vibration: Pattern and intensity
Badge: Whether to show a badge on the app icon

Design your channels around user mental models, not technical categories:

"Messages" — high importance, custom sound
"Order Updates" — default importance
"Promotions" — low importance
"System Updates" — minimum importance

Users can independently control each channel. If you stuff all notifications into one channel, users who dislike promotional notifications will disable all of them, including critical order updates.

Deep Linking from Notifications

A notification that opens the app's home screen wastes the user's tap. Deep linking takes the user directly to the relevant content:

"Your order has shipped" → Opens order tracking screen with that specific order
"New message from Priya" → Opens the conversation with Priya
"Your report is ready" → Opens the report viewer with the generated report

Implementation Pattern

Include a deep link URL in the notification payload:

Data payload: `{ "deepLink": "myapp://orders/12345" }`
App receives notification tap: Parse the deep link URL
Navigate: Use React Navigation's linking configuration to handle the URL and navigate to the correct screen

Handle both scenarios: the app is already open (foreground) and the app is launched by the notification (cold start). Cold start deep linking requires persisting the initial URL and processing it after navigation is ready.

Rich Notifications

Rich notifications include media content beyond text:

iOS Rich Notifications (Notification Service Extension)

Images: Attach product photos, user avatars, or maps
GIFs: Animated images for engaging promotional notifications
Video: Short video thumbnails that expand on long press
Custom UI: Notification Content Extensions allow fully custom notification interfaces

Android Rich Notifications

Big Picture Style: Large image displayed when notification is expanded
Big Text Style: Expandable text for longer messages
Inbox Style: Multiple lines of text (like email summaries)
Media Style: Playback controls for music/podcast apps
Custom layouts: RemoteViews for fully custom notification UI

Silent Notifications

Silent (data-only) notifications wake your app in the background without showing anything to the user. Use cases:

Background data sync: Trigger a sync when new data is available on the server
Content pre-fetching: Download content so it is ready when the user opens the app
Configuration updates: Push updated feature flags or configuration without requiring an app update
Logout: Force logout on all devices when a user changes their password

On iOS, silent notifications have strict rate limiting. Apple throttles apps that send too many silent notifications. On Android, FCM data messages are unrestricted but may be delayed by battery optimization (Doze mode).

Notification Analytics

Track the full notification funnel:

Sent: How many notifications were sent from your server
Delivered: How many reached the device (FCM provides delivery receipts)
Opened: How many users tapped the notification (track with a unique notification ID)
Converted: How many users completed the desired action after tapping

Key Metrics

Opt-in rate: Percentage of users who allow notifications. Industry average is 50-60% on Android, 40-50% on iOS.
Open rate: Percentage of delivered notifications that are tapped. 5-15% is typical; above 20% is excellent.
Uninstall correlation: Track whether notification frequency correlates with uninstalls. If uninstalls spike after a promotional notification campaign, you are over-sending.

Best Practices

Personalize: "Your order #1234 has shipped" outperforms "An order has shipped" by 4x in open rates
Timing matters: Send notifications when users are most likely to engage. Analyze your app usage patterns by timezone.
Frequency capping: Limit the number of notifications per user per day. 2-3 non-transactional notifications per day is the maximum before users start disabling.
Re-engagement: For users who have not opened the app in 7+ days, a well-crafted re-engagement notification can reactivate 10-15% of dormant users.
A/B test: Test notification copy, timing, and deep link destinations. Small improvements in open rate compound over millions of notifications.

Push notifications are powerful but require disciplined execution. Need help designing a notification strategy for your app? Contact us.

BH

The Beyond Horizon Team

We are a digital agency based in Ajmer, India, specializing in Next.js web applications, React Native mobile apps, and UI/UX design. 150+ projects delivered.

About Us →

Have a project in mind?

We build fast, SEO-ready web and mobile applications.

Get a Free Consultation