ארכיטקטורת מובייל (React Native)
אפליקציית המובייל גבאי סמארט היא אפליקציית React Native מותאמת ל-Android TV ו-טאבלטים. היא משמשת כיחידת התצוגה בבית הכנסת.
טכנולוגיות מפתח
- React Native (תהליך עבודה CLI, לא Expo Go).
- React Navigation: לניתוב בין מסכים.
- Redux Toolkit: ניהול מצב (משקף את ארכיטקטורת Client).
- Socket.IO Client: לעדכונים בזמן אמת מהשרת.
אופטימיזציה ל-Android TV
האפליקציה מתוכננת לחוויות "10-foot UI".
- ניווט: תומך בניווט D-Pad (שלט רחוק).
- ניהול פוקוס: אלמנטים מפתח (כרטיסים, כפתורים) בעלי מצבי פוקוס נראים.
- כיווניות: נעול למצב Landscape (אופקי).
- שמירה על ערות: משתמש ב-
react-native-keep-awakeלמניעת שינה של המסך.
מבנה מסכים (src/screens)
- Main: לולאת התצוגה הראשית (זמני תפילה, הודעות, זמנים).
- Device: מסכי הגדרה.
DeviceSelectionScreen.tsx: צירוף/הגדרה ראשונית.SmartTVMonitorScreen.tsx: תצוגת טלמטריה וניטור.
- Times: מסכים ייעודיים לצפייה בטבלאות לוח זמנים.
סנכרון נתונים
- טעינה ראשונית: שולפת קונפיגורציה מלאה (זמנים, הודעות, הגדרות) דרך REST API בהפעלה.
- זמן אמת: מאזינה לאירועי Socket.IO (למשל,
refreshData,message:new) כדי להפעיל רענונים ברקע מבלי לקטוע את מחזור התצוגה.
תקשורת עם השרת
REST API
משמש לטעינת נתונים סטטיים:
import { btManagementApi } from '@/utilities/api/btManagementApi';
const times = await btManagementApi.get('/tfila-times');
Socket.IO
משמש לעדכונים דינמיים:
import io from 'socket.io-client';
const socket = io(SOCKET_URL, {
auth: { token: authToken },
});
socket.on('refreshData', () => {
// רענון נתונים ברקע
});
MQTT (אופציונלי)
חלק מהמכשירים משתמשים ישירות ב-MQTT לקבלת פקודות:
import mqtt from 'react-native-mqtt';
mqtt.connect({
uri: MQTT_URL,
clientId: deviceId,
});
אופטימיזציית ביצועים
- Lazy Loading: רכיבים נטענים רק כשנדרש.
- Memoization: שימוש ב-
React.memoו-useMemoלמניעת רינדור מיותר. - Image Caching: תמונות נשמרות במטמון מקומי.
- Background Tasks: שימוש ב-
react-native-background-timerלמשימות רקע.
בדיקה
# בדיקות יחידה
npm test
# בדיקת קישוריות שרת
npm run test:server
# בדיקת API
npm run test:api