What Are iOS Push Notifications?
iOS push notifications are short messages your server sends to a user's iPhone (or iPad / Apple Watch / Mac) via Apple's servers. They can show as banners or alerts, play a sound, update an app badge, run code in the background, or update a Live Activity.
Pushes are one of three main “outside the app” surfaces on iOS, alongside widgets and Live Activities. Each is best for a different job:
- Push: something happened. Read it, act on it, dismiss.
- Widget: ambient info I want to glance at.
- Live Activity: something is happening right now and I want to watch it update.
How APNs Works
Device registers
Your app calls registerForRemoteNotifications(); iOS asks APNs for a device token unique to (app, device, environment). You ship it to your server.
Server sends push
Your server makes an HTTP/2 request to APNs with a JWT auth token, the device token, and a JSON payload. APNs returns 200 immediately on success.
APNs delivers
APNs holds a persistent TLS connection to every Apple device. It pushes the message over that connection (or queues it if offline).
APNs is reliable but not transactional — it stores at most one undelivered push per token. Plan for delivery, but never assume it.
Notification Types
Alert (banner / list / Notification Center)
The default user-visible push. Shows title, subtitle, body, sound, badge.
Silent / background
No UI. content-available: 1 wakes your app to fetch fresh data. Aggressively rate-limited by iOS.
Rich (with media)
Add images, audio, GIFs, or short video using a Notification Service Extension and a media URL.
Time-sensitive
Bypasses Focus modes and Do Not Disturb when truly urgent (deliveries, security alerts). Requires entitlement and category.
Critical
Plays a sound even when silenced. Requires Apple approval and a special entitlement (medical, public safety).
Live Activity push (liveactivity)
Updates the content state of an active Live Activity using the activity-specific push token.
Communication (Communication Notifications)
Shows the sender’s photo and name, can be interactive (reply inline). Requires INSendMessageIntent donation.
Push to Talk (PTT framework)
Voice-channel push notifications for walkie-talkie style apps. Handled by the Push To Talk framework.
Permission & Authorization
Explicit request
Call UNUserNotificationCenter.current().requestAuthorization(options:). The first time, the user sees the system prompt.
Provisional authorization
Pass .provisional and the user is opted in silently to Quiet notifications (delivered to Notification Center only). They can promote you to alerts later.
Ephemeral / App Clip
.ephemeral grants short-lived permission for App Clips so they can show a quick notification.
Best practice: do not ask immediately on first launch. Ask in context, after the user has done something that makes notifications obviously useful.
The Notification Payload
APNs payloads are JSON, with the standard fields under aps and any custom fields alongside.
{
"aps": {
"alert": {
"title": "Order shipped",
"subtitle": "Arrives Friday",
"body": "Tap to track your package."
},
"sound": "default",
"badge": 1,
"interruption-level": "time-sensitive",
"thread-id": "order-1234"
},
"orderId": "1234",
"deepLink": "newly://orders/1234"
}Other useful header values: apns-priority (10 = immediate, 5 = power friendly), apns-push-type (alert, background, liveactivity, voip, complication), apns-topic (your bundle ID).
Push vs Live Activities
Push notification
Single, interruptive, lives in Notification Center. Best for "something happened, look".
Live Activity
Persistent, in-place, lives on Lock Screen + Dynamic Island. Best for "something is happening, watch".
In practice you often use both: a push starts the conversation (“Driver is on the way”), a Live Activity keeps it updated, a final push closes it (“Delivered”).
Android Equivalents
The Android equivalent of APNs is Firebase Cloud Messaging (FCM). Persistent, in-place updates use Android ongoing notifications, often paired with a foreground service. Newer Live Updates in Material You add richer, more Live-Activity-like behavior.