הטמעת גיאופנסינג באפליקציות מובייל: התגברות על מגבלות הפלטפורמה

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

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

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

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
הטמעת גיאופנסינג באפליקציות מובייל: התגברות על מגבלות הפלטפורמה
בינוני
~2-3 ימים

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

שאלות נפוצות

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

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

הטמעת גיאופנסינג באפליקציות מובייל: התגברות על מגבלות הפלטפורמות

אפליקציה עם גיאופנסים שמפסיקה לשלוח התראות ב-iOS 17 אינה באג בקוד שלכם. אפל כתבה מחדש את הלוגיקה של ניטור מיקום ברקע, הדקה את דרישות תיאור ההרשאות, והוסיפה מגבלות חדשות. תמונה דומה באנדרואיד: מצב Doze, אופטימיזציות סוללה אגרסיביות של יצרנים, והרשאה נפרדת למיקום ברקע עם בדיקה ידנית ב-Google Play. מפתחים שמתעלמים מהניואנסים האלה מקבלים אפליקציה שקטה וביקורות גרועות.

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

מגבלות פלטפורמות: טבלת השוואה

פלטפורמה מקסימום אזורים רדיוס מינימלי הגבלות רקע עובד ללא GMS
iOS 20 100 מ' עיכוב 3-5 דקות, iOS 13+ דורש תמיד בקשת שני שלבים כן (iOS בלבד)
אנדרואיד 100 (מומלץ <=50) ~100 מ' ליציבות Doze, חיסכון בסוללה, ACCESS_BACKGROUND_LOCATION עם בדיקה ידנית נדרש HMS ב-Huawei
Huawei HMS 100 100 מ' דומה לאנדרואיד, אך ללא Doze (ל-EMUI יש מצב משלו) כן (HMS)

iOS. CLLocationManager תומך בעד 20 גיאופנסים פעילים בו-זמנית—מגבלת מערכת, לא שלנו. הרדיוס המינימלי הוא 100 מטרים; רדיוסים קטנים יותר אינם מנוטרים. במכשירים ללא שבבי A12+, הדיוק נמוך אף יותר. CLCircularRegion מספק אירועי didEnterRegion / didExitRegion, אך העיכוב יכול להיות 3-5 דקות בהתאם למצב חיסכון בחשמל. ב-iOS 13+ עליכם לבקש הרשאת Always דרך דיאלוג דו-שלבי: תחילה whenInUse, ולאחר מכן המשתמש עובר להגדרות. אינכם יכולים עוד לבקש ישירות Always—אפל תדחה זאת בבדיקה.

אנדרואיד. Geofencing API ב-com.google.android.gms:play-services-location דורש Google Play Services. ב-Huawei ללא GMS—נדרש מסלול נפרד דרך HMS LocationKit. אנדרואיד 10+ הציגה את ACCESS_BACKGROUND_LOCATION כהרשאה נפרדת שהמשתמש מעניק בהגדרות, לא בדיאלוג הרגיל. באנדרואיד 12 SCHEDULE_EXACT_ALARM נוספה עבור שעונים מדויקים—בלעדיה, Geofencing במכשירי Doze עלול שלא לפעול בזמן הנכון. חלק מהיצרנים (Xiaomi MIUI, Samsung One UI עם חיסכון סוללה אגרסיבי) הורגים שירותי רקע לפני שה-API מספק את האירוע.

איך לפתור את בעיית חריגת מגבלת הגיאופנס?

iOS: תרחיש בסיסי

let region = CLCircularRegion(
    center: CLLocationCoordinate2D(latitude: 55.7558, longitude: 37.6173),
    radius: 200,
    identifier: "office_zone"
)
region.notifyOnEntry = true
region.notifyOnExit = false
locationManager.startMonitoring(for: region)

כאשר חורגים ממגבלת 20 האזורים, אנו נותנים עדיפות לפי מרחק מהמיקום הנוכחי וטוענים דינמית את קבוצת האזורים הפעילים דרך let region = CLCircularRegion( center: CLLocationCoordinate2D(latitude: 55.7558, longitude: 37.6173), radius: 200, identifier: "office_zone" ) region.notifyOnEntry = true region.notifyOnExit = false locationManager.startMonitoring(for: region) / stopMonitoring. לוגיקת הרוטציה נמצאת ב-startMonitoring.

לפרויקטים שדורשים יותר מ-20 אזורים או רדיוס קטן מ-100 מטרים, אנו עוברים ל-Visit Monitoring (locationManager(_:didUpdateLocations:)) או Significant Location Changes בשילוב עם בדיקת גיאופנס בצד השרת לפי קואורדינטות.

אנדרואיד: Geofencing API + WorkManager

val geofence = Geofence.Builder()
    .setRequestId("warehouse_exit")
    .setCircularRegion(lat, lon, 150f)
    .setExpirationDuration(Geofence.NEVER_EXPIRE)
    .setTransitionTypes(Geofence.GEOFENCE_TRANSITION_ENTER or Geofence.GEOFENCE_TRANSITION_EXIT)
    .setLoiteringDelay(30_000) // DWELL через 30 секунд
    .build()
val request = GeofencingRequest.Builder()
    .addGeofence(geofence)
    .setInitialTrigger(GeofencingRequest.INITIAL_TRIGGER_ENTER)
    .build()
geofencingClient.addGeofences(request, geofencePendingIntent)

ה-startMonitoringVisits() מוביל ל-val geofence = Geofence.Builder() .setRequestId("warehouse_exit") .setCircularRegion(lat, lon, 150f) .setExpirationDuration(Geofence.NEVER_EXPIRE) .setTransitionTypes(Geofence.GEOFENCE_TRANSITION_ENTER or Geofence.GEOFENCE_TRANSITION_EXIT) .setLoiteringDelay(30_000) // DWELL через 30 секунд .build() val request = GeofencingRequest.Builder() .addGeofence(geofence) .setInitialTrigger(GeofencingRequest.INITIAL_TRIGGER_ENTER) .build() geofencingClient.addGeofences(request, geofencePendingIntent) שמפעיל משימת PendingIntent במקום לבצע לוגיקה ישירות. זה חשוב: ביצוע ישיר של משימה ארוכה מ-Receiver באנדרואיד 8+ גורם לחריגת BroadcastReceiver.

עבור Huawei HMS, WorkManager מספק API כמעט זהה, אך דורש רישום BackgroundExecutionLimits נפרד דרך com.huawei.hms:location.

למה אימות בצד השרת הוא לא אופציה אלא הכרח?

גיאופנסינג מובייל הוא מטבעו לא אמין. לתרחישים עסקיים קריטיים (בקרת יציאת תחבורה, גיימיפיקציה עם פרסים) אנו בונים בדיקה נוספת בצד השרת: המכשיר שולח קואורדינטות מעת לעת, השרת בודק חיתוך מצולע דרך PostGIS או גיאופנס דרך Redis GEORADIUS. גיאופנסינג מובייל מספק טריגר מהיר; השרת הוא הפוסק הסופי.

טיפול נכון בהרשאות

הסיבה הנפוצה ביותר לדחיית App Store היא הסבר לא תקין של PendingIntent. אפל קוראת את המחרוזות ב-GeofenceService ודורשת תיאור ספציפי: "לשליחת התראה בעת כניסה לאזור האיסוף" במקום "לצורך פעולת האפליקציה".

ב-Google Play, מאז מאי 2023, מיקום ברקע עובר בדיקה ידנית. האפליקציה חייבת להסביר את מקרה השימוש הספציפי ולהציג הדגמת וידאו. אפשרו 3-7 ימים לכך.

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

  • קוד אינטגרציה של Geofencing API ל-iOS (Swift 5.9+, SwiftUI/UIKit) ולאנדרואיד (Kotlin, Jetpack Compose).
  • טיפול במגבלות וברוטציית אזורים.
  • ניהול הרשאות נכון עם טקסט ל-App Store/Google Play.
  • בדיקות: Walk Test ב-iOS ונסיעות אמיתיות באנדרואיד.
  • תיעוד ארכיטקטורה ותיאור לבדיקה.
  • תמיכה לאחר השקה: חידודים, ניטור, תיקוני באגים.

תהליך העבודה

ניתוח דרישות: מספר אזורים, רדיוס מינימלי, פלטפורמות, נוכחות GMS בקהל היעד. עיצוב ארכיטקטורה תוך התחשבות במגבלות הפלטפורמות. הטמעה עם ניהול הרשאות נכון. בדיקות: Walk Test דרך Xcode Simulator Location, נסיעות אמיתיות לאנדרואיד. הכנת תיאורים לבדיקה.

לוח זמנים: מ-3 עד 6 ימים בהתאם למספר הפלטפורמות ומורכבות הטריגרים. אנו נעריך את הפרויקט שלכם תוך יום אחד—צרו קשר לייעוץ. הזמינו הטמעת גיאופנסינג סוהר עם אחריות לפעולה תקינה בגרסאות מערכת ההפעלה העדכניות ביותר.