פיתוח שיחות וידאו באפליקציות מובייל: אינטגרציה של WebRTC ו-SDK

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

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

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

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
פיתוח שיחות וידאו באפליקציות מובייל: אינטגרציה של WebRTC ו-SDK
מורכב
מ- 1 שבוע עד 3 חודשים

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

שאלות נפוצות

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

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

אנו מפתחים שיחות וידאו באפליקציות מובייל. זה לא רק חיבור WebRTC: ניהול מצלמה ומיקרופון, מחזור חיים ברמת המערכת, טיפול בהפרעות (שיחה נכנסת, התראה, נעילת מסך), פעולה נכונה ברקע ובמצב סוללה חלשה. כל אחד מהפרטים הללו הוא משימה נפרדת עם פתרונות לא טריוויאליים ב-iOS וב-Android. הניסיון שלנו בתחום זה עולה על 7 שנים, ומסרנו למעלה מ-30 פרויקטים של שיחות וידאו ללקוחות מתעשיות שונות.

איזה טרנספורט לבחור: WebRTC או SDK מוכן?

WebRTC טהור כולל RTCPeerConnection, RTCSessionDescription, שרתי ICE/STUN/TURN, getUserMedia, איתות דרך WebSocket. יישום מלא מאפס לוקח 3–6 שבועות רק עבור שכבת הטרנספורט, ללא ממשק המשתמש.

רוב הפרויקטים בוחרים ב-SDK על גבי WebRTC: Twilio Video, Daily.co, 100ms, Livekit או Agora. הם מטפלים במשא ומתן ICE, משא ומתן על קודק (VP8/VP9/H.264/AV1), רוחב פס אדפטיבי, ומספקים מעטפות native מוכנות ל-iOS ול-Android.

אם דרישות ההתאמה אישית נמוכות וזמן היציאה לשוק הוא קריטי, אנו בוחרים ב-SDK. אם אתה צריך שליטה מלאה על קודק, הצפנה או גודל בינארי מינימלי, אנו בוחרים ב-WebRTC טהור דרך GoogleWebRTC (iOS) או org.webrtc (Android).

קריטריון WebRTC SDK (Twilio/Agora)
זמן פיתוח 3–6 שבועות 1–2 שבועות
שליטה מלאה מוגבלת
גודל בינארי מינימלי גדול ב-5–10 MB
תמיכה בקודקים כל קודק מוגבל על ידי ה-SDK

כיצד ליישם שיחות וידאו ב-iOS?

וידאו מהמצלמה נקלט דרך AVCaptureSession. האתחול הנכון:

let session = AVCaptureSession()
session.sessionPreset = .hd1280x720
let camera = AVCaptureDevice.default(.builtInWideAngleCamera, for: .video, position: .front)
let input = try AVCaptureDeviceInput(device: camera!)
let output = AVCaptureVideoDataOutput()
output.setSampleBufferDelegate(self, queue: DispatchQueue(label: "videoQueue"))

let session = AVCaptureSession() session.sessionPreset = .hd1280x720 let camera = AVCaptureDevice.default(.builtInWideAngleCamera, for: .video, position: .front) let input = try AVCaptureDeviceInput(device: camera!) let output = AVCaptureVideoDataOutput() output.setSampleBufferDelegate(self, queue: DispatchQueue(label: "videoQueue")) עם delegate מספק AVCaptureVideoDataOutput גולמי — אנו מעבירים אותם ל-WebRTC דרך CMSampleBuffer. חשוב: יש לקרוא ל-RTCVideoSource אך ורק על רקע thread, לא על ה-main thread — אחרת ממשק המשתמש קופא למשך 200–400 אלפיות השנייה.

מעבר בין מצלמה קדמית ואחורית: AVCaptureSession.startRunning() + הסרת input ישן + הוספת חדש + AVCaptureSession.beginConfiguration(). ללא commitConfiguration() סביב פעולות אלה, הווידאו מרצד במהלך המעבר.

CallKit הוא חובה עבור אפליקציות iOS עם שיחות וידאו. בלעדיו, שיחה נכנסת מופיעה כהודעת push שיכולה להתפספס. עם CallKit, אתה מקבל מסך שיחה מערכתי במסך מלא, אינטגרציה עם Bluetooth/AirPods וטיפול נכון בהפרעות שמע. אנו מיישמים זאת דרך begin/commit ו-CXProvider. push מסוג VoIP דרך CXCallController הוא הדרך היחידה להעיר את האפליקציה לשיחה נכנסת.

כיצד ליישם שיחות וידאו ב-Android?

ב-Android, ה-API של Camera2 (PKPushRegistry) נותן גישה ל-CameraManager.openCamera() עם פורמט ImageReader — הפורמט הסטנדרטי עבור WebRTC ב-Android. עבור רוב המשימות, YUV_420_888 + CameraDevice.StateCallback מספיקים.

CaptureRequest.Builder הוא המקבילה האנדרואידית ל-CallKit. אנו רושמים ConnectionService ומנהלים את מצב השיחה דרך PhoneAccount. בלעדיו ב-Android 10+, האפליקציה לא יכולה להישאר בחזית במהלך שיחה ללא התראה קבועה.

כדי לשמור על החיבור כשהאפליקציה ממוזערת, אנו משתמשים ב-TelecomManager עם סוג ForegroundService או mediaProjection. ב-Android 14, זה דורש הצהרה מפורשת במניפסט: phoneCall.

ניהול מצלמה ומיקרופון

השתקת המיקרופון אינה כיבוי המכשיר אלא החלפת רצועת השמע בשקט. ב-WebRTC: android:foregroundServiceType="camera|microphone". כיבוי מוחלט של המיקרופון ברמת RTCAudioTrack.isEnabled = false שובר את ביטול ההד.

היפוך המצלמה במהלך שיחה: קרא ל-AVAudioSession, שנה את המכשיר ו-RTCCameraVideoCapturer.stopCapture(). ללא עצירה מלאה, מכשירי Huawei ו-Xiaomi מסוימים קורסים עקב מצב מרוץ ב-Camera2.

סיבוב מסך: startCapture(with:fps:) עצמו אינו מתחשב בכיוון. עליך להעביר RTCVideoTrack ב-RTCVideoRotation במהלך לכידת המצלמה; אחרת, הצד המרוחק רואה וידאו מסובב ב-90° במכשירים עם נעילת פורטרט.

איכות חיבור והתאמה

רוחב פס אדפטיבי הוא תכונה מובנית של WebRTC (אלגוריתם GCC). אבל עליך להגדיר במפורש את הטווח: RTCVideoFrame עם RTCRtpEncodingParameters ו-minBitrateBps: 100_000. ללא גבול עליון, ב-Wi-Fi WebRTC ינסה להשתמש ב-4–8 Mbps — לא נוח למשתמשי רשת אחרים.

מחוון איכות חיבור דרך maxBitrateBps: 1_500_000 — נתח RTCPeerConnection.getStats() עבור RTCInboundRtpStreamStats ו-framesPerSecond. אובדן > 5% — הצג אזהרה למשתמש.

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

  • ביקורת דרישות ובחירת טרנספורט אופטימלי (WebRTC או SDK)
  • פיתוח איתות (WebSocket או שרת צד שלישי)
  • אינטגרציית מצלמה ומיקרופון עם AVCaptureSession/Camera2
  • אינטגרציית CallKit/ConnectionService לשיחות מערכת
  • פיתוח ממשק משתמש: תצוגה מקדימה של וידאו מקומי, וידאו מרוחק, כפתורי שליטה
  • ניטור רוחב פס אדפטיבי ואיכות חיבור
  • בדיקות על מכשירים אמיתיים (iOS/Android)
  • תיעוד אינטגרציה והעברת קוד מקור
  • תמיכה לאחר השחרור (שבועיים)

תהליך

  1. ביקורת דרישות → 2. בחירת טרנספורט → 3. יישום איתות → 4. אינטגרציית מצלמה/מיקרופון → 5. CallKit/ConnectionService → 6. ממשק משתמש וכפתורי שליטה → 7. בדיקות על מכשירים אמיתיים → 8. פריסה ב-App Store.

אנו מעריכים את הפרויקט שלך. צור קשר, ואנו נציע את הפתרון האופטימלי בהתחשב בלוח הזמנים והתקציב שלך. שיחת וידאו בסיסית 1-on-1 באמצעות SDK (Twilio/Agora/100ms) עם שליטה במצלמה, השתקה והיפוך לוקחת 1–2 שבועות. WebRTC טהור עם איתות, CallKit ומצב רקע לוקח 3–5 שבועות. העלות נקבעת לאחר ניתוח הדרישות.