Трекинг криптопортфеля в мобильном приложении: реализация

Клиент приходит с задачей объединить балансы с Binance, MetaMask и Bybit в одном экране. Типичная проблема: данные разрозненны, форматы различаются, ручной ввод занимает часы. Мы берем на себя агрегацию портфеля — сбор данных из биржевых API, on-chain кошельков и ручного ввода с актуальными ценами.

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Трекинг криптопортфеля в мобильном приложении: реализация
Средний
~5 дней

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    898
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    784
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1219
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    1081
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    1004
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    600

Клиент приходит с задачей объединить балансы с Binance, MetaMask и Bybit в одном экране. Типичная проблема: данные разрозненны, форматы различаются, ручной ввод занимает часы. Мы берем на себя агрегацию портфеля — сбор данных из биржевых API, on-chain кошельков и ручного ввода с актуальными ценами. Наш опыт интеграции более 50 криптосервисов позволяет предвидеть нюансы и гарантировать корректную работу с первого запуска. За 5 лет работы мы выполнили более 15 проектов по трекингу криптопортфеля для мобильных приложений. Результат — полноценный трекинг портфеля криптоактивов, доступный в режиме реального времени.

В статье разберем техническую реализацию: откуда берутся данные, как кэшировать, обновлять в фоне и типичные ошибки. Используем Swift 5.9+ на iOS, Kotlin + Jetpack Compose на Android, Flutter или React Native для кросс-платформы. Все примеры кода — из реальных проектов. Это мобильное приложение для крипты, которое объединяет всю картину.

Как организовать трекинг криптопортфеля: сбор данных с бирж и кошельков

Три источника данных, каждый со своими особенностями. Мы обеспечиваем бесшовную интеграцию независимо от протокола. Для агрегации балансов бирж используем read-only API.

Биржевые API

Binance /api/v3/account возвращает балансы спот-кошелька, но требует HMAC-SHA256 подпись с timestamp и recvWindow (по умолчанию 5000 мс). Bybit V5 /v5/account/wallet-balance — аналогично. Мы храним ключи зашифрованными на устройстве (iOS Keychain, Android Keystore), приватные ключи никуда не передаются — только read-only API keys с IP-белым списком, если биржа поддерживает.

On-chain кошельки

Для Ethereum-кошельков используем Alchemy или Infura: /eth_getBalance плюс alchemy_getTokenBalances для ERC-20. Для Solana — getTokenAccountsByOwner через Helius или QuickNode. Адрес публичный, ключи не нужны — это самый безопасный канал. Один запрос к ноде возвращает баланс за 100–300 мс, а для 10+ токенов — до 2 секунд.

Ручной ввод

Часть активов (стейкинг, p2p, аппаратные кошельки) пользователи добавляют вручную. Простая форма: тикер + количество. Мы объединяем их с автоматическими источниками и показываем общую картину.

Актуальные цены — через CoinGecko API /simple/price (до 30 тикеров за запрос) или CoinMarketCap Pro API. CoinGecko бесплатный план ограничен 30 запросами/минуту — для приложения с фоновым обновлением хватает, если кэшировать цены с TTL 60 секунд.

Пример агрегации на Swift с параллельными запросами
// iOS, Swift — агрегация портфеля actor PortfolioAggregator { private let exchangeService: ExchangeService private let priceService: PriceService private let walletService: WalletService func aggregate() async throws -> Portfolio { async let exchangeBalances = exchangeService.fetchAll() async let onchainBalances = walletService.fetchAll() let (exchange, onchain) = try await (exchangeBalances, onchainBalances) let allTickers = (exchange + onchain).map(\.ticker) let prices = try await priceService.getPrices(tickers: allTickers) let positions = (exchange + onchain).map { balance in PortfolioPosition( ticker: balance.ticker, amount: balance.amount, priceUsd: prices[balance.ticker] ?? 0, source: balance.source ) } return Portfolio(positions: positions, updatedAt: .now) } } 

Использование async let позволяет запрашивать биржи и on-chain балансы параллельно — агрегация укладывается в 1–2 секунды вместо последовательных 4–5. Это в 2–3 раза быстрее, что критично для пользовательского опыта.

Как кэшировать данные и обновлять их в фоне

Балансы кэшируются локально — SQLite через drift (Flutter) или CoreData/SwiftData (iOS). Это важно для offline-режима: пользователь открывает приложение без сети и видит последние актуальные данные с меткой времени.

Фоновое обновление на iOS — через BGAppRefreshTask. Планируется при переходе в фон, система вызывает задачу раз в 15–30 минут. На Android — WorkManager с PeriodicWorkRequest(15, TimeUnit.MINUTES). Ниже сравнение подходов:

Функция iOS BGAppRefreshTask Android WorkManager
Минимальный интервал 15–30 мин (зависит от iOS) 15 мин
Управление системой iOS решает, когда запускать Гарантированное выполнение в окне
Сложность реализации Простая, одна задача Гибкие цепочки и условия
Offline-поддержка Приоритет на последние данные Кэш + повтор при появлении сети
Пошаговая настройка фонового обновления на iOS
  1. Добавьте capability Background Modes -> Background fetch.
  2. Зарегистрируйте задачу в AppDelegate: BGTaskScheduler.shared.register(forTaskWithIdentifier: "refreshPortfolio", using: nil) { task in ... }
  3. Запланируйте: BGAppRefreshTaskRequest(identifier: "refreshPortfolio") с earliestBeginDate.

Обновление в реальном времени для цен — WebSocket. Binance предоставляет wss://stream.binance.com:9443/stream?streams=btcusdt@ticker/ethusdt@ticker. При открытом приложении подключаемся к стриму, при сворачивании — отключаемся и полагаемся на кэш.

Типичные проблемы при интеграции и их решения

Clock skew на биржевых запросах

Binance требует, чтобы timestamp в запросе отличался от серверного времени не более чем на recvWindow (по умолчанию 5000 мс). На Android-устройствах часы иногда уходят. Решение: перед первым запросом синхронизировать время через /api/v3/time и применять offset.

Rate limits при множестве бирж

Если пользователь добавил 5 бирж, одновременные запросы могут исчерпать лимиты. Нужна очередь с контролем частоты: один exchange — один слот в очереди, задержка 200 мс между запросами к одному endpoint.

Разные форматы тикеров

Binance возвращает BTC, Bybit — BTC, CoinGecko принимает bitcoin (id), не символ. Нужна таблица маппинга тикер → CoinGecko id, которую периодически синхронизируем через /coins/list.

Что входит в нашу работу

  • Интеграция Binance / Bybit / OKX API с HMAC-SHA256 подписью
  • Загрузка on-chain балансов (EVM через Alchemy, Solana опционально)
  • Кэширование в локальной БД с offline-поддержкой
  • Фоновое обновление (BGAppRefreshTask / WorkManager)
  • Дашборд: общая стоимость, 24h change, pie chart по активам
  • Хранение API-ключей в Keychain / Keystore

Сроки

Объем работ Время
2 биржи + on-chain + дашборд 5–8 рабочих дней
Каждая дополнительная биржа +1–2 дня
Добавление on-chain Solana +2 дня

Стоимость рассчитывается индивидуально после анализа требований. Для обсуждения вашего проекта свяжитесь с нами — мы подберем оптимальное решение. Получите консультацию по вашему проекту уже сегодня.