שני מכשירי iPhone באותו חדר. משתמש א' מציב אובייקט AR על השולחן. משתמש ב' רואה את אותו אובייקט על אותו שולחן, באותו מיקום — בזמן אמת. ללא קודי QR, ללא סמנים, ללא כיול מוקדם. אנו מיישמים סנכרון כזה באמצעות Cloud Anchors — טכנולוגיה שבה העוגן נוצר מקומית, מועלה לענן, ומכשירים אחרים מורידים ומאתרים את מיקומם יחסית אליו. לצוות שלנו יש ניסיון של 5+ שנים בפיתוח AR ופרסנו פתרונות כאלה בהצלחה ביותר מ-15 פרויקטים, כולל משימות, הדרכות ומשימות תעשייתיות.
באיזו טכנולוגיה להשתמש: ARCore או ARKit?
הבחירה תלויה בקהל היעד שלך ובמקרה השימוש.
ARCore Cloud Anchors — פתרון חוצה-פלטפורמות. עובד על iOS באמצעות ARCore SDK ל-iOS ועל Android באופן טבעי. עוגנים מאוחסנים על שרתי Google, עם TTL מיום אחד עד 365 ימים בהתאם להגדרות.
יצירת עוגן:
// iOS, ARCore SDK
let anchor = garSession.createAnchor(at: transform)
garSession.hostCloudAnchor(anchor, ttlDays: 30) { cloudAnchorId, error in
// cloudAnchorId — строка, передаём другим участникам через свой backend
}איתור עוגן במכשיר אחר:
garSession.resolveCloudAnchor(cloudAnchorId) { anchor, error in
// anchor.transform — позиция в мировом пространстве этого устройства
}Apple Shared AR באמצעות ARKit + MultipeerConnectivity — עובד רק בין מכשירי Apple, ללא שרת חיצוני. מכשירים מחליפים ARWorldMap ישירות דרך הרשת המקומית. מגבלה: דורש "מארח" אחד ששומר את המפה ומפיץ אותה למשתתפים.
| מאפיין | ARCore Cloud Anchors | ARKit MultipeerConnectivity |
|---|---|---|
| פלטפורמות | iOS, Android | iOS בלבד |
| שרת חיצוני | נדרש (Google Cloud) | לא נדרש |
| מרחק מקסימלי | כל מרחק (דרך האינטרנט) | רשת מקומית |
| TTL של עוגן | 1–365 ימים | למשך הסשן בלבד |
| שגיאת מיקום | 1–15 ס"מ | 1–5 ס"מ (בתנאים טובים) |
ליישומים חוצי-פלטפורמות בייצור — ARCore Cloud Anchors. לתרחישים של Apple בלבד ולא מקוונים — MultipeerConnectivity. ARCore Cloud Anchors יכול לזרז את פריסת הסשן פי 3 בהשוואה ל-ARKit MultipeerConnectivity הודות לתשתית הענן. פרטים נוספים בתיעוד Google ARCore.
אילו בעיות מתעוררות ב-AR מרובה משתמשים?
סנכרון מצב הסצנה. Cloud Anchor מספק מערכת קואורדינטות משותפת. אבל הנתונים על מי הציב מה, לאן הזיז, מה נמחק — זו השכבה שלך. יש צורך בערוץ בזמן אמת: Firebase Realtime Database, Supabase Realtime, או WebSocket מותאם אישית. סכמה טיפוסית: אירוע // iOS, ARCore SDK let anchor = garSession.createAnchor(at: transform) garSession.hostCloudAnchor(anchor, ttlDays: 30) { cloudAnchorId, error in // cloudAnchorId — строка, передаём другим участникам через свой backend } → שידור לכל המשתתפים → כל אחד מיישם מקומית. השהיה ב-LTE: 150–300 אלפיות השנייה, מקובל לרוב המשחקים.
סחיפה בין מכשירים. שני מכשירי iPhone מאתרים את מיקומם יחסית ל-Cloud Anchor באופן עצמאי. שגיאת המיקום היא 1–5 ס"מ בתאורה טובה. בתאורה חלשה או משטחים עם מרקם נמוך — עד 10–15 ס"מ. מקובל למשחקים; לא למשימות תעשייתיות (סימון ציוד, הרכבה).
זמן איתור עוגן. garSession.resolveCloudAnchor(cloudAnchorId) { anchor, error in // anchor.transform — позиция в мировом пространстве этого устройства } יכול לקחת 2–10 שניות בזמן שהמכשיר אוסף מספיק נקודות ייחוס כדי להתאים לעוגן הענן. במהלך זמן זה, עליך להציג את המצב objectPlaced(anchorId, modelId, transform) ולמנוע אינטראקציה של המשתמש. אנו משפרים את חוויית המשתמש עם אנימציות טעינה ומיקום מוקדם.
מגבלות API. Google Cloud Anchors: 1,000 פעולות איתור חינמיות ביום, ולאחר מכן בתשלום. עם קהל פעיל, מגבלה זו נגמרת מהר — תכנן מראש. המהנדסים שלנו עוזרים לתכנן ארכיטקטורה שממזערת פעולות איתור ומפחיתה עלויות ענן. לדוגמה, עם 8 משתתפים בו-זמנית ו-5 עוגנים לכל סשן, תקציב 1,000 פעולות האיתור מאפשר כ-25 סשנים ביום. הגדרת TTL נכונה מפחיתה פעולות איתור חוזרות בעד 30%.
ארכיטקטורת AR מרובה משתתפים חוצת-פלטפורמות
Устройство A (iOS/Android) → создаёт Cloud Anchor → получает cloudAnchorId → отправляет cloudAnchorId на backend (REST/WebSocket)
Backend (Firebase / собственный сервер) → хранит cloudAnchorId + метаданные сессии → рассылает события участникам
Устройство B (iOS/Android) → получает cloudAnchorId → resolveCloudAnchor → строит общую систему координат → получает события → применяет изменения локальноמקרה בוחן: משימת AR בקניון, 8 משתתפים בו-זמנית. ARCore Cloud Anchors בנקודות עניין (כניסה, מחלקה, קופה). כל עוגן הוא משימה עם אובייקט וירטואלי. סנכרון באמצעות Firebase Realtime Database: אירוע "שחקן X מצא אובייקט Y" → האובייקט נעלם לכולם. השהיה בין האירוע לעדכון אצל כל המשתתפים היא 150–300 אלפיות השנייה ב-LTE. אנו מבטיחים פעולה יציבה בכל תנאי תאורה.
טעויות יישום נפוצות
- התעלמות מזמני פסק זמן במהלך איתור עוגן — היישום קופא.
- ללא טיפול בסחיפה — אובייקטים "מתרחקים" זה מזה.
- שידור מודלים גדולים בזמן אמת — השהיה ואובדן מנות.
- הגדרת TTL שגויה — עוגנים נמחקים לפני הזמן.
מה כלול
- שילוב ARCore SDK ל-iOS או הגדרת MultipeerConnectivity ל-Apple בלבד.
- יצירה ואיתור של Cloud Anchors עם טיפול בשגיאות וזמני פסק זמן.
- יישום סנכרון מצב סצנה בזמן אמת.
- ממשק משתמש למצבים: המתנה למשתתפים, איתור עוגן, חוסר סנכרון.
- בדיקות עם מכשירים אמיתיים בתנאי תאורה משתנים.
- אופטימיזציית ביצועים למכשירי יעד.
- סיוע בבחירת TTL אופטימלי ואסטרטגיית איתור עוגנים כדי למזער עלויות.
לוחות זמנים
| תרחיש | לוח זמנים |
|---|---|
| Apple בלבד באמצעות MultipeerConnectivity | 2–3 שבועות |
| חוצה-פלטפורמות באמצעות ARCore Cloud Anchors | 4–6 שבועות |
| AR מרובה משתתפים מלא עם סנכרון מצב | 6–10 שבועות |
התמחור מחושב בנפרד לאחר דיון בדרישות הארכיטקטורה וקהל היעד.
כדי לדון בפרויקט שלך, צור איתנו קשר — קבל ייעוץ על ארכיטקטורה והערכת לוח זמנים. הזמן פיתוח, ואנו נציע את הפתרון האופטימלי לצרכים שלך.







