תארו לעצמכם: מבקר לוחץ על כפתור האינטרקום, והטלפון שלכם מצלצל מיד, ומציג את וידאו המצלמה. בנגיעה אחת, אתם פותחים את הדלת. מאחורי הפשטות הזו עומדת חידה הנדסית מורכבת: מחסנית WebRTC או SIP, פרוטוקול ONVIF, התראות push עם חביון של פחות משנייה גם כשהאפליקציה סגורה, שליטה בממסר הנעילה דרך API של המכשיר, והקלטת אירועים. אנו מפתחים אפליקציות מובייל לאינטרקומים על בסיס turnkey, מבחירת ארכיטקטורה ועד פרסום ב-App Store וב-Google Play. פרויקט טיפוסי אורך 4 עד 12 שבועות ועולה בין 15,000 ל-50,000 דולר, תלוי בתאימות חומרה ובדרישות רב-דירתיות.
קחו לדוגמה תרחיש טיפוסי: בבניין מגורים, אפליקציה אחת לתושבים מנתבת שיחה מהאינטרקום של כניסה מסוימת לדירה הנכונה. היא חייבת גם לתמוך בהקלטת וידאו, קודי QR לאורחים, ואינטגרציה עם מערכת בקרת הכניסה הקיימת. לצוות שלנו יש ניסיון של 10+ שנים בפתרונות embedded ומובייל, ולכן אנו מבטיחים עמידה בלוחות זמנים ודיווח שקוף.
למה בחירת הפרוטוקול חשובה
השאלה הראשונה בתכנון היא סוג חומרת האינטרקום. היא קובעת איזה פרוטוקול תקשורת וידאו ישמש.
אינטרקומי IP מוכנים עם SIP — פיתוח אפליקציות מובייל
מכשירים כמו Hikvision DS-KV6113, Grandstream GDS3710, Beward DS06M תומכים ב-SIP וב-ONVIF. הטלפון נרשם כלקוח SIP על Asterisk/FreeSWITCH. שיחה נכנסת מהאינטרקום → SIP INVITE → שרת → push לטלפון → CallKit (iOS) / ConnectionService (Android).
אינטרקום מותאם אישית על מחשב לוח יחיד
אנו משתמשים ב-Raspberry Pi, ESP32-S3, או NXP i.MX — אנו בוחרים את המחסנית בעצמנו. WebRTC דרך Pion (Go) או aiortc (Python) על המכשיר, איתות דרך WebSocket לשרת שלנו, ולאחר מכן ללקוח הנייד.
אינטרקום ענן
פתרונות קנייניים (Ring, Dahua, Hikvision EZVIZ) מספקים SDK של P2P. האינטגרציה מהירה אך מובילה לנעילת ספק.
איך להבטיח מסירת שיחה בשברירי שנייה
עיכוב בהתראה הוא קריטי: אורח נמצא בדלת. ב-iOS, הדרך הנכונה היא APNs VoIP push עם PKPushRegistry ו-PKPushType.voIP. המערכת מעירה את האפליקציה מיד, אפילו מ-Force Quit, ומציגה את ממשק השיחה המקורי דרך CXProvider. לפי תיעוד CallKit, זו הגישה הסטנדרטית לאפליקציות VoIP.
let update = CXCallUpdate()
update.remoteHandle = CXHandle(type: .generic, value: "Дверь подъезда")
update.hasVideo = true
update.localizedCallerName = "Домофон"
provider.reportNewIncomingCall(with: callUUID, update: update) { error in
...
}תעודת ה-APNs VoIP נפרדת מתעודת ה-push. אל תשכחו את let update = CXCallUpdate() update.remoteHandle = CXHandle(type: .generic, value: "Дверь подъезда") update.hasVideo = true update.localizedCallerName = "Домофон" provider.reportNewIncomingCall(with: callUUID, update: update) { error in ... } ב-voip ב-Info.plist.
ב-Android, אנו משתמשים ב-UIBackgroundModes + FCM עם עדיפות גבוהה (ConnectionService). priority: high מציג את השיחה המערכתית. בעיה: ב-Xiaomi, Huawei, OPPO אופטימיזציות סוללה אגרסיביות הורגות את חיבור ה-FCM. פתרון: TelecomManager.addNewIncomingCall() keepalive + הוראה למשתמש להוסיף את האפליקציה לחריגים. עבור Huawei, אנו משתמשים ב-HMS Push.
לפרויקטים חוצי-פלטפורמות (Flutter), אנו משתמשים ב-JobScheduler וב-firebase_messaging — קישורים מקוריים ל-CallKit ול-ConnectionService.
תקשורת וידאו WebRTC
לאחר מענה לשיחה, נוצר חיבור peer של WebRTC. איתות: החלפת SDP דרך שרת ה-WebSocket שלנו (או Asterisk עם תחבורת WebSocket עבור SIP/WebRTC). מועמדויות ICE נאספות דרך STUN; עבור מעבר NAT, אנו משתמשים ב-TURN (Coturn). וידאו ממצלמת האינטרקום מוצג ב-flutter_callkit_incoming (Metal, iOS) או RTCMTLVideoView (Android). אודיו — SurfaceViewRenderer. AEC (ביטול הד) מובנה ב-WebRTC — קריטי למניעת הד דרך הרמקול של האינטרקום. חביון וידאו: 150-400 אלפיות השנייה ב-Wi-Fi, 400-800 אלפיות השנייה ב-4G — מקובל להחלטה אם לפתוח או לא.
השוואת פרוטוקולים: מחסנית SIP מתאימה לאינטרקומי IP סטנדרטיים, אך WebRTC מספק חביון וידאו נמוך פי 3-5 בשל חיבור P2P ישיר.
שליטה בנעילה
בקשת HTTP או MQTT למכשיר או לשרת: RTCAudioTrack או POST /api/unlock. אישור פתיחה דרך חיישן דלת (אופציונלי): אירוע publish("home/door/unlock", "1") מוצג באפליקציה. כפתור "פתח" פעיל רק במהלך השיחה — לאחר סיומה, הוא נעלם. יומן אירועים: כל שיחה, פתיחה ודחייה נכתבים למסד הנתונים עם חותמת זמן ו-userId.
הקלטת אירועי וידאו
הקלטת וידאו לכל שיחה (הקלטת צלצול): שרת מדיה (תוסף הקלטה של Janus, Ant Media) כותב את הזרם ל-WebM/MP4. אחסון ב-S3/MinIO עם שמירה של 30 האירועים האחרונים או 7 ימים (כלל מחזור חיים). לקוח הנייד מציג היסטוריה: ציר זמן עם תצוגה מקדימה של הפריים הראשון, משך, וכפתור הפעלה באמצעות OPEN / AVPlayer מ-URL חתום של S3.
בניין רב-דירות
כניסות מרובות, דירות מרובות. ניתוב: האינטרקום בכניסה 3 מתקשר רק לתושבי הדירות בכניסה 3. ב-Asterisk: dialplan עם ExoPlayer. כל דירה היא חשבון SIP נפרד. באפליקציה, המשתמש מקושר לחשבון הדירה שלו. גישת אורח: הבעלים מנפיק קוד QR זמני עם תקופת תוקף מוגבלת.
איך הניתוב עובד בבניין רב-דירות
לכל אינטרקום כניסה יש מספר SIP ייחודי. כאשר לוחצים על כפתור השיחה, האינטרקום שולח INVITE עם מספר הדירה (DTMF). Asterisk ממיר את ה-DTMF למספר חשבון ה-SIP של הדירה. אם לא עונים לשיחה, היא מועברת לאפליקציה הניידת דרך VoIP push. במקרה של כישלון, הווידאו מוקלט ונשלחת התראה.תהליך אינטגרציית אינטרקום שלב אחר שלב
- ביקורת חומרה — ניתוח פרוטוקולי אינטרקום, תמיכה ב-ONVIF/SIP, יכולות ממסר יציאה.
- עיצוב ארכיטקטורה — בחירת מחסנית (SIP לעומת WebRTC), צד שרת, DBMS.
- פיתוח צד שרת — שרת Asterisk/WebRTC, REST API לאפליקציה, ברוקר MQTT.
- פיתוח לקוח נייד — iOS (Swift + CallKit) ו-Android (Kotlin + ConnectionService) עם וידאו, שליטה בנעילה, היסטוריה.
- אינטגרציה ובדיקות — עמדת בדיקה עם אינטרקום אמיתי, בדיקות חביון, תרחישי שגיאה.
- פרסום ב-App Store וב-Google Play — פרופילי provisioning, חתימת קוד, תעודות push.
שלבי פיתוח
| שלב | תוכן | לוח זמנים |
|---|---|---|
| ביקורת חומרה וארכיטקטורה | פרוטוקולי מכשיר, בחירת מחסנית | 3-5 ימים |
| צד שרת | שרת Asterisk/WebRTC, API | 1-2 שבועות |
| לקוח נייד iOS + Android | CallKit, וידאו, שליטה בנעילה | 2-3 שבועות |
| הקלטת אירועים והיסטוריה | S3, נגן, יומן | שבוע אחד |
| בדיקות על חומרה | QA על אינטרקום אמיתי | שבוע אחד |
סה"כ בין חודש ל-3 חודשים תלוי במורכבות ובדרישות רב-דירתיות.
השוואת חומרה
| סוג | פרוטוקול | מורכבות | חביון וידאו | נעילת ספק |
|---|---|---|---|---|
| אינטרקום SIP | SIP + ONVIF | בינוני | 200-500 אלפיות השנייה | לא |
| מותאם אישית (RPi) | WebRTC | גבוה | 150-400 אלפיות השנייה | לא |
| ענן (Ring/Dahua) | P2P SDK | נמוך | 300-600 אלפיות השנייה | כן |
מה כלול בעבודה
עם סיום הפרויקט, אתם מקבלים:
- קוד מקור של האפליקציה הניידת (iOS/Android) עם הערות
- קובצי IPA/APK מובנים ותצורות פרסום
- צד שרת (אם נדרש) בקונטיינרים של Docker
- תיעוד API והוראות התקנה
- חודש אחד של תמיכה טכנית לאחר המסירה
- קוד במאגר Git פרטי
אם אתם רוצים להעריך את הפרויקט שלכם, צרו קשר — נכין ארכיטקטורה ראשונית והערכת עלות תוך 2 ימי עסקים.







