Process4 min read
Push notifications users keep switched on
By Sannan MalikPublished
Short answerAsk for notification permission only when the user does something that needs it, such as placing an order, never on first launch. Send messages about the user's own activity first, and marketing only to people who opted in separately. Never send the same alert twice. Give users a settings screen where each category can be switched off, so they turn one type off rather than all of them.
Ask at the moment the notification makes sense
A permission prompt on first launch is a wasted prompt. The user has not seen the app yet, so the request means nothing.
Both platforms push you towards asking in context. On Android 13 and higher, apps start with notifications off and need the POST_NOTIFICATIONS runtime permission, and an app that targets Android 13 controls when the dialog appears. Google's examples of good moments are a user tapping a bell icon, following an account, or submitting a food delivery order. Apple's documentation gives a similar example: in a task app, ask after the person schedules their first task. Apple also says the system shows the prompt only the first time you ask. Later requests return the recorded answer without prompting.
That makes the first ask expensive. My rule: put the request behind the first action whose follow-up the user will want to hear about. Order placed, so ask about delivery updates. Booking made, so ask about reminders. Explain the reason on your own screen first, then trigger the system dialog.
On iPhone there is a second route. Provisional authorization delivers notifications quietly to Notification Center, with no sound, banner or lock screen alert, and no prompt up front. Each one carries buttons to keep or turn off notifications. I would use it for apps where the value is easier to show than to explain, and stick with a normal request for anything time-critical such as a delivery arriving.
What earns a place on the lock screen
Messages about the user's own activity come first: order status, booking confirmations and reminders, a reply to their message, a payment received. These are the reasons people allowed notifications.
Marketing is a separate permission in practice. Apple's App Review Guidelines say push should not be used for promotions or direct marketing unless the customer explicitly opted in through consent language in your app, and the app must offer a way to opt out. The same guideline says the app must work without push, and push should not carry sensitive personal or confidential information. Apple's design guidance adds that previews can be hidden, so write text like "Your appointment is tomorrow" rather than putting the clinic department and the doctor's name on the lock screen.
My frequency rules, and the settings screen I would build
These are opinions, not platform rules. They come from treating every notification as something the user can punish you for. Android shows users how many notifications an app sends each day, and they can revoke permission at any time.
- One notification per event. Apple's guidance says to avoid sending several for the same thing, because people may turn off all notifications from your app.
- Promotions, if the user opted in, no more than once a week unless they chose more.
- No promotional sends at night in the user's local time. For a UAE audience, I would also review send times during Ramadan, when daily routines shift.
- A settings screen inside the app with one switch per category: orders or bookings, reminders, messages, offers. Offers off by default.
- On Android, one notification channel per category with the same names. Android has required channels since 8.0, users see them as categories in system settings, and once a channel is created only the user can change its sound and importance.
- A link from each in-app switch to the matching system setting, so turning a category back on is one tap.
- Check the permission before sending. Android has areNotificationsEnabled(), and Apple says to check authorization status before scheduling, because users can change it at any time.
How push fits into a build
For a Flutter app I would usually send push through Firebase Cloud Messaging. It covers Android, iOS and Flutter from one setup, can target a single device, a group of devices or a topic, and carries up to 4096 bytes per message. The app server sends through the Firebase Admin SDK or the FCM HTTP v1 API. The category switches above map well to topics: a user who turns off offers is unsubscribed from the offers topic.
Push notifications, where supported, are listed in the Scale package ($2,500), which also includes an admin dashboard. On Launch ($999) or Growth ($1,699), ask for push to be named in the written scope before work starts, with the categories listed. Hosting and third-party fees are not included in any package. Send me the list of messages you would want the app to send, and I will tell you which ones I would cut.
Questions
- If a user says no, can I ask again?
- Not with the system dialog on iPhone: Apple prompts only the first time, so after that you can only point the user to Settings. On Android 13 and higher, Google's recommended flow shows your own explanation screen when shouldShowRequestPermissionRationale() returns true, then requests again. A user who keeps refusing should be left alone.
- Do I need Firebase for push notifications?
- No. It is one option, and the one I would pick for a Flutter app, because one setup covers Android, iOS and Flutter. Other providers exist; I would settle the choice during scoping, before any code is written.
Sources
Platform rules and fees in this article were checked against these official pages on 9 November 2026. They change, so confirm before you rely on them.
Sannan Malik is a software architect and product builder with 8+ years in software, CEO of Alpha Notic FZC and a Certified Scrum Product Owner. He builds mobile apps and business software for companies in the UAE, UK and US.