
Push notifications users actually want: a developer's guide
Push notifications people keep switched on: when to ask for permission, which messages matter, APNs and FCM, Android channels, deep links and GDPR.
In short: Users want push notifications that concern them personally and arrive at the right moment: a delivery is on its way, an appointment is coming up, someone has replied. Ask for permission only once the user understands the benefit, let them choose categories, and err on the side of sending too little. Technically, pushes go through APNs (iOS) and Firebase Cloud Messaging (Android), and in React Native usually through Expo Notifications or a similar library.
Why so many push notifications are annoying
Most apps treat push as a free advertising channel. The permission prompt appears on first launch, followed by discount campaigns, "we miss you" messages and tips about features nobody was looking for. Users respond by turning notifications off or deleting the app, and both are hard to undo.
On iOS, an app can show the system permission prompt only once. If the user declines, they have to enable notifications themselves in Settings later. Since Android 13, the POST_NOTIFICATIONS permission works on a similar principle. The first impression really counts.
When and how to ask for permission
Show the benefit first
Ask at the moment a notification clearly helps. After an order: "Shall we let you know when your parcel ships?" After booking an appointment: "Would you like a reminder the day before?" A short screen of your own before the system prompt explains why you need the permission. Only if the user agrees there do you show the system dialog.
Provisional delivery on iOS
iOS supports provisional authorization. Notifications then arrive quietly in Notification Centre, with no sound and no lock screen banner. The user decides, based on real examples, whether to keep them. For apps whose value becomes clear over time, this is a good approach.
Which notifications users want
Transactional and personal
The messages that work best are triggered by the user's own action or affect them directly: order status, appointment reminders, new messages, status changes in a case, security alerts. Users expect these and miss them when they are absent.
Let users choose categories
Provide an in-app settings page with clear categories such as "Orders", "Messages" and "Offers". On Android, create these as notification channels, which have existed since Android 8. That way users can turn off individual types at system level instead of losing everything.
Timing and frequency
Respect time zones, do not send non-urgent messages at night, and bundle several events into one notification. iOS distinguishes interruption levels; "time-sensitive" is meant for things that genuinely matter right now and should be used sparingly.
Technical implementation
APNs, FCM and tokens
The operating system gives each device a push token, which your app sends to your backend. The backend delivers messages via the Apple Push Notification service (APNs) or Firebase Cloud Messaging (FCM). Tokens can change or become invalid. Refresh them on every app start and remove tokens the service reports as invalid.
In React Native projects with Expo, Expo Notifications handles much of this, including its own push service that wraps APNs and FCM; our post on Expo and React Native covers the platform. For high volumes or marketing campaigns, services like OneSignal or Braze are options.
Deep links
A notification should open the right screen in the app, not the home screen. Plan your deep link structure from the start.
Web push as an addition
Web apps can send push notifications too. On iOS this has worked since version 16.4, but only for web apps added to the home screen. Whether a progressive web app is enough for you depends on how important push and other device features are.
Data protection
Push tokens count as personal data when they are linked to a user account. Marketing notifications usually require consent, and analytics on opens should be described in your privacy policy. Our guide to GDPR-compliant software development goes into more detail.
Frequently asked questions (FAQ)
When should my app ask for push permission?
When the user has just done something where a notification clearly helps, such as placing an order or booking an appointment. Right after first launch is usually the worst moment.
How many push notifications are too many?
There is no fixed limit. What matters is whether each message is relevant to the person receiving it. Watch how many users turn notifications off, and cut back on the categories that cause it.
Do I need Firebase for push notifications?
FCM is the standard route on Android, APNs on iOS. Firebase can be used for iOS too but is not required there. With Expo or services like OneSignal, you work through one interface for both platforms.
Do push notifications work without a native app?
Yes, through web push in browsers. On iOS the web app has to be added to the home screen first. The capabilities are somewhat more limited than in native apps.
Conclusion
Push permission is a vote of trust that users withdraw quickly. Ask at the right moment, focus on personal messages and hand control to the user, and you keep this channel for the long run.
If you are planning an app with well-designed notifications, talk to us about mobile app development.
Related posts
- React Native vs. Flutter: Choosing a Framework in 2026
React Native and Flutter compared: language, architecture, performance, team and maintenance. Which framework fits your cross-platform app development.
- How Much Does Mobile App Development Cost in Germany?
What drives the cost of mobile app development in Germany: feature scope, platforms, backend, design, integrations and the running costs after launch.
- Building Your First iOS App with Swift: What to Know First
What to settle before your first iOS app in Swift: SwiftUI or UIKit, Mac and Xcode, the Apple developer account, App Store review and privacy disclosures.
- Kotlin for Android: Why It Became the Standard
Why Google made Kotlin the first choice for Android apps, what it improves over Java, and when native Android development is the right call.