בניית AR מרובה משתמשים ב-iOS עם Collaborative Session

האם המשתמשים שלכם רואים עולמות AR שונים, והופכים שיתוף פעולה לכאוס? אנחנו בונים פתרונות AR מרובי משתתפים המבוססים על ARKit Collaborative Session, ומסנכרנים אובייקטים וירטואליים על פני כל המכשירים בזמן אמת. הצוות שלנו מספק את הפרויקט במפתח מלא—מארכיטקטורה ועד תמיכה—ומבטיח סשן משותף יציב וחלק.

פיתוח ותמיכה בכל סוגי היישומים הניידים:

יישומים ניידים למידע ובידור
אפליקציות חדשות, משחקים, מדריכים, קטלוגים מקוונים, אפליקציות מזג אוויר, אפליקציות כושר ובריאות, אפליקציות נסיעות, אפליקציות חינוכיות, רשתות חברתיות ומסנג'רים, חידונים, בלוגים ופודקאסטים, פורומים, אגרגטורים
יישומים ניידים למסחר אלקטרוני
חנויות מקוונות, אפליקציות B2B, מרקטפלייסים, בורסות מקוונות, שירותי קאשבק, בורסות, פלטפורמות דרופשיפינג, תוכניות נאמנות, משלוחי מזון ומוצרים, מערכות תשלום.
יישומים ניידים לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, ניהול פרויקטים, כלים לצוותי מכירות, ניהול פיננסי, ניהול ייצור, ניהול לוגיסטיקה ומשלוחים, ניהול משאבי אנוש, מערכות ניטור נתונים
יישומים ניידים לשירותים אלקטרוניים
פלטפורמות מודעות מסווגות, בתי ספר מקוונים, בתי קולנוע מקוונים, פלטפורמות שירות אלקטרוניות, פלטפורמות קאשבק, אירוח וידאו, פורטלים נושאיים, פלטפורמות הזמנות ותזמון מקוונות, פלטפורמות מסחר מקוונות

אלה הם רק חלק מסוגי היישומים הניידים שאנו עובדים איתם, ולכל אחד מהם עשויים להיות מאפיינים ופונקציונליות ספציפיים משלו, המותאמים לצרכים ולמטרות הספציפיות של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
בניית AR מרובה משתמשים ב-iOS עם Collaborative Session
מורכב
~1-2 שבועות

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית מובייל עבור FEEDME
    פיתוח אפליקציית מובייל עבור FEEDME
    971
  • פיתוח אפליקציית מובייל עבור XOOMER
    פיתוח אפליקציית מובייל עבור XOOMER
    868
  • פיתוח אפליקציית מובייל עבור RHL
    פיתוח אפליקציית מובייל עבור RHL
    1288
  • פיתוח אפליקציית מובייל עבור ZIPPY
    פיתוח אפליקציית מובייל עבור ZIPPY
    1143
  • פיתוח אפליקציית מובייל עבור Affhome
    פיתוח אפליקציית מובייל עבור Affhome
    1076
  • פיתוח אפליקציית מובייל עבור חברת FLAVORS
    פיתוח אפליקציית מובייל עבור חברת FLAVORS
    677

לקוח פנה אלינו בבקשה לפתח אפליקציית AR לצפייה פנימית שיתופית: שני מעצבים עם iPads הממקמים בו-זמנית רהיטים במרחב וירטואלי משותף. ללא סנכרון, כל אחד ראה קבוצה שונה של אובייקטים, והחדר האמיתי הגיע לקואורדינטות שונות. הפתרון — Collaborative Session מ-ARKit. אבל היישום התברר כלא טריוויאלי: MultipeerConnectivity איבד חיבור מעת לעת, מפות לא התמזגו, ואובייקטים קפצו. להלן — כיצד אנו בונים סשן AR רב-מכשירי אמין, אילו מלכודות אנו נמנעים, ומה לשקול לפני תחילת הפיתוח. לוחות זמנים ותמחור נקבעים באופן אישי.

Collaborative Session מאפשר למספר מכשירי iOS להחליף מפות מרחביות בזמן אמת. בניגוד ל-Cloud Anchors, אין צורך באינטרנט — הנתונים מועברים ברשת המקומית עם חביון מתחת ל-20 אלפיות השנייה. יישמנו פרויקט עבור סטודיו לעיצוב שבו 3 משתתפים סונכרנו עם חביון מתחת ל-15 אלפיות השנייה; חיסכון בעלויות השרת הסתכם בכ-$1500 לחודש. עם זאת, טכנולוגיה זו פועלת רק על מכשירי Apple ורגישה לאיכות הרשת.

כיצד פועל Collaborative Session

הפעלת Collaborative Session דורשת רק שורה אחת בתצורה:

let config = ARWorldTrackingConfiguration() config.isCollaborationEnabled = true arView.session.run(config) 

לאחר מכן, ARKit מייצר חבילות let config = ARWorldTrackingConfiguration() config.isCollaborationEnabled = true arView.session.run(config) — מידע על סביבת המכשיר. יש לשלוח אותן לכל המשתתפים באמצעות תעבורה מתאימה: MultipeerConnectivity, WebSocket, או GameKit.

func session(_ session: ARSession, didOutputCollaborationData data: ARSession.CollaborationData) {
    let encoded = try? NSKeyedArchiver.archivedData(withRootObject: data, requiringSecureCoding: true)
    // отправляем encoded всем пирам
}

// На принимающей стороне:
let data = try? NSKeyedUnarchiver.unarchivedObject(ofClass: ARSession.CollaborationData.self, from: received)
session.update(with: data)

לאחר 10–30 שניות, המכשירים ממזגים את המפות שלהם — כל המשתתפים מקבלים מערכת קואורדינטות אחידה.

מדוע Collaborative Session מהיר יותר מ-Cloud Anchors

Collaborative Session הוא חלופה ישירה ל-Cloud Anchors. הנה השוואה:

פרמטר Collaborative Session Cloud Anchors (ARCore)
חביון <20 אלפיות השנייה (רשת מקומית) 100–500 אלפיות השנייה (דרך שרת)
אינטרנט לא נדרש חובה
מספר מכשירים עד 4–5 כמעט בלתי מוגבל
פלטפורמה רק iOS (ARKit) Android, iOS (באמצעות ARKit+ARCore)
עלות שרת אין Google Cloud (תעבורה בתשלום)

לתרחישים מקומיים (משרד, תערוכה), Collaborative Session מהיר ב-30–50% ואינו דורש שרתים חיצוניים. חיסכון בתשתית מגיע ל-50–60%.

כיצד להבטיח סנכרון אמין

  • MultipeerConnectivity אינו אמין. MCSession מפיל עמיתים ללא שגיאות ברורות. פתרון: heartbeat של MultipeerConnectivity כל 2 שניות, חיבור מחדש אוטומטי לאחר שלוש פעמים ללא תגובה.
  • גודל חבילות CollaborationData. עם תנועת מצלמה פעילה, התעבורה מגיעה ל-50–100 KB/s למכשיר. עבור 4 משתתפים — עד 400 KB/s. עבור 5 מכשירים, היא יכולה להתקרב ל-500 KB/s. שלח CollaborationData דרך ARSession.CollaborationData (ARKit מתאושש מחבילות שאבדו). שלח נתונים קריטיים (קואורדינטות אובייקטים) בערוץ אמין נפרד.
  • מנגנון Heartbeat. מפתחי ARKit המוסמכים שלנו עם ניסיון של 7+ שנים מבטיחים ש-heartbeat של MultipeerConnectivity מבטיח חיבורים יציבים.

מה קורה כשהמפות מתמזגות?

לפני המיזוג, לכל מכשיר יש מערכת קואורדינטות מקומית משלו. עוגנים שנוספו קודם לכן עשויים לקפוץ. עקוב אחר func session(_ session: ARSession, didOutputCollaborationData data: ARSession.CollaborationData) { let encoded = try? NSKeyedArchiver.archivedData(withRootObject: data, requiringSecureCoding: true) // отправляем encoded всем пирам } // На принимающей стороне: let data = try? NSKeyedUnarchiver.unarchivedObject(ofClass: ARSession.CollaborationData.self, from: received) session.update(with: data) :

func session(_ session: ARSession, didAdd anchors: [ARAnchor]) {
    let participants = anchors.compactMap { $0 as? ARParticipantAnchor }
    if !participants.isEmpty {
        // Карты объединились — можно размещать объекты
        enableObjectPlacement()
    }
}

מקם אובייקטים רק לאחר ש-.unreliable מופיע — אחרת דה-סנכרון הוא בלתי נמנע.

אילו נתונים מסונכרנים ב-Collaborative Session?

CollaborationData מכיל נקודות תכונה, מפת עומק ועוגנים. אובייקטים מותאמים אישית (למשל, רהיטים וירטואליים) אינם מסונכרנים אוטומטית — יש לשלוח את הקואורדינטות שלהם בנפרד. אנו ממליצים על ערוץ אמין למיקומי אובייקטים ו-.reliable עבור CollaborationData.

סוג נתונים ערוץ מצב
CollaborationData MultipeerConnectivity/WebSocket לא אמין
קואורדינטות אובייקטים ערוץ נפרד אמין
אירועים (מיקום, מחיקה) ערוץ נפרד אמין

התהליך שלנו: מניתוח ועד פריסה

  1. ניתוח מקרה שימוש ומגבלות רשת.
  2. עיצוב ארכיטקטורה: בחירת תעבורה, סכמת סנכרון.
  3. יישום ARWorldTrackingConfiguration ושכבת תעבורה.
  4. טיפול במחזור חיי סשן: גילוי משתתפים, מיזוג מפות, עזיבת עמית.
  5. בדיקה על מכשירים אמיתיים בתנאי רשת שונים.

מה כלול בעבודה שלנו

  • ארכיטקטורת Collaborative Session עם בחירת תעבורה (MultipeerConnectivity, WebSocket, GameKit).
  • יישום heartbeat, חיבור מחדש ו-buffering.
  • סנכרון אובייקטים מותאמים אישית דרך ערוץ אמין נפרד.
  • אינטגרציה עם ה-UI שלך: מיקום, מחיקה, הזזת אובייקטים.
  • תיעוד וגישה לקוד המקור.
  • הדרכת צוות (שעתיים אונליין) ותמיכה לאחר השקה (אחריות ל-7 ימים).

לוחות זמנים

Collaborative Session בסיסי עם MultipeerConnectivity — 2–3 שבועות. עם טיפול מלא במקרי קצה, סנכרון מצב ו-UI — 4–7 שבועות. עלות הפיתוח מתחילה ב-$5,000 לאינטגרציה בסיסית. ייעוץ זמין לפי בקשה.

טעויות יישום נפוצות

  • אובדן חבילות במשלוח לא אמין אינו קריטי עבור CollaborationData — ARKit בונה מחדש את המפה.
  • משלוח אמין של CollaborationData גורם לתורים ולפיגור — השתמש ב-ARParticipantAnchor.
  • מיקום אובייקטים לפני מיזוג מפות גורם לרעידת עוגנים — המתן ל-func session(_ session: ARSession, didAdd anchors: [ARAnchor]) { let participants = anchors.compactMap { $0 as? ARParticipantAnchor } if !participants.isEmpty { // Карты объединились — можно размещать объекты enableObjectPlacement() } } .
  • משתתף שעוזב ללא ניקוי buffer צובר חבילות — נקה את ה-buffer בעת ניתוק.

אנחנו מוכנים לעזור בפרויקט ה-AR שלך.