IoT Sensor Critical Alerts in Mobile App

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 1 servicesAll 1735 services
IoT Sensor Critical Alerts in Mobile App
Medium
~2-3 business days
FAQ
Our competencies:
Development stages
Latest works
  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1054
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    445

Implementing Critical IoT Sensor Alerts in a Mobile Application

Temperature in the server room climbed to 45°C at 3 AM. The push notification arrived at 9 AM — when the smartphone connected to Wi-Fi. By then, equipment overheated. IoT alerts are a task where "delayed notification" is worse than no notification at all.

Why Standard FCM Isn't Suitable for Critical IoT Alerts

Standard FCM priority (normal) buffers delivery when a device is in Doze Mode. Fine for non-critical notifications. For IoT alerts — unacceptable.

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

Request permission for critical notifications — a separate prompt, different from standard:

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

User must explicitly allow critical notifications — can't enable without consent.

IoT Pipeline Architecture

Sensors → MQTT broker (Mosquitto or AWS IoT Core) → server handler → FCM/APNs.

MQTT is the de-facto standard for IoT: lightweight protocol, works over unstable connections, supports QoS 0/1/2. Sensors publish data to topic sensors/{device_id}/temperature, server subscribes to all user device topics.

Server handler checks incoming values 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 temperature stays above threshold for 30 minutes — that's not 180 notifications, but one with status updates. Redis: SET alert:{device}:{metric}:active 1 EX 1800 — while key exists, don't send new alerts for this condition.

Multi-Level Alert System

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

On Android similarly via notification channels with different importance: IMPORTANCE_DEFAULT, IMPORTANCE_HIGH, IMPORTANCE_MAX.

Mobile Application: Monitoring Screen

Dashboard with live sensor data — implemented via WebSocket connection (not polling, to see real-time updates while app is open). On Flutter: web_socket_channel package, data in Riverpod StreamProvider.

Historical charts — fl_chart or syncfusion_flutter_charts. Store history on server in InfluxDB or TimescaleDB (PostgreSQL extension) — both optimized for time series.

Threshold rule configuration in app: user selects sensor, metric, operator (>, <, ==), value, severity level. Rules saved on server.

Development Process

  1. Choose MQTT broker and topic schema
  2. Develop server handler with deduplication
  3. Set up FCM + APNs critical alerts entitlement
  4. Develop mobile client (dashboard, alert settings)
  5. Test delivery in Doze Mode and Do Not Disturb
  6. Load test (many sensors simultaneously)

Timeline: from 4 weeks (integration with existing IoT infrastructure) to 10–12 weeks (full stack including MQTT broker, server, and mobile client).