אנו מפתחים אפליקציות מובייל לתשלום חניה. האתגר המרכזי הוא מודל הסשן: סשן חניה מתחיל בכניסה ומסתיים ביציאה או כאשר הזמן שנרכש פג. המשתמש חייב לדעת בדיוק כמה זמן נותר ולקבל אזהרה לפני תחילת הקנסות. זה דורש התראות push מדויקות, טיימרים ברקע, ואינטגרציה אמינה עם שער תשלום.
לאחרונה טיפלנו במקרה שבו מפעיל חניה איבד עד 15% מההכנסות (כ-11,000–16,000 דולר בשנה) עקב הארכות שלא שולמו. משתמשים שכחו להאריך, והתראות push לא תמיד הגיעו. פיתחנו אפליקציה שפתרה זאת: הוספנו כפילות SMS, שיפרנו את הטיימר, והטמענו הארכה אוטומטית. תוצאה: הקנסות ירדו ב-95%, והמרת ההארכות עלתה ב-40%. חיסכון למפעיל: מעל 4,500–6,500 דולר ברבעון הראשון.
הניסיון שלנו: מעל 7 שנים בפיתוח מובייל, עשרות פתרונות חניה מיושמים. אנו מבטיחים שהאפליקציה תעבור את הבדיקות של App Store ו-Google Play בניסיון הראשון, כולל דרישות פרטיות (ATT, תוויות תזונה לפרטיות) לפי סעיף 4.2 בהנחיות בדיקת ה-App Store.
צרו קשר כדי לדון בפרויקט שלכם ולקבל הדגמה. הזמינו ייעוץ להערכת היקף העבודה.
תיעוד Apple Vision Framework
כיצד לארגן ניהול סשנים באפליקציית תשלום חניה?
הישות המרכזית היא ParkingSession. יש לה מחזור חיים:
IDLE → ACTIVE → EXPIRING (за 15 мин до конца) → EXPIRED / EXTENDED מעברי המצב מנוהלים בשרת. האפליקציה מציגה את המצב הנוכחי באמצעות polling או WebSocket. הטיימר המקומי מיועד ל-UI בלבד, לא ללוגיקה עסקית.
אובייקט סשן טיפוסי:
{
"sessionId": "PSN-SESSION-4471",
"zoneCode": "A-12",
"vehiclePlate": "А123ВС77",
"startedAt": "2024-07-15T10:15:00+03:00",
"expiresAt": "2024-07-15T12:15:00+03:00",
"rate": 60,
"currency": "USD",
"status": "ACTIVE",
"paymentStatus": "PAID"
} מדוע סנכרון מדויק של מצב הסשן חשוב?
אי-התאמה בין זמן השרת לטיימר המקומי עלולה לעלות למשתמש בקנס. לכן, אנו משתמשים בזמן השרת כמקור האמת היחיד. המונה המקומי מיועד לתצוגה בלבד. בכל פעם שהאפליקציה נפתחת או מתקבלת push, הסשן נטען מחדש מהשרת. להתראות קריטיות (5 דקות לפני פקיעה), אנו שולחים כפילות באמצעות FCM ו-SMS אם ה-push לא נמסר (אופציונלי).
זיהוי לוחית רישוי באמצעות מצלמה — פיתוח אפליקציות מובייל
הזנה ידנית של לוחית היא חוויית משתמש ירודה. זיהוי במצלמה עדיף. ב-iOS אנו משתמשים ב-Vision + VNRecognizeTextRequest. באנדרואיד — ML Kit Text Recognition. דיוק הזיהוי ללוחיות רוסיות בתמונות טובות הוא סביב 85–90%. למקרים קשים, אנו משתמשים ב-OpenALPR בצד השרת.
import Vision
func recognizePlate(from pixelBuffer: CVPixelBuffer) {
let request = VNRecognizeTextRequest { [weak self] request, error in
guard let observations = request.results as? [VNRecognizedTextObservation] else { return }
let candidates = observations.compactMap { $0.topCandidates(1).first?.string }
let plateRegex = /[АВЕКМНОРСТУХ]{1}\d{3}[АВЕКМНОРСТУХ]{2}\d{2,3}/
let plate = candidates.compactMap { $0.firstMatch(of: plateRegex)?.0 }.first
DispatchQueue.main.async {
self?.vehiclePlateField.text = plate.map(String.init) ?? ""
}
}
request.recognitionLevel = .accurate
request.recognitionLanguages = ["ru-RU"]
let handler = VNImageRequestHandler(cvPixelBuffer: pixelBuffer)
try? handler.perform([request])
} כיצד להבטיח מסירה אמינה של התראות push באפליקציית תשלום חניה?
בעיה נפוצה היא אובדן push עקב מצב חיסכון בחשמל ב-iOS או Doze באנדרואיד. אנו פותרים זאת באמצעות:
- הודעות FCM בעדיפות גבוהה עם מפתח collapsing למניעת כפילות התראות;
- כפילות SMS למצבים קריטיים (אופציונלי);
- טיימר גיבוי מקומי שמופעל אם לא מתקבלת תגובה מהשרת 2 דקות לפני המועד.
טיימר הספירה לאחור הוא רכיב ה-UI המבוקש ביותר. ב-iOS הוא מתגורר ב-ProgressView + Timer, באנדרואיד ב-CountDownTimer. אבל התראות רקע עוברות דרך APNs/FCM.
לוגיקת ההתראות בצד השרת:
- 15 דקות לפני expiresAt → push "החניה פגה בעוד 15 דקות"
- 5 דקות לפני → push עם כפתורים "הארך בשעה" / "סיים"
- בזמן expiresAt → push "סשן החניה הסתיים"
ב-iOS, כפתורים בהתראות push מיושמים באמצעות UNNotificationCategory. לחיצה על "הארך" מההתראה פותחת את האפליקציה במסך ההארכה ומתחילה אוטומטית תשלום עם כרטיס שמור ללא שלבים נוספים.
כיצד לשלב את האפליקציה עם שער תשלום?
לתשלום חניה יש שני תרחישים:
תשלום מראש — קניית זמן לפני הכניסה. המשתמש בוחר אזור, זמן, ומשלם. השרת מנפיק קוד סשן. בכניסה, מפעיל סורק QR או קורא את הלוחית.
תשלום לאחר — תשלום ביציאה. הסשן מתחיל אוטומטית בכניסה (לפי לוחית), הסכום מחושב ביציאה, והאפליקציה מבקשת תשלום.
השוואה:
| קריטריון | תשלום מראש | תשלום לאחר |
|---|---|---|
| מועד התשלום | לפני הכניסה | ביציאה |
| סיכון לתשלום חסר | מינימלי | אפשרי אם יש עיכוב בתשלום |
| תשתית נדרשת | מחסום/מפעיל לאימות | קליטת לוחית אוטומטית |
| חוויית משתמש | המשתמש צריך לנחש זמן | משלמים אחר כך, נוח יותר |
לשני התרחישים, אנו משתמשים בכרטיס שמור דרך טוקן ספק (CloudPayments, YooKassa, Stripe). תשלום חד-פעמי ללא שמירת כרטיס: דרך ווידג'ט תשלום ב-WKWebView/WebView. תשלומים קבועים (מנוי): באמצעות תשלומים חוזרים עם טוקן.
אינטגרציה עם ציוד חניה
אם מגרש החניה משתמש במערכת בקרת כניסה או מחסום, האינטגרציה היא דרך API של שרת המפעיל. פרוטוקולים נפוצים: SOAP/XML (מיושן), REST JSON (מודרני). האפליקציה לא מתקשרת ישירות עם הציוד — רק דרך השרת.
לפתיחת מחסום באמצעות קוד QR ביציאה, אנו משתמשים ב-AVCaptureSession.
תוכנית טכנית מפורטת
| רכיב | iOS | Android |
|---|---|---|
| UI | SwiftUI + UIKit (מצלמה) | Jetpack Compose + CameraX |
| זיהוי לוחית | Vision Framework | ML Kit Text Recognition |
| מפות | MapKit / Google Maps SDK | Google Maps SDK |
| תשלומים | Stripe iOS SDK / CloudPayments | Stripe Android SDK / CloudPayments |
| Push | APNs דרך Firebase | FCM |
| ארכיטקטורה | MVVM + Combine | MVVM + StateFlow |
מה כלול בפיתוח?
אנו מספקים חבילה מלאה:
- תיעוד ארכיטקטוני (דיאגרמות, תיאור API)
- קוד מקור עם כיסוי בדיקות יחידה (>70%)
- הגדרת CI/CD (GitHub Actions, GitLab CI)
- אינטגרציה עם שער תשלום ו-API של חניה
- פרסום ל-App Store ו-Google Play (כולל צילומי מסך, תיאורים)
- מדריכים למנהל ולמשתמש
- תמיכה טכנית למשך שבועיים לאחר השחרור
- גישה למאגר הקוד ולמערכת ניהול המשימות
- הדרכה לצוות המפעיל על פאנל הניהול
כיצד מתנהל תהליך הפיתוח?
אנו עוקבים אחר השלבים הבאים:
- ניתוח דרישות ואב-טיפוס (3 ימים)
- עיצוב ארכיטקטורה ו-API
- פיתוח MVP עם תכונות ליבה
- אינטגרציה עם שער תשלום ו-API של חניה
- בדיקות (יחידה >70%, אינטגרציה, UI)
- פרסום ל-App Store ו-Google Play
גרסה בסיסית (סשנים, טיימר, תשלום בכרטיס, push): 4 עד 6 שבועות. הוספת זיהוי לוחית, אינטגרציית ציוד, מנויים: עוד 2 עד 4 שבועות. העלות מחושבת בנפרד לאחר ניתוח הדרישות.
צרו קשר כדי לדון בפרויקט שלכם — נכין אב-טיפוס תוך 3 ימים ונציע פתרון אופטימלי. ייעוץ נפרד על ארכיטקטורה ואינטגרציות זמין גם כן. הזמינו פיתוח וקבלו אפליקציה מוכנה בזמן.







