Интеграция AWS IoT Core в мобильное IoT-приложение

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.
Разработка и поддержка любых видов мобильных приложений:
Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Предлагаемые услуги
Показано 1 из 1 услугВсе 1735 услуг
Интеграция AWS IoT Core в мобильное IoT-приложение
Средняя
~3-5 рабочих дней
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    760
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    646
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1056
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    878
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    450

Интеграция AWS IoT Core в мобильное IoT-приложение

AWS IoT Core — это managed MQTT-брокер с аутентификацией по X.509 сертификатам, политиками доступа через AWS IAM/IoT Policies и возможностью масштабироваться до миллионов устройств. Интегрировать его в мобильное приложение не сложно, но есть несколько мест, где ошибаются почти все.

Аутентификация: что выбрать для мобильного клиента

AWS IoT Core поддерживает три метода auth для мобильных клиентов: X.509 сертификаты, AWS Cognito Identity Pools и SigV4. Сертификаты — для устройств, не для мобильных приложений: хранить private key в приложении небезопасно, ротация сложна.

Правильный путь для мобильных клиентов — Cognito Identity Pool + IoT Core. Пользователь логинится через Cognito User Pool (или федеративную идентификацию через Google/Apple), получает временные AWS credentials через AssumeRoleWithWebIdentity, и уже с этими credentials подключается к IoT Core через aws-iot-device-sdk или нативный MQTT over WebSocket.

На Flutter используем amplify_auth_cognito для авторизации и mqtt_client с кастомным WebSocket endpoint в формате:

wss://[endpoint].iot.[region].amazonaws.com/mqtt

Подписываем WebSocket Upgrade request через SigV4 — заголовки X-Amz-Security-Token, X-Amz-Date, Authorization. Библиотека aws_common из Amplify SDK умеет это делать.

На React Native — AWS Amplify с @aws-amplify/pubsub, который под капотом использует MQTT over WebSocket с автоматической SigV4-подписью.

IoT Policies: где режутся права

IoT Policy — это отдельный от IAM механизм. Даже если у Cognito-роли есть iotdata:Publish, без IoT Policy на iot:Publish для конкретных топиков запросы вернут 403. Типичная политика для мобильного клиента:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["iot:Connect"],
      "Resource": "arn:aws:iot:region:account:client/${cognito-identity.amazonaws.com:sub}"
    },
    {
      "Effect": "Allow",
      "Action": ["iot:Subscribe", "iot:Receive"],
      "Resource": "arn:aws:iot:region:account:topicfilter/home/${cognito-identity.amazonaws.com:sub}/*"
    },
    {
      "Effect": "Allow",
      "Action": ["iot:Publish"],
      "Resource": "arn:aws:iot:region:account:topic/home/${cognito-identity.amazonaws.com:sub}/*"
    }
  ]
}

${cognito-identity.amazonaws.com:sub} — это policy variable, которая подставляет Cognito Identity ID. Каждый пользователь видит только свои устройства. Это стандартный паттерн multi-tenant IoT.

Device Shadow: состояние без постоянного соединения

AWS IoT Device Shadow — ключевая фича для мобильных приложений. Устройство может быть офлайн, но Shadow хранит его последнее известное состояние. Мобильный клиент пишет в desired, устройство читает при подключении и обновляет reported.

На практике: пользователь выключил свет через приложение. Команда ушла в Shadow desired. Устройство было офлайн 10 минут — при восстановлении соединения прочитало delta и выполнило команду. Без Shadow пришлось бы держать очередь команд самостоятельно.

Для чтения Shadow из мобильного приложения — REST API или MQTT топики $aws/things/{thingName}/shadow/get. Обновление — publish в $aws/things/{thingName}/shadow/update с {"state": {"desired": {"power": "OFF"}}}.

Rules Engine для уведомлений

AWS IoT Rules позволяют триггерить Lambda, SNS, SQS по условиям из MQTT-сообщений. Для push-уведомлений: IoT Rule → Lambda → SNS → Firebase Cloud Messaging / APNs. Это чище, чем держать постоянное соединение с MQTT только ради уведомлений.

Типичные проблемы

Reconnect storm: 1000 устройств одновременно переподключаются после сетевого сбоя → IoT Core throttling → лавина ошибок. Решение: exponential backoff с jitter в клиентском коде, mqtt_client это не делает автоматически — нужно реализовать самостоятельно.

Endpoint throttling: iotdata endpoint лимитирует до 20 транзакций в секунду на аккаунт по умолчанию. Для реальных продакшн-нагрузок нужно запрашивать лимиты через AWS Support заранее.

Процесс и сроки

Настройка Cognito + IoT Core + IoT Policies + базовая интеграция — 1–2 недели. Device Shadow, Rules Engine, уведомления — ещё 1–2 недели. Полная интеграция с реальными устройствами и нагрузочное тестирование — 4–6 недель. Стоимость рассчитывается после оценки количества устройств и частоты сообщений.