שילוב Agora לשיחות וידאו במובייל

שיחות וידאו באפליקציות מובייל סובלות לעיתים קרובות מנפילות סשן ודליפות משאבים עקב תצורה שגויה של טוקנים ומחזור חיים. אנו משלבים את Agora SDK ומגדירים ניהול טוקנים כך שתקשורת הווידאו תפעל בצורה אמינה ב-iOS וב-Android. הצוות שלנו מספק את הפרויקט במפתח מלא—מבדיקה ועד יישום ותמיכה שוטפת.

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

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

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
שילוב Agora לשיחות וידאו במובייל
מורכב
~3-5 ימים

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

שאלות נפוצות

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

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

בשיחות וידאו במובייל, הבעיות העיקריות הן ניהול מחזור חיים וניהול טוקנים. ללא הגדרה נכונה, תקבלו דליפות משאבים, ניתוקי שיחה ובזבוז רישיונות. הניסיון שלנו עם 30+ פרויקטים המשתמשים ב-Agora SDK הוביל לגישה אמינה.

למה Agora SDK היא הבחירה הטובה ביותר לשיחות וידאו

Agora SDK הוא שירות וידאו ואודיו מנוהל בזמן אמת שמטפל בWebRTC מתחת למכסה המנוע, ברשת התעבורה שלו SD-RTN, ברוחב פס אדפטיבי ובקודקים. בהשוואה ל-WebRTC גולמי: Agora מאיצה את פיתוח שיחות הווידאו פי 12(תיעוד Agora), אך דורשת ניהול טוקנים נכון. אינטגרציה נכונה יכולה להפחית עלויות תשתית בעד 40% באמצעות ניצול SD-RTN, ולחסוך כ-300–500 דולר לחודש עבור צוותים קטנים.

שלבים לאינטגרציה של Agora SDK

  1. צרו חשבון Agora וצרו פרויקט בקונסולה כדי לקבל App ID.
  2. צרו טוקן באמצעות Agora Token Builder בשרת האחורי שלכם.
  3. אתחלו את המנוע פעם אחת בעת השקת האפליקציה (ראו דוגמאות קוד למטה).
  4. הצטרפו לערוץ עם הטוקן ושם הערוץ.
  5. הגדירו עיבוד וידאו מקומי ומרוחק.
  6. טפלו בחידוש טוקן באמצעות delegate callbacks.
  7. בדקו עם תרחישים שונים (ניתוק רשת, שיחה נכנסת).

הגדרת טוקנים נכונה למניעת שגיאות

Agora עובדת עם מודל App ID + Token. App ID הוא מזהה ציבורי מהקונסולה. Token הוא JWT קצר מועד שהשרת האחורי שלכם יוצר באמצעות Agora Token Builder ומעביר ללקוח בעת הצטרפות לערוץ. שגיאות הייצור הנפוצות ביותר הן tokenExpired (109) ו-invalidToken (110). לטוקן יש TTL מוגבל (מ-24 שעות עד שעה אחת). אנו מיישמים טיפול באמצעות מתודת ה-delegate tokenPrivilegeWillExpire — קבלת טוקן חדש מהשרת האחורי וקריאה ל-renewToken() מבלי לנתק את החיבור.

טעות אופיינית: הטוקן נוצר עם UID 0 בשרת האחורי, אך לאחר joinChannel הלקוח מקבל UID ספציפי מ-Agora — ואז ב-renewToken הבא הוא מעביר טוקן עבור UID שגוי. פתרון: שמרו את ה-UID מ-didJoinChannel והשתמשו בו בעת בקשת טוקן חדש.

תרחיש TTL המלצה
רגיל 24 שעות איזון בין אבטחה לתדירות חידוש
עומס גבוה שעה אחת מפחית סיכון לפגיעה בטוקן

אתחול המנוע

אתחלו את המנוע פעם אחת בעת השקת האפליקציה:

let config = AgoraRtcEngineConfig()
config.appId = "YOUR_APP_ID"
agoraKit = AgoraRtcEngineKit.sharedEngine(with: config, delegate: self)
val config = RtcEngineConfig()
config.mContext = context
config.mAppId = "YOUR_APP_ID"
config.mEventHandler = handler
rtcEngine = RtcEngine.create(config)

אל תיצרו מחדש את המנוע עבור כל שיחה. sharedEngine הוא סינגלטון; קריאה חוזרת אליו עם אותו App ID מחזירה את המופע הקיים. ב-Android, RtcEngine.create() יוצר מופע חדש בכל פעם; עליכם להרוס את הקודם באמצעות RtcEngine.destroy(). אחרת, יופיעו דליפות משאבים מקוריות לאחר 3–5 קריאות. השתמשו ב-LifecycleObserver כדי להרוס אוטומטית את המנוע כשהאקטיביטי מסתיים.

הצטרפות לערוץ וטיפול בווידאו

let option = AgoraRtcChannelMediaOptions()
option.clientRoleType = .broadcaster
option.channelProfile = .communication
agoraKit.joinChannel(
    byToken: token,
    channelId: channelName,
    uid: 0,
    mediaOptions: option
)

uid: 0 — Agora מקצה את ה-UID בעצמה. אם אתם צריכים קישור משתמש, העבירו מזהה מספרי דטרמיניסטי (UInt32).

וידאו מקומי מעובד באמצעות AgoraRtcVideoCanvas עם setupLocalVideo(). וידאו מרוחק באמצעות setupRemoteVideo() במתודת ה-delegate didJoinedOfUid. חשוב: קראו ל-setupRemoteVideo() ב-main thread, אחרת תתרחש שגיאת EXC_BAD_ACCESS עם הצטרפות/עזיבה מהירה של משתתפים.

func rtcEngine(_ engine: AgoraRtcEngineKit, didJoinedOfUid uid: UInt, elapsed: Int) {
    DispatchQueue.main.async {
        let canvas = AgoraRtcVideoCanvas()
        canvas.uid = uid
        canvas.renderMode = .hidden
        canvas.view = self.remoteVideoView
        self.agoraKit.setupRemoteVideo(canvas)
    }
}

הגדרות איכות וידאו

Agora מספקת הגדרות מוכנות של AgoraVideoEncoderConfiguration ופרמטרים מותאמים אישית:

let config = AgoraVideoEncoderConfiguration(
    size: CGSize(width: 640, height: 360),
    frameRate: .fps15,
    bitrate: AgoraVideoBitrateStandard,
    orientationMode: .adaptative,
    mirrorMode: .auto
)
agoraKit.setVideoEncoderConfiguration(config)

עבור אפליקציית מובייל, 360p/15fps הוא איזון סביר בין איכות לצריכת סוללה. 720p/30fps לטאבלטים או כשהאיכות קריטית. 1080p אינו מתאים למובייל: הוא צורך הרבה חשמל ומשאבים, וההבדל התפיסתי בין 720p ל-1080p זניח.

רזולוציה fps רוחב פס עומס סוללה
360p 15 רגיל נמוך
720p 30 רגיל בינוני
1080p 30 גבוה גבוה

טיפול בהפרעות ומחזור חיים

ב-iOS, AVAudioSession.routeChangeNotification ו-AVAudioSession.interruptionNotification — Agora SDK מטפל בהם אוטומטית עם AgoraAudioScenario הנכון. תרחיש ה-.meeting הוא אופטימלי לשיחות וידאו: מאפשר AEC, ANS, AGC.

כאשר מתרחשת שיחת מערכת נכנסת, Agora אינה משהה אוטומטית. אנו מיישמים באמצעות CXCallObserver: כאשר CXCall.hasConnected == true — muteLocalAudioStream(true), כשהשיחה מסתיימת — unmute.

ב-Android, ללא ForegroundService, Android 8+ יהרוג את התהליך תוך 5–10 דקות. אנו מתחילים ForegroundService בתחילת שיחה עם התראה. android:foregroundServiceType="camera|microphone" במניפסט הוא חובה מ-Android 14.

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

  • ניתוח דרישות: מספר משתתפים, איכות, אינטגרציה עם השרת האחורי, תקציב.
  • הגדרת טוקנים: יצירה, שמירה במטמון, טיפול בפגות.
  • מימוש UI: קנבסי וידאו, פקדים, רקע וירטואלי.
  • מחזור חיים: ForegroundService ב-Android, CXCallObserver ב-iOS.
  • בדיקות: 10+ תרחישים (ניתוק רשת, שיחה נכנסת, חיבור מחדש מהיר).
  • תיעוד: README, הערות קוד, דיאגרמת זרימת טוקנים.
  • גישה לקוד המקור והדרכה לצוות שלכם.
  • תמיכה: שבועיים לאחר השחרור, תיקוני באגים.

לוחות זמנים ועלות

אינטגרציה בסיסית (שיחת וידאו 1-on-1 עם שליטה במצלמה, השתקה, היפוך) — 3–5 ימים. עם תמיכה בקבוצות עד 8 משתתפים, ניהול טוקנים ומצב רקע — 1–2 שבועות. העלות נקבעת לאחר ניתוח דרישות. צרו קשר להערכת הפרויקט שלכם — נספק הערכה ומפת דרכים. קבלו ייעוץ על אינטגרציית Agora או הזמינו מימוש שיחות וידאו.

אנחנו שותף מוסמך של Agora עם 5 שנות ניסיון ו-30+ פרויקטים מוצלחים. זמינות ותמיכה מובטחות.