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

Клієнт приходить із задачею об'єднати баланси з 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 проєктів з трекінгу криптопортфеля для мобільних додатків. Результат — повноцінний трекінг портфеля криптоактивів, доступний у режимі реального часу. Інтеграція двох бірж та on-chain балансів коштує від $2000 до $5000 залежно від складності. Використання нашого рішення економить до 40 годин ручної роботи на місяць, що при ставці $50/год дорівнює $2000 економії щомісяця.

У статті розберемо технічну реалізацію: звідки беруться дані, як кешувати, оновлювати у фоні та типові помилки. Використовуємо Swift 5.9+ на iOS, Kotlin + Jetpack Compose на Android, Flutter або React Native для кросплатформи. Усі приклади коду — з реальних проєктів. Це мобільний додаток для крипти, який об'єднує всю картину.

Як організувати трекінг криптопортфеля: збір даних з бірж та гаманців

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

Біржові API

Binance /api/v3/account повертає баланси спот-гаманця, але вимагає HMAC підпис з timestamp і recvWindow (за замовчуванням 5000 мс). Bybit V5 /v5/account/wallet-balance — аналогічно. Ми зберігаємо API ключі бірж зашифрованими на пристрої (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) } } 

Використання Swift async let дозволяє запитувати біржі та on-chain баланси паралельно — агрегація вкладається в 1–2 секунди замість послідовних 4–5. Паралельні запити швидші в 2–3 рази за послідовні, що значно покращує UX. Локальне кешування даних криптоактивів прискорює завантаження даних у 5 разів порівняно з прямими запитами до API. Це важливо для offline-режиму: користувач відкриває додаток без мережі та бачить останні актуальні дані з позначкою часу.

Як кешувати дані та оновлювати їх у фоні?

Баланси кешуються локально — SQLite через drift (Flutter) або CoreData/SwiftData (iOS). Локальне кешування даних криптоактивів прискорює завантаження даних у 5 разів порівняно з прямими запитами до API. Це важливо для 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.

Як налаштувати фонове оновлення на Android: крок за кроком

  1. Додайте залежність WorkManager у build.gradle.
  2. Створіть періодичну роботу: PeriodicWorkRequestBuilder<RefreshWorker>(15, TimeUnit.MINUTES).build()
  3. Поставте в чергу: WorkManager.getInstance(context).enqueueUniquePeriodicWork(...)

Оновлення в реальному часі для цін — 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 бірж, одночасні запити можуть вичерпати ліміти. Потрібна черга з контролем частоти: одна біржа — один слот у черзі, затримка 200 мс між запитами до одного endpoint.

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

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

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

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

Ми — команда з 5+ років досвіду в крипто-розробці, реалізували 15+ проектів з трекінгу портфеля.

Строки

Обсяг робіт Час
2 біржі + on-chain + дашборд 5–8 робочих днів
Кожна додаткова біржа +1–2 дні
Додавання on-chain Solana +2 дні

Вартість розраховується індивідуально після аналізу вимог. Для обговорення вашого проєкту зв'яжіться з нами — ми підберемо оптимальне рішення. Отримайте консультацію щодо вашого проєкту вже сьогодні.