שילוב UWB עם Nearby Interaction באפליקציות iOS
UWB (Ultra Wideband) — לא Bluetooth, לא iBeacon, לא GPS. זו טכנולוגיה עם דיוק תת‑מטרי: האפליקציה מקבלת distance במטרים עם דיוק של ±10–15 ס"מ ו‑direction — וקטור תלת‑ממדי למכשיר במרחב (ב‑iPhone 14 Pro ומעלה דרך אנטנות דו‑כיווניות). UWB חיוני לכוונון מדויק בשיתוף קבצים ותשלומים, חיפוש פריטים אבודים (כמו AirTag), שליטה בבית חכם ואפליקציות AR עם עיגון מרחבי. הוא מספק דיוק פי 10 טוב יותר מ‑Bluetooth (10 ס"מ לעומת 1 מ'). יש לנו ניסיון רב בפיתוח אפליקציות iOS עם UWB ואנו מבטיחים עמידה בהנחיות App Store Review ובפרטיות נתונים. עם ניסיון של 5+ שנים ו‑20+ פרויקטי UWB שהושלמו, אנו מבטיחים אינטגרציה אמינה.
סשן UWB דורש הרשאת משתמש (NSNearbyInteractionAllowOnceUsageDescription), ואפל שולטת בקפדנות על השימוש בנתוני מיקום. בדיקת UWB אפשרית רק במכשירים פיזיים — הסימולטור אינו תומך בשבב U1/U2. לכן, אנו מבצעים בדיקות על מכשירי iPhone אמיתיים, ומבטיחים פעולה תקינה.
UWB לעומת Bluetooth: הבדלים עיקריים
Bluetooth מספק דיוק של כמטר אחד ואינו קובע כיוון. UWB טוב פי 100 למדידת מרחק מדויקת — ±10 ס"מ לעומת מטר אחד, מה שחיוני לניווט פנים‑מבני ול‑AR. לדוגמה, UWB טוב פי 100 מ‑Bluetooth לדיוק. עם זאת, UWB פועל רק במרחקים של עד 9 מ', אינו תומך במצב רקע ודורש קו ראייה. בחירת הטכנולוגיה תלויה בתרחיש: לכיסוי רחב — Bluetooth, לפעולות מדויקות — UWB.
| טכנולוגיה | דיוק | טווח | צריכת חשמל | מצב רקע |
|---|---|---|---|---|
| UWB | ±10 ס"מ | עד 9 מ' | ~100 mW | לא |
| Bluetooth | ~1 מ' | עד 100 מ' | ~10 mW | כן |
| GPS | ~5 מ' | ללא הגבלה | ~50 mW | כן |
תהליך אינטגרציית UWB
הרכיב המרכזי הוא NISession. צור סשן, הגדר את ה‑delegate והרץ עם NINearbyPeerConfiguration. הקוד שלהלן מדגים יישום בסיסי:
import NearbyInteraction
import MultipeerConnectivity
class UWBSessionManager: NSObject, NISessionDelegate {
private var niSession = NISession()
private var peerToken: NIDiscoveryToken?
override init() {
super.init()
niSession.delegate = self
}
func startSession(with peerToken: NIDiscoveryToken) {
let config = NINearbyPeerConfiguration(peerToken: peerToken)
config.isCameraAssistanceEnabled = true
niSession.run(config)
}
func session(_ session: NISession, didUpdate nearbyObjects: [NINearbyObject]) {
guard let peer = nearbyObjects.first else { return }
if let distance = peer.distance {
print("Distance: \(distance) m")
}
if let direction = peer.direction {
print("Direction: \(direction)")
}
}
func session(_ session: NISession, didInvalidateWith error: Error) {
// Обработка ошибок
}
} החלפת טוקן באמצעות MultipeerConnectivity
הגישה הנפוצה ביותר P2P: השתמש ב‑import NearbyInteraction import MultipeerConnectivity class UWBSessionManager: NSObject, NISessionDelegate { private var niSession = NISession() private var peerToken: NIDiscoveryToken? override init() { super.init() niSession.delegate = self } func startSession(with peerToken: NIDiscoveryToken) { let config = NINearbyPeerConfiguration(peerToken: peerToken) config.isCameraAssistanceEnabled = true niSession.run(config) } func session(_ session: NISession, didUpdate nearbyObjects: [NINearbyObject]) { guard let peer = nearbyObjects.first else { return } if let distance = peer.distance { print("Distance: \(distance) m") } if let direction = peer.direction { print("Direction: \(direction)") } } func session(_ session: NISession, didInvalidateWith error: Error) { // Обработка ошибок } } להעברת הטוקן, ולאחר מכן הפעל את MCSession. חשוב: לא ניתן להעביר את NISession כמחרוזת — קודד באמצעות NIDiscoveryToken:
let tokenData = try NSKeyedArchiver.archivedData(
withRootObject: niSession.discoveryToken!,
requiringSecureCoding: true
)
mcSession.send(tokenData, toPeers: peers, with: .reliable)בצד המקבל:
let token = try NSKeyedUnarchiver.unarchivedObject( ofClass: NIDiscoveryToken.self, from: data ) ניסיון לשלוח את הטוקן באמצעות JSON לא עובד — NSKeyedArchiver אינו let tokenData = try NSKeyedArchiver.archivedData( withRootObject: niSession.discoveryToken!, requiringSecureCoding: true ) mcSession.send(tokenData, toPeers: peers, with: .reliable) .
בעיות נפוצות במהלך אינטגרציה
טיפול בשגיאות הוא חלק קריטי בסשן. הנה שגיאות אופייניות והפתרונות שלהן:
| קוד שגיאה | תיאור | פעולה |
|---|---|---|
let token = try NSKeyedUnarchiver.unarchivedObject( ofClass: NIDiscoveryToken.self, from: data ) |
המשתמש דחה את ההרשאה | בקש הרשאה שוב |
NIDiscoveryToken |
חריגה ממגבלת משאבים (יותר מדי סשנים) | הפעל מחדש את הסשן |
Encodable |
כשל קריטי | אתחל את הסשן מחדש |
למה סיוע מצלמה חשוב
ב‑iPhone 14 Pro ובסדרת 15, זמין המצב userDidNotAllow. המערכת מציגה שכבת‑על AR מקורית עם מצביע כיוון. היא מופעלת רק כאשר ניתנת הרשאת מצלמה. מוסיפה עיכוב של ~200 ms עד לקבלת נתוני הכיוון הראשונים, אך משפרת משמעותית את חוויית המשתמש.
מה כלול בעבודה
- ניתוח תרחיש ובדיקת יכולות מכשיר (
resourceUsageLimitReached) - עיצוב ארכיטקטורה: בחירת שיטת החלפת הטוקן
- יישום
sessionFailedעם תצורת P2P או אביזר - טיפול בעדכוני מרחק/כיוון בזמן אמת
- בדיקות על שני מכשירים פיזיים (הסימולטור אינו תומך ב‑UWB)
- פריסה בהתאם להנחיות App Store Review
- מסירת תיעוד מלא וקוד מקור
- תמיכה לאחר פריסה והדרכת מפתחים
- גישה לצוות שלנו לשאלות ועדכונים
לצוות שלנו ניסיון של למעלה מ‑5 שנים עם מסגרת Nearby Interaction והוא סיפק בהצלחה 20+ פרויקטי אינטגרציית UWB. מודל המחיר הקבוע שלנו חוסך לך עד 30% בהשוואה לחיוב שעתי.
שלבי אינטגרציית UWB
- ניתוח — סקירת התרחיש, בדיקת תאימות.
- עיצוב — בחירת שיטת העברת הטוקן (MultipeerConnectivity, Bluetooth, REST).
- יישום — כתיבת
isCameraAssistanceEnabled = trueעם תצורה ו‑delegate. - בדיקה — הרצה על שני מכשירים אמיתיים (הסימולטור אינו תומך ב‑UWB).
- פריסה — פרסום בהתאם לכללי App Store.
לוחות זמנים ועלות אינטגרציית UWB
כ־5 ימים לפרויקט P2P טיפוסי עם MultipeerConnectivity: יום אחד לניתוח ובחירת ארכיטקטורה, יומיים ליישום סשן והחלפת טוקן, יום אחד לבדיקות על שני מכשירי iPhone פיזיים, יום אחד לתיעוד ומסירה. לפרויקטים עם אביזרים (שבב UWB של צד שלישי) או שכבת‑על AR של סיוע מצלמה, לוח הזמנים גדל ל־7–8 ימים. העלות מחושבת באופן אישי לאחר ניתוח התרחיש. מחיר התחלתי: $2,500 (≈€2,300). צור קשר — נבחן את הפרויקט שלך ונציע את הפתרון האופטימלי.
רשימת מכשירים התומכים ב‑UWB
- iPhone 11, 12, 13, 14, 15 כל הדגמים (למעט SE)
- Apple Watch Series 6 ומעלה
- HomePod mini ו‑HomePod (דור שני)
- אביזרים עם שבב U1/U2
קבל ייעוץ על אינטגרציית UWB — נעזור לך לפתור את המשימה שלך בדיוק תת‑מטרי. אם אתה זקוק ליישום UWB, צור קשר להערכת פרויקט.
תיעוד Nearby Interaction — תיעוד רשמי של Apple







