<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Push-Notifications on Sohil Ladhani Blog</title><link>https://sohilladhani.com/blog/tags/push-notifications/</link><description>Recent content in Push-Notifications on Sohil Ladhani Blog</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 13 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://sohilladhani.com/blog/tags/push-notifications/index.xml" rel="self" type="application/rss+xml"/><item><title>Delivery Receipts and Read Tracking</title><link>https://sohilladhani.com/blog/post/2026-04-13-delivery-receipts-and-read-tracking/</link><pubDate>Mon, 13 Apr 2026 00:00:00 +0000</pubDate><guid>https://sohilladhani.com/blog/post/2026-04-13-delivery-receipts-and-read-tracking/</guid><description>&amp;ldquo;Sent&amp;rdquo; is not &amp;ldquo;delivered.&amp;rdquo; &amp;ldquo;Delivered&amp;rdquo; is not &amp;ldquo;opened.&amp;rdquo; These are three different states and conflating them causes subtle bugs in badge counts and notification UIs.
The Delivery Gap APNs and FCM give you delivery confirmation at the gateway level, not the device level. You know the gateway accepted your payload. You don&amp;rsquo;t know if the device received it, displayed it, or was offline when it arrived.
For most notifications this is fine.</description></item><item><title>Notification Deduplication</title><link>https://sohilladhani.com/blog/post/2026-04-12-notification-deduplication/</link><pubDate>Sun, 12 Apr 2026 00:00:00 +0000</pubDate><guid>https://sohilladhani.com/blog/post/2026-04-12-notification-deduplication/</guid><description>Your retry logic fires. The user gets the same notification twice. They think your app is broken. They&amp;rsquo;re not wrong.
The Problem with Retries Push delivery is at-least-once by design. Your server sends to APNs/FCM, the network hiccups, you don&amp;rsquo;t get a response, so you retry. APNs might have delivered the first one. The user now sees two identical alerts.
The fix lives at two levels: your server and the gateway.</description></item><item><title>Push Notification Delivery</title><link>https://sohilladhani.com/blog/post/2026-04-11-push-notification-delivery/</link><pubDate>Sat, 11 Apr 2026 00:00:00 +0000</pubDate><guid>https://sohilladhani.com/blog/post/2026-04-11-push-notification-delivery/</guid><description>You don&amp;rsquo;t send a push notification directly to a phone. You send it to Apple or Google, and they deliver it for you. That indirection has consequences most backend engineers don&amp;rsquo;t think about until something breaks.
APNs and FCM Apple Push Notification Service (APNs) handles iOS. Firebase Cloud Messaging (FCM) handles Android (and can handle iOS too). Your server maintains a persistent HTTP/2 connection to these gateways and submits payloads. The gateway handles the actual delivery to the device, retries if the device is offline, and tells you when a token is no longer valid.</description></item></channel></rss>