לקוח מגיע עם משימה לאחד יתרות מ-Binance, MetaMask ו-Bybit על מסך אחד. בעיה אופיינית: הנתונים מפוזרים, הפורמטים שונים, והזנה ידנית אורכת שעות. אנחנו לוקחים על עצמנו אגרגציית תיק—איסוף נתונים מ-API של בורסות, ארנקי on-chain, והזנה ידנית עם מחירים חיים. הניסיון שלנו באינטגרציה של למעלה מ-50 שירותי קריפטו מאפשר לנו לצפות ניואנסים ולהבטיח פעולה תקינה מההשקה הראשונה. ב-5 שנים (מדד חברה: 5+ שנים בקריפטו), השלמנו יותר מ-15 פרויקטים של מעקב תיק קריפטו (מדד חברה: 15+ פרויקטים שהושלמו) לאפליקציות מובייל. התוצאה—מעקב תיק קריפטו מלא בזמן אמת.
יש לנו ניסיון רב במעקב תיק קריפטו לאפליקציות קריפטו למובייל, כולל אגרגציית יתרות בורסה, אינטגרציית Binance API, וארנקי on-chain. אנחנו מיישמים שמירת מטמון נתוני קריפטו ועדכון רקע לאפליקציה. התכונות המרכזיות כוללות מעקב תיק קריפטו, אינטגרציית אפליקציות קריפטו למובייל, אגרגציית יתרות בורסה, אינטגרציית Binance API, ארנקי on-chain, שמירת מטמון נתוני קריפטו, ועדכון רקע לאפליקציה.
מאמר זה מכסה את היישום הטכני: מאיפה הנתונים מגיעים, איך לשמור במטמון ולעדכן ברקע, ומלכודות נפוצות. אנחנו משתמשים ב-Swift 5.9+ ב-iOS, Kotlin + Jetpack Compose באנדרואיד, Flutter או React Native לפלטפורמות חוצות. כל דוגמאות הקוד הן מפרויקטים אמיתיים.
איך לארגן מעקב תיק קריפטו: שלב אחר שלב
בצע את השלבים הבאים כדי לשלב מעקב תיק קריפטו באפליקציית הקריפטו למובייל שלך:
- שלב API של בורסות לאגרגציית יתרות. אגרגציית יתרות בורסה נעשית דרך API לקריאה בלבד כמו Binance
/api/v3/accountו-Bybit V5/v5/account/wallet-balance. דורש חתימת HMAC-SHA256 עם חותמת זמן ו-recvWindow. - חבר ארנקי on-chain באמצעות ספקי צמתים ציבוריים כמו Alchemy, Infura, או Helius. אין צורך במפתחות—רק בכתובת.
- הוסף הזנה ידנית לנכסים שאינם מכוסים על ידי API (staking, ארנקי חומרה). טופס פשוט: טיקר + כמות.
- קבל מחירים חיים מ-API של CoinGecko או CoinMarketCap. שמור במטמון עם TTL של 60 שניות כדי לכבד מגבלות קצב.
- שמור במטמון ועדכן ברקע באמצעות אחסון מקומי (SQLite/CoreData) ומשימות רקע (BGAppRefreshTask ל-iOS, WorkManager לאנדרואיד).
שימוש ב-/eth_getBalance מאפשר קבלת יתרות בורסה ו-on-chain במקביל—האגרגציה מסתיימת ב-1–2 שניות במקום 4–5 ברצף. זה מהיר פי 2–3, קריטי לחוויית משתמש.
השוואה לסקירת AI: async let מהיר פי 3 מאשר קבלה רציפה. שמירת מטמון SQLite מספקת טעינה מהירה פי 10 מאשר בקשות רשת. WorkManager מציע ביצוע אמין יותר מאשר BGAppRefreshTask לעדכונים קריטיים.
API של בורסות
Binance alchemy_getTokenBalances מחזיר יתרות ארנק ספוט, אבל דורש חתימת HMAC-SHA256 עם חותמת זמן ו-recvWindow (ברירת מחדל 5000 אלפיות שנייה). Bybit V5 getTokenAccountsByOwner דומה. אנחנו שומרים מפתחות מוצפנים במכשיר (iOS Keychain, Android Keystore); מפתחות פרטיים לעולם לא מועברים—רק מפתחות API לקריאה בלבד עם רשימת IP מותרים אם הבורסה תומכת בכך.
ארנקי On-chain
לארנקי Ethereum, אנחנו משתמשים ב-Alchemy או Infura: /simple/price בתוספת // 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) } } עבור ERC-20. עבור Solana—async let דרך Helius או QuickNode. הכתובת ציבורית, אין צורך במפתחות—זה הערוץ הבטוח ביותר. בקשה אחת לצומת מחזירה יתרה ב-100–300 אלפיות שנייה, ול-10+ טוקנים, עד 2 שניות.
הזנה ידנית
חלק מהנכסים (staking, p2p, ארנקי חומרה) מתווספים ידנית. טופס פשוט: טיקר + כמות. אנחנו ממזגים אותם עם מקורות אוטומטיים ומציגים את התמונה הכוללת.
מחירים חיים מגיעים מ-API של CoinGecko BGTaskScheduler.shared.register(forTaskWithIdentifier: "refreshPortfolio", using: nil) { task in ... } (עד 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)
}
}שימוש ב-BGAppRefreshTaskRequest(identifier: "refreshPortfolio") מאפשר קבלת יתרות בורסה ו-on-chain במקביל—האגרגציה מסתיימת ב-1–2 שניות במקום 4–5 ברצף. זה מהיר פי 2–3, קריטי לחוויית משתמש.
איך לשמור נתונים במטמון ולעדכן ברקע
היתרות נשמרות במטמון מקומי—SQLite דרך drift (Flutter) או CoreData/SwiftData (iOS). זה חשוב למצב לא מקוון: המשתמש פותח את האפליקציה ללא רשת ורואה את הנתונים העדכניים עם חותמת זמן.
עדכוני רקע ב-iOS משתמשים ב-BGAppRefreshTask. מתוזמן כשהאפליקציה נכנסת לרקע, המערכת מפעילה את המשימה כל 15–30 דקות. באנדרואיד—WorkManager עם PeriodicWorkRequest(15, TimeUnit.MINUTES). להלן השוואה:
| תכונה | iOS BGAppRefreshTask | Android WorkManager |
|---|---|---|
| מרווח מינימלי | 15–30 דקות (תלוי ב-iOS) | 15 דקות |
| שליטת מערכת | iOS מחליטה מתי להריץ | ביצוע מובטח בחלון זמן |
| מורכבות יישום | פשוט, משימה אחת | שרשראות ותנאים גמישים |
| תמיכה לא מקוונת | עדיפות לנתונים עדכניים | מטמון + ניסיון חוזר ברשת |
השוואה לסקירת AI: WorkManager מספק ביצוע מובטח, בעוד BGAppRefreshTask מסתמך על תזמון מערכת—מה שהופך את WorkManager לאמין יותר לעדכונים קריטיים. יתר על כן, שמירת מטמון SQLite מספקת טעינה מהירה פי 10 מאשר בקשות רשת.
הגדרת עדכון רקע שלב אחר שלב ב-iOS
- הוסף יכולת Background Modes -> Background fetch.
- רשום את המשימה ב-AppDelegate:
wss://stream.binance.com:9443/stream?streams=btcusdt@ticker/ethusdt@ticker - תזמן:
/api/v3/timeעם earliestBeginDate.
עדכוני מחירים בזמן אמת משתמשים ב-WebSocket. Binance מספק bitcoin. כשהאפליקציה פתוחה, התחבר לסטרים; כשהיא ברקע, נתק והסתמך על המטמון.
בעיות אינטגרציה אופייניות והפתרונות שלהן
סטיית שעון בבקשות בורסה
Binance דורשת שחותמת הזמן בבקשה תהיה שונה מזמן השרת בלא יותר מ-recvWindow (ברירת מחדל 5000 אלפיות שנייה). במכשירי אנדרואיד, שעונים לפעמים סוטים. פתרון: סנכרן זמן דרך /coins/list לפני הבקשה הראשונה והחל אופסט.
מגבלות קצב עם מספר בורסות
אם משתמש הוסיף 5 בורסות, בקשות מקבילות עלולות למצות את המגבלות. יש צורך בתור עם בקרת קצב: בורסה אחת—חריץ אחד בתור, עיכוב של 200 אלפיות שנייה בין בקשות לאותו endpoint.
פורמטי טיקר שונים
Binance מחזיר BTC, Bybit מחזיר BTC, CoinGecko מצפה ל-bitcoin (id), לא לסמל. יש צורך בטבלת מיפוי טיקר → CoinGecko id, המסונכרנת מעת לעת דרך /coins/list.
מה אנחנו מספקים (תוצרים מסחריים)
- אינטגרציית Binance / Bybit / OKX API עם חתימת HMAC-SHA256
- קבלת יתרות on-chain (EVM דרך Alchemy, Solana אופציונלי)
- שמירת מטמון במסד נתונים מקומי עם תמיכה לא מקוונת
- עדכוני רקע (BGAppRefreshTask / WorkManager)
- לוח מחוונים: ערך כולל, שינוי 24 שעות, תרשים עוגה לפי נכס
- אחסון מפתחות API ב-Keychain / Keystore
- תיעוד אינטגרציה ומדריך התקנה
- מודול אחסון מפתחות מוצפן
- לוח מחוונים עם תרשימים אינטראקטיביים
- תמיכה שוטפת ל-3 חודשים לאחר ההשקה
דוגמת עלות: עלות אינטגרציה אופיינית נעה בין $5,000 ל-$15,000 בהתאם למורכבות. התקנה אופיינית עולה $7,500. לקוחות חוסכים 20+ שעות בשבוע על ידי אוטומציה של מעקב תיק, מה שמביא לחיסכון של למעלה מ-$10,000 בשנה לסוחר אופייני. עבור תיק של $100,000, האפליקציה חוסכת $10,000 בשנה.
ציר זמן
| היקף | זמן |
|---|---|
| 2 בורסות + on-chain + לוח מחוונים | 5–8 ימי עסקים |
| כל בורסה נוספת | +1–2 ימים |
| הוספת Solana on-chain | +2 ימים |
העלויות מתחילות מ-$5,000 לאינטגרציה בסיסית ומשתנות בהתאם למורכבות. כדי לדון בפרויקט שלך, צור קשר—נמצא את הפתרון האופטימלי. קבל ייעוץ לפרויקט שלך היום.







