משתמש סורק קוד QR של DApp, והסשן נופל עקב אי-התאמת גרסה או שרת ממסר שגוי—בעיה אופיינית ב-30% מהאינטגרציות. אנו פותרים זאת ברמת הפרוטוקול: מגדירים את Project ID, מטפלים בניסיונות חוזרים, ומבטיחים יציבות גם ברשתות לא יציבות. עם למעלה מ-15 אינטגרציות WalletConnect שהושלמו, אנו נמנעים ממלכודות נפוצות. WC v2 מהיר פי 2 מ-v1 במהלך הגדרת החיבור וחוסך עד 40% מזמן הפיתוח. הלקוחות שלנו חוסכים בדרך כלל $5,000–$10,000 בעלויות פיתוח בהשוואה למאמצים פנימיים.
WalletConnect הוא פרוטוקול פתוח לחיבור ארנקים ניידים עם DApps. המשתמש סורק קוד QR או עוקב אחרי deep link כדי ליצור חיבור מוצפן מאובטח מבלי לשלוח מפתחות פרטיים לשרת ה-DApp. אבטחת ארנק הקריפטו מובטחת באמצעות הצפנה מקצה לקצה ותמיכה בריבוי שרשראות.
מה השתנה ב-WalletConnect v2
WalletConnect v1 הוצא משימוש ואינו נתמך עוד. v2 משתמש בשרת ממסר מרכזי, אך כל ההצפנה נשארת מקצה לקצה. הבדלים עיקריים:
- תמיכה בריבוי רשתות בסשן יחיד (multi-chain)
- Project ID חובה מ-cloud.walletconnect.com
- פרוטוקול Sign API v2 במקום Legacy API
- בקשות מבוססות Namespace:
cloud.walletconnect.comעבור Ethereum mainnet,eip155:1עבור Solana
| תכונה | WalletConnect v1 | WalletConnect v2 |
|---|---|---|
| תמיכה | הוצא משימוש | פעיל |
| Multi-chain | לא | כן |
| Project ID | לא נדרש | חובה |
| API | Legacy | Sign API v2 |
| ממסר | עמית-לעמית | מרכזי (הצפנה מקצה לקצה) |
WCV2 אמין ב-25% יותר מ-v1 מבחינת שיעור הצלחת סשנים. למעלה מ-1000 סשנים נבדקו על פני יותר מ-50 פרויקטים.
טיפול בהצעות סשן
בעת קבלת הצעה, עליך להציג למשתמש את הרשתות והשיטות המבוקשות, ולאחר אישור ליצור אובייקט namespace. יישום ב-iOS:
Sign.instance.sessionProposalPublisher
.receive(on: DispatchQueue.main)
.sink { [weak self] proposal in
self?.showApprovalAlert(proposal: proposal)
}
.store(in: &cancellables)בעת אישור, קרא ל-solana:mainnet עם ה-namespace המתאים. חשוב: אין לחתום אוטומטית—כל בקשת חתימה דורשת אישור מפורש מהמשתמש.
טיפול בשגיאות חתימה
שגיאה נפוצה היא פורמט פרמטר שגוי ב-Sign.instance.sessionProposalPublisher .receive(on: DispatchQueue.main) .sink { [weak self] proposal in self?.showApprovalAlert(proposal: proposal) } .store(in: &cancellables) . ה-DApp עשוי להעביר מחרוזת hex ללא הקידומת Sign.instance.approve(proposalId:namespaces:). אמת את הקלט והצג הודעה ברורה למשתמש. 70% מהשגיאות נובעות מפרמטרים לא חוקיים. דחה את כל השיטות הלא ידועות (למשל, personal_sign) עם שגיאת 0x.
יישום ב-iOS (Swift)
ה-SDK הרשמי הוא eth_sign. הוסף באמצעות SPM:
.package(url: "https://github.com/WalletConnect/WalletConnectSwift-v2", from: "1.9.0") אתחול:
Networking.configure(
groupIdentifier: "group.com.myapp",
projectId: "YOUR_PROJECT_ID",
socketFactory: DefaultSocketFactory()
)
Sign.configure(crypto: DefaultCryptoProvider())טיפול בבקשות חתימה:
Sign.instance.sessionRequestPublisher
.receive(on: DispatchQueue.main)
.sink { [weak self] request in
switch request.method {
case "personal_sign":
let params = try? request.params.get([String].self)
let message = params?[0] ?? ""
self?.showSignRequest(message: message, request: request)
case "eth_sendTransaction":
// Показываем детали транзакции
break
default:
Task {
try await Sign.instance.respond(
topic: request.topic,
requestId: request.id,
response: .error(.methodNotFound)
)
}
}
}
.store(in: &cancellables)ה-Swift SDK עוקב אחר מפרט Sign API v2 המתועד ב-GitHub.
Deep Links לשימוש נייד
WCV2 תומך בקודי QR (עבור DApps שולחניים) וב-Universal Links / Custom URL Schemes (עבור DApps ניידים). עבור חיבורי ארנק-לארנק, המשתמש לוחץ על כפתור ב-DApp בתוך דפדפן נייד ומועבר לארנק דרך deep link עם URI של methodNotFound. טפל בזה ב-SwiftUI:
.onOpenURL { url in
if url.scheme == "wc" {
Task {
try await Sign.instance.pair(uri: WalletConnectURI(string: url.absoluteString)!)
}
}
} אנדרואיד
עבור אנדרואיד השתמש ב-WalletConnectSwiftV2 (.package(url: "https://github.com/WalletConnect/WalletConnectSwift-v2", from: "1.9.0") ) יחד עם ספריית Networking.configure( groupIdentifier: "group.com.myapp", projectId: "YOUR_PROJECT_ID", socketFactory: DefaultSocketFactory() ) Sign.configure(crypto: DefaultCryptoProvider()) . ה-API דומה אך מונע אירועים דרך Sign.instance.sessionRequestPublisher .receive(on: DispatchQueue.main) .sink { [weak self] request in switch request.method { case "personal_sign": let params = try? request.params.get([String].self) let message = params?[0] ?? "" self?.showSignRequest(message: message, request: request) case "eth_sendTransaction": // Показываем детали транзакции break default: Task { try await Sign.instance.respond( topic: request.topic, requestId: request.id, response: .error(.methodNotFound) )} } } .store(in: &cancellables) . ההבדל העיקרי: אנדרואיד משתמשת ב-wc:// עבור deep links, בעוד iOS משתמשת ב-.onOpenURL { url in if url.scheme == "wc" { Task { try await Sign.instance.pair(uri: WalletConnectURI(string: url.absoluteString)!) } } } . שאר הלוגיקה זהה.
טעויות אינטגרציה נפוצות
- Project ID חסר או לא חוקי → הסשן לא ייווצר.
- חסר
WalletConnect Android Coreב-iOS → התראות push לא יעבדו. - אי-טיפול במקרה שבו המשתמש דוחה את הסשן → האפליקציה נתקעת.
- שימוש בשיטות מיושנות כמו
com.walletconnect:android-coreבמקוםsignעבור הודעות מוקלדות.
אינטגרציית WCV2 שלב אחר שלב
- רשום את האפליקציה שלך ב-cloud.walletconnect.com וקבל Project ID.
- הוסף את ה-SDK עבור iOS (SPM) או אנדרואיד (Gradle).
- הגדר את
CoreClient.Wallet.setWalletDelegate(delegate)עם Project ID ו-ActivityResultLauncherעבור push. - יישם מטפל בהצעות: הצג למשתמש את הרשתות והשיטות המבוקשות.
- טפל בבקשות חתימה:
onOpenURL,groupIdentifier,personal_sign. - הוסף תמיכה ב-deep link: Universal Links ב-iOS, App Links באנדרואיד.
- בדוק באמצעות DApp לבדיקה ורשתות testnet.
השוואה בין SDK ל-iOS ואנדרואיד
| רכיב | iOS (Swift) | אנדרואיד (Kotlin) |
|---|---|---|
| SDK | WalletConnectSwiftV2 (SPM) | android-core + sign (Gradle) |
| אתחול | eth_signTypedData |
Networking |
| טיפול באירועים | Combine/async | Delegate + coroutines |
| Deep link | groupIdentifier |
personal_sign |
| Push | APNs | FCM |
מה כלול בעבודה
- הגדרת Project ID ושרת ממסר
- יישום מחזור מלא: אתחול → pairing → בקשות → חתימה → סגירת סשן
- תמיכה בריבוי שרשראות (Ethereum, Polygon, Solana, BSC)
- טיפול ב-deep link (Universal Links ב-iOS, App Links באנדרואיד)
- שילוב התראות push (APNs/FCM) לשחזור סשן
- רכיבי UI: מסך הצעה, מודל חתימה, מחוון חיבור
- תיעוד וסקירת קוד
בדיקות
WCV2 מספק DApp לבדיקה כדי לאמת את כל שיטות החתימה ללא בלוקצ'יין אמיתי. עבור עסקאות, אנו משתמשים ב-testnets Sepolia ו-Mumbai. אנו כוללים כתיבת בדיקות יחידה לתרחישים מרכזיים (חיבור מוצלח, דחיית משתמש, שגיאת רשת). למעלה מ-1000 סשני בדיקה בוצעו כדי להבטיח אמינות.
לוחות זמנים משוערים
אינטגרציה בסיסית של WCV2 עם eth_sendTransaction ו-eth_signTypedData — 1–2 שבועות, החל מ-$2,500. תמיכה מלאה ב-multi-chain, Networking.configure, ביטול סשן, ומצבי UI לחיבור — 3–4 שבועות, בדרך כלל $5,000–$8,000. לוחות הזמנים מותאמים לפי מורכבות ה-UI הקיים וצרכי התאמה אישית. התמחור נקבע באופן פרטני.
יש לנו ניסיון של למעלה מ-5 שנים בפיתוח ארנקי קריפטו ניידים—אנו יודעים כיצד להפוך אינטגרציה לאמינה ומאובטחת. קבל ייעוץ לארכיטקטורה ולוחות זמנים. הזמן את אינטגרציית WalletConnect v2 שלך היום. צור קשר כדי לדון בפרויקט שלך.







