Mar 03, 2019
אפליקצית צופר - צבע אדום
הקדמה
בזמן מבצע "צוק איתן" הייתי רק בן 9.. וכבר אז התעניינתי ורציתי לפתח תוכנה שתתריע על "צבע אדום". כמובן שבאותה תקופה לא היה לי את הידע הנדרש, אך יחד עם זאת כתבתי באותו זמן במהלך המבצע ב-JavaScript תוסף לגוגל כרום.
כבר מכיתה ח, בשנת 2019 התעניינתי במצב הביטחוני והמצב בעזה, ולכן גם מאוד עניין אותי לפתח אפליקציה שתתריע על אזעקות צבע אדום ובשונה משאר האפליקציות הקיימות - תעשה את זה בצורה הטובה והמהירה ביותר ככל האפשר.
פיתוח הגרסה הראשונית של האפליקציה נמשך כחודש, ונעשה בסביבת Android Studio בשפת Java.
לאחר סיום כתיבת האפליקציה, הגיע השלב המורכב יותר והוא כתיבת קוד השרת ומשיכת ההתרעות. תחילה חקרתי כיצד פיקוד העורף מפיצים את ההתרעות, וגיליתי את מקור ההתרעות באתר שלהם. לפי מה שהם טוענים המקור הזה חסום... למרות שניתן לגשת אליו מאוד בקלות באמצעות הוספת 2 כותרות (Headers) ב-Requests. דוגמה לתבנית המתקבלת בזמן התרעה:
{
"title":"התרעות פיקוד העורף",
"data":["אשקלון"],
"id":15334527443
}
אך לאחר שראיתי את הדיליי העצום (כ-10 שניות) שיש למקור הזה בזמן אזעקה אמיתית, עברתי להשתמש במספר מקורות חלופיים שמתריעים כ-5 שניות לפני הפעלת הצופרים במרחב (כלומר ההתרעה מתקבלת בשרת עוד לפני שהצופרים בחוץ הופעלו).
צד השרת
החלק העיקרי בצופר הוא השרת. הוא מפענח את ההתרעות שמתקבלות ממספר מקורות, מושך מתוך db עצום את המשתמשים שצריכים לקבל את ההתרעות ומפיץ להם. נוסיף גם שכל זה מוכרח להתרחש תוך פחות מחצי שנייה בלבד. במהלך מבצע "שומר החומות" כמות הרשומים בצופר הגיע ל500 אלף משתמשים, והשרת עמד בכבוד בביצועים ובעומסים.
במהלך המבצע גם נתקלנו בעיכובים בזמן קבלת ההתרעות דרך שירות FCM ולכן תוך כמה ימים בודדים חיברנו את המשתמשים לSSE וכך יצרנו מקור התרעות נוסף עבור האפליקציה, וזה שיפר מאוד את זמן קבלת ההתרעות במכשירי המשתמשים.
צד השרת כתוב בשפת node.js ורץ על Ubuntu, בחרנו בשפה הזו מפני שהיא עונה על הצורך ועל הפעולות שאנחנו צריכים לבצע כמו למשל פתיחה של 15 אלף חיבורי tcp במקביל בכל התרעה בודדת, כאן אפשר להגיע לביצועים כאלה בלי כל בעיה.
אפליקציה
עם השנים האפליקציה שודרגה ונוספו אפשרויות חדשות.
- חיווי קולי - הקראה של שמות היישובים בהם נשמעת האזעקה, תומך בשפות עברית, אנגלית, ערבית ורוסית (פיקוד העורף סייעו במתן הקבצים הקוליים בשפות שונות).
- אפשרות בחירת אזורי עניין (יישובים / אזורים) לקבלת ההתרעות, ולקבל התרעות רק עבור אותם אזורים.
- קבלת התרעות לפי מיקום נוכחי (האפליקציה מאכנת את מיקום המכשיר ברקע).
- התרעות משנה - עבור יישובים אחרים שלא נבחרו בתור היישובים הראשיים.
- תצוגת מפה - צפייה במיקומי היישובים על גבי המפה.
- בחירת הצליל שיושמע בעת התרעה.
- בחירת הווליום של צליל ההתרעה.
- עקיפת מצב שקט.
- מגוון מצבי רטט (ארוך / קצר / כבוי).
- האפליקציה וכל שמות היישובים מתורגמים באופן מלא לשפות - עברית, אנגלית, ערבית, רוסית וספרדית.
- חלון קופץ.