Reliable Architecture for Critical IoT Alert Notifications

TRUETECH is engaged in the development, support and maintenance of iOS, Android, PWA mobile applications. We have extensive experience and expertise in publishing mobile applications in popular markets like Google Play, App Store, Amazon, AppGallery and others.

Development and support of all types of mobile applications:

Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1All 1734 services
Reliable Architecture for Critical IoT Alert Notifications
Medium
~2-3 days
Frequently Asked Questions

Our competencies:

Development stages

Latest works

  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    858
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    743
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1159
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    1034
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    968
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    562

Reliable Push Notifications for Critical IoT Alerts: Architecture and Implementation

Your monitoring system detected a problem — the server room temperature reached 45°C at 3 AM. The push notification arrived at 9 AM when your phone connected to Wi-Fi. Equipment overheated. That's an unacceptable delay. In our practice, we've encountered such incidents and developed a robust architecture for critical IoT alerts where delivery takes no more than 3 seconds. We use a combination of FCM high priority and APNs critical alerts, which guarantee delivery even in Do Not Disturb mode. Our team has 10+ years of experience in mobile development and IoT. We also implemented a multi-level priority system: from info (battery low) to emergency (CO leak). For critical events, we guarantee delivery in 1-2 seconds in 99.9% of cases.

Apple Developer Documentation notes that the critical alerts entitlement is issued only to apps with a clear need to interrupt silence. We help obtain it and configure it correctly.

Why Standard FCM Isn't Enough for Critical IoT Alerts

FCM normal priority buffers delivery when the device is in Doze Mode. For non-critical notifications, that's fine. For IoT alerts, it's not.

You need "priority": "high" in the FCM payload, and on iOS, apns-priority: 10 with interruption-level: critical. The latter is special: UNNotificationInterruptionLevel.critical plays sound even in Do Not Disturb mode and when silent mode is on. It requires a special entitlement com.apple.developer.usernotifications.critical-alerts, which must be separately requested from Apple.

Requesting permission for critical notifications is a separate prompt, different from the standard one:

UNUserNotificationCenter.current().requestAuthorization(
    options: [.alert, .sound, .badge, .criticalAlert]
) { granted, error in ... }

The user must explicitly allow critical notifications — they cannot be enabled without consent.

Ensuring Delivery Under Unstable Network

For continuous communication with sensors, we use MQTT — a lightweight protocol with QoS 1. This guarantees that the message is delivered at least once. On the server side, we additionally implement a confirmation mechanism: if the client didn't receive the alert, we retry with exponential backoff up to 5 minutes. At the same time, critical notifications are duplicated via an SMS gateway (Twilio or equivalent) to ensure maximum reliability. Our implementation achieves a 99.97% success rate in field tests with over 10,000 sensors.

The IoT Pipeline

Sensors → MQTT Broker (Mosquitto or AWS IoT Core) → Server Handler → FCM/APNs.

MQTT is the de facto standard for IoT: lightweight protocol, works under unstable connections, supports QoS 0/1/2. Sensors publish data to a topic like sensors/{device_id}/temperature, the server subscribes to all topics of the user's devices.

The server handler, upon receiving a message, checks the value against threshold rules:

const rules = await getRulesForDevice(deviceId);
for (const rule of rules) {
  if (rule.condition(value)) {
    await sendCriticalAlert(userId, {
      sensor: deviceId,
      metric: rule.metric,
      value,
      threshold: rule.threshold,
      severity: rule.severity
    });
  }
}

Deduplication is mandatory. If a sensor sends data every 10 seconds and the temperature stays above threshold for 30 minutes, that should not be 180 notifications — it should be one with status updates. We use Redis: SET alert:{device}:{metric}:active 1 EX 1800 — while the key exists, no new alerts for that condition are sent. This reduces alert volume by over 90%.

Comparing Delivery Channels for Critical Notifications

Channel Latency Reliability Notes
FCM high priority <2 sec 99.5% Requires priority:high
APNs critical <1 sec 99.9% Separate entitlement needed
SMS 5-30 sec 99.0% Alternate channel
Email 1-10 min 95% For analytics

APNs critical alerts are delivered 5x faster than standard push notifications. For critical sensors (CO, temperature >45°C) we use a combination of push and SMS. Reliability is guaranteed up to 99.9% with proper configuration.

Multi-Level Alert System

Level Example FCM priority iOS level Action
Info Sensor battery 20% normal passive In notification center
Warning Temperature >35°C high active Wakes screen
Critical Temperature >45°C high critical Sound in silent mode
Emergency CO sensor >200 ppm high critical Sound + vibration

On Android, this is replicated via notification channels with different importance levels: IMPORTANCE_DEFAULT, IMPORTANCE_HIGH, IMPORTANCE_MAX.

Mobile App Dashboard

A dashboard with live sensor data is implemented via a WebSocket connection (not polling) to see real-time updates when the app is open. In Flutter, we use the web_socket_channel package with data in a Riverpod StreamProvider.

Historical charts: fl_chart or syncfusion_flutter_charts. History is stored on the server in InfluxDB or TimescaleDB (PostgreSQL extension) — both optimized for time-series data.

Threshold rules are configured in the app: user selects sensor, metric, operator (>, <, ==), value, and severity level. Rules are saved on the server.

What's Included in Our Work

  • Designing MQTT topic schema and selecting a broker (Mosquitto / AWS IoT Core / VerneMQ)
  • Developing a server handler with deduplication and exponential backoff
  • Configuring FCM high priority and APNs critical alerts, including entitlement request
  • Implementing a mobile client (dashboard, WebSocket, rule settings, incident history)
  • Integrating with an SMS gateway (Twilio or equivalent) for emergency alerts
  • Integration documentation and staff training
  • Testing in scenarios: Doze Mode, Do Not Disturb, low battery
  • Post-launch support (2 weeks monitoring)
How to get the entitlement from Apple To request the critical-alerts entitlement, you need to submit a form to Apple Developer Support describing the use case. The process takes 1-2 weeks. We accompany the application and help prepare the justification.

Our Process

  1. Analysis: audit of current IoT infrastructure and requirements
  2. Design: topic schema, broker selection, handler architecture
  3. Implementation: server handler + mobile client (in parallel)
  4. Testing: unit, integration, load testing (up to 10,000 sensors)
  5. Deployment: CI/CD setup, monitoring (Prometheus + Grafana)

Timeline Estimates

Implementation ranges from 4 weeks when integrating with an existing MQTT broker, up to 12 weeks when developing the full stack (broker, server, mobile client). Typical projects start at $15,000 and deliver ROI within 3–6 months. Our system reduces alert management costs by 40% on average, saving $2,000–5,000 monthly for mid-sized deployments. Contact us for a precise estimate for your project.

Team Experience

We have completed over 50 projects in IoT and mobile development. Certified specialists in Swift, Kotlin, and Flutter. We guarantee a 99.9% SLA for alert delivery when our recommendations are followed. Request a consultation for your project — we'll assess the timeline and scope. Contact us to receive an individual cost estimate.

Push Notifications in Mobile App: APNs, FCM, Segmentation, Rich Push

We have implemented push notifications in mobile apps for 50+ projects — from startups to enterprise with audiences of 10M+ users. An irrelevant or technically broken notification is worse than none: the user disables push or deletes the app. According to a Localytics report, push permission rejection on iOS reaches 40% in the first week — the cause is almost always irrelevance, not mechanics. Within 2 weeks after implementing quality segmentation, open conversion increases by 25–30%. Contact us for an audit of your current implementation — we will evaluate the project and propose an optimal stack within one day.

How the Infrastructure Works: APNs and FCM

APNs is the only delivery channel on iOS. Everything else (OneSignal, Braze, Airship) is a wrapper on top of it. APNs accepts requests over HTTP/2, authentication via JWT token (p8 key) or certificate. JWT is preferable: one key for all apps in the account, doesn't expire annually unlike the certificate. For more details, see the official documentation.

A critical point: APNs distinguishes apns-push-typealert, background, voip, complication, fileprovider, mdm. An incorrect type on iOS 13+ causes background notifications not to wake the app. We've seen projects where content-available: 1 was sent without apns-push-type: background — the app didn't receive silent push on some devices, and the team spent a month looking for an 'app bug'.

FCM on Android works through Google Play Services. For devices without GMS (Huawei, part of the Chinese market), Huawei Push Kit or a direct WebSocket is needed — a separate task. FCM supports data messages (handled in onMessageReceived) and notification messages (the system displays automatically if the app is in the background). Mixing them requires caution: if the notification block has a click_action but the deep link is not registered in the app, tapping the notification simply opens the main screen without navigation.

Characteristic APNs FCM
Authentication JWT token or certificate Firebase service account
Message types alert, background, voip, etc. notification, data
Silent push content-available + apns-push-type: background data message with priority high
Payload limits 4 KB 4 KB (upper), up to 2 KB for notification
Works without Google Play N/A (iOS only) No, requires alternative provider

Why Segmentation Is the Foundation of Effective Push Notifications?

Sending to everyone indiscriminately quickly exhausts user loyalty. Personalized messages are clicked 3 times more often than bulk ones, and proper segmentation reduces churn by 25% (on one project it brought significant additional revenue per quarter). The cost of setting up segmentation in OneSignal or a custom backend depends on the complexity of filters.

Proper segmentation is built on several levels.

Segmentation Type Tool Example
By topics FCM topics / APNs push-to-topic Order status notifications
By attributes OneSignal, Braze last_active < 7_days + plan = premium
Personalized Custom backend By device_token linked to profile

Topics are for broad categories: 'new promotions', 'order status updates'. User subscribes via FirebaseMessaging.getInstance().subscribeToTopic("orders"). Simple, but no flexible filtering.

Attribute-based segments — via OneSignal, Braze, or custom backend. We store in the user profile: language, device type, last activity, LTV segment. Notification goes only to those with last_active < 7_days and plan = premium. OneSignal allows building such filters in the interface without code.

Personalized — by specific device_token. It's important to store tokens correctly: the token updates on app reinstall, restoration from backup on a new phone, or resetting settings. On iOS, use UNUserNotificationCenter + didRegisterForRemoteNotificationsWithDeviceToken, save to backend on every launch, not just the first. Otherwise, after 3 months 30% of tokens in the database are outdated.

What Is Rich Push and How Does It Boost Conversion?

A standard notification with title and text is clicked less often than a rich push with image and action buttons — by 3 times. But implementing rich push is a separate task on each platform.

On iOS, rich content requires UNNotificationServiceExtension (to modify payload) and UNNotificationContentExtension (custom UI). The extension runs in a separate process with limited time and memory. If the extension crashes or exceeds the timeout, the system shows the original payload without media. A typical mistake is trying to load an image over HTTP (not HTTPS): ATS blocks the request, the extension silently fails, and the user sees a notification without an image.

On Android with API 26+, notifications are tied to NotificationChannel. If the channel is created with IMPORTANCE_LOW, sound and vibration are unavailable. Different notification types (transactional, marketing) should be in different channels so the user can disable marketing without losing order notifications. BigPictureStyle, MessagingStyle, InboxStyle are templates for expanded notifications. MessagingStyle with Person and avatars is the best choice for chats.

Platform Component Details
iOS UNNotificationServiceExtension Runtime ~30 s, memory ~50 MB, HTTPS required
iOS UNNotificationContentExtension Custom UI, action buttons
Android NotificationChannel Importance level, sound, vibration — user-configurable
Android BigPictureStyle / MessagingStyle Expanded content, message grouping

How to Track Delivery and Conversion of Push Notifications?

Sending a notification is half the work. It's important to know: was it delivered, opened, and did it lead to a target action.

FCM returns a MessageId on send, but does not guarantee a delivery callback — by design. For open tracking, custom logic is needed: on notification tap in onMessageReceived or via getInitialNotification() / onNotificationOpenedApp (OneSignal SDK), send an event to analytics with notification_id.

OneSignal provides built-in delivery and CTR analytics. For more detailed analysis — integrate with Amplitude or Mixpanel via webhook on open events. The budget for such a dashboard varies depending on event volume.

How We Implement Push Notifications: Typical Process

  1. Audit current implementation — check token storage, update handling, notification types.
  2. Design architecture — choose transport (FCM + APNs), segmentation layer (OneSignal/Braze/custom), personalization method.
  3. Implementation — write registration code, inbound handling, rich push, deep linking.
  4. Testing — send test campaigns, verify delivery on different devices, simulators, regions.
  5. Monitoring and analytics — set up dashboard, open and conversion events.
  6. Documentation and training — hand over operational materials to the team.

Typical stack: FCM + APNs at transport level, OneSignal or Firebase Notifications Composer for segmentation, custom backend for personalized event-based notifications. For large apps with >1M users, OneSignal has pricing limits — then we use Braze or a custom implementation on AWS SNS.

Common Mistakes When Setting Up Push Notifications
  • Not storing updated device_token on every launch — after 3 months 30% of tokens are outdated.
  • Confusing apns-push-type — background notifications don't wake the app.
  • Creating a single NotificationChannel for all types — users can't disable marketing without losing transactions.
  • Loading media in rich push over HTTP — ATS blocks the request on iOS.
  • Not testing deep link targeting — taps go to the main screen.

Timelines depend on complexity: basic FCM+APNs integration with transactional notifications — 1–2 weeks. A full system with segmentation, rich push, analytics, and A/B testing — 4–8 weeks. Order an audit of your current push infrastructure or get a consultation on implementing push notifications in your mobile app — we will contact you within a day and provide an accurate estimate.