הגדרת התראות גיאו-פencing עבור 1С-Bitrix
תארו לעצמכם: אתם מנהלים רשת של 50 חנויות קמעונאיות. אלפי קונים פוטנציאליים חולפים על פניכם מדי יום. שליחת התראת push מותאמת אישית ברגע שמישהו נמצא ליד חנות מגבירה את המרת הביקורים פי 2–3. הכלים הסטנדרטיים של Bitrix24 לא מציעים זאת — אתם צריכים פתרון במפגש בין אפליקציית מובייל ל-API של השרת. כבר יישמנו תרחישים כאלה עבור 15+ לקוחות, ובמאמר זה נתאר ארכיטקטורה שמתמודדת עם עד 10,000 סשנים במקביל.
גיאו-פencing הוא טריגר שמופעל כאשר משתמש נכנס או יוצא מאזור מוגדר. בהקשר של Bitrix, זה אומר התראת push כמו "אתה בקרבת מקום — 10% הנחה". בניגוד ל-Geolocation API של הדפדפן, גיאו-פencing טבעי חוסך 30% בסוללה ואינו דורש מסך פעיל.
איך גיאו-פencing עובד ב-1С-Bitrix
דרושים שלושה רכיבים:
- אפליקציית מובייל עם ניטור רקע — רושמת גיאו-פences ושולחת אירועים לשרת.
- API שרת על Bitrix — מקבל אירועים ומחליט אם לשלוח push.
- תשתית push — Firebase Cloud Messaging (FCM) עבור Android, APNs עבור iOS.
האירוע מגיע מהאפליקציה תוך 200–500 אלפיות שנייה, השרת מעבד אותו תוך 50 אלפיות שנייה. ההתראה נמסרת תוך 1–2 שניות.
למה גיאו-פencing טבעי עדיף על פני מבוסס-דפדפן
SDKs טבעיים (Android GeofencingClient, iOS CLLocationManager) מספקים דיוק עד 50 מטר ועובדים ברקע. ה-API של הדפדפן דורש טאב פתוח ומרוקן את הסוללה פי 3 מהר יותר. השוואה עיקרית:
| פרמטר | גיאו-פencing טבעי | מיקום דפדפן |
|---|---|---|
| דיוק | 50–100 מ' | 500–1000 מ' |
| פעולת רקע | כן | לא |
| צריכת סוללה | 2–5% ליום | 15–20% לשעה |
| זמן תגובה לטריגר | 1–5 שניות | 10–30 שניות |
אילו רכיבים דרושים ליישום?
אפליקציית המובייל משתמשת ב:
- Android:
com.google.android.gms.location.GeofencingClient - iOS:
CLLocationManagerעםstartMonitoring(for: CLCircularRegion)
בהפעלה, האפליקציה טוענת את רשימת האזורים משרת Bitrix ורושמת אותם. בכניסה/יציאה, מערכת ההפעלה מייצרת אירוע — האפליקציה שולחת בקשת POST ל-API שלכם.
API בצד Bitrix
נקודת קצה REST /local/ajax/geofence-event.php נוצרת כדי לקבל אירועים:
<?php require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php'; $data = json_decode(file_get_contents('php://input'), true); $userId = (int)$data['user_id']; $zoneId = (int)$data['zone_id']; $eventType = $data['event']; // 'enter' или 'exit' $deviceToken = $data['device_token']; if ($eventType === 'enter') { \Local\Geofence\NotificationService::sendEnterZoneNotification( $userId, $zoneId, $deviceToken ); } ?> אחסון אזורים גיאוגרפיים
אנו משתמשים ב-HL-block <?php require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php'; $data = json_decode(file_get_contents('php://input'), true); $userId = (int)$data['user_id']; $zoneId = (int)$data['zone_id']; $eventType = $data['event']; // 'enter' или 'exit' $deviceToken = $data['device_token']; if ($eventType === 'enter') { \Local\Geofence\NotificationService::sendEnterZoneNotification( $userId, $zoneId, $deviceToken ); } ?> לאחסון אזורים. מבנה לדוגמה:
| שדה | סוג | תיאור |
|---|---|---|
GeoZones |
מחרוזת | שם האזור |
UF_NAME |
מספר עשרוני | קו רוחב מרכזי |
UF_LAT |
מספר עשרוני | קו אורך מרכזי |
UF_LNG |
מספר שלם | רדיוס במטרים |
UF_RADIUS |
טקסט | טקסט התראת push |
UF_NOTIFICATION_TEXT |
בוליאני | האם האזור פעיל |
שליחת push דרך FCM
namespace Local\Geofence; class NotificationService { private const FCM_URL = 'https://fcm.googleapis.com/fcm/send'; public static function sendEnterZoneNotification( int $userId, int $zoneId, string $deviceToken ): void { $zone = \Local\Geofence\GeoZoneTable::getById($zoneId)->fetch(); if (!$zone || $zone['UF_ACTIVE'] !== true) return; $payload = [ 'to' => $deviceToken, 'notification' => [ 'title' => 'Вы рядом с нами', 'body' => $zone['UF_NOTIFICATION_TEXT'], ], ]; $http = new \Bitrix\Main\Web\HttpClient(); $http->setHeader('Authorization', 'key=' . FCM_SERVER_KEY); $http->setHeader('Content-Type', 'application/json'); $http->post(self::FCM_URL, json_encode($payload)); } } איך להגדיר קירור להתראות push?
ללא מגבלות, משתמש שחולף ליד חנות מספר פעמים ביום יקבל מספר זהה של התראות. אנו מוסיפים קירור: רושמים שליחות בטבלת UF_ACTIVE או ב-HL-block, ולא שולחים שוב אם פחות מ-N שעות עברו מאז ההתראה האחרונה עבור אותו אזור. ברירת המחדל היא 6 שעות, אך ניתן להגדיר זאת לפי פרויקט.
תהליך היישום
אנו מיישמים גיאו-פencing בחמישה שלבים:
- ניתוח: בחינת התשתית שלכם, זיהוי דרישות לאזורים ותרחישי push.
- עיצוב: הגדרת מבנה HL-block, נקודות קצה API, סכמת נתונים.
- פיתוח: בניית API שרת, אינטגרציית FCM/APNs, לוגיקת קירור.
- אינטגרציה: הגדרת העברת אירועים מאפליקציית המובייל.
- בדיקות: אימות תרחישי כניסה/יציאה, עומס (עד 1000 אירועים/שנייה), ואנטי-ספאם.
מה כלול בעבודה
- עיצוב מבנה אזורים גיאוגרפיים ו-API.
- פיתוח API שרת על 1С-Bitrix עם תמיכת HL-block.
- הגדרת FCM/APNs לשליחת התראות push.
- אינטגרציה עם אפליקציית המובייל (ארכיטקטורת העברת נתונים).
- יישום לוגיקת קירור ואנטי-ספאם.
- תיעוד API והוראות למפתחי אפליקציות מובייל.
- תמיכה טכנית בשלב היישום.
אנו גם מספקים גישה לקוד המקור של המודול ומכשירים את המפתחים שלכם לשימוש בו.
לוח זמנים
זמן היישום המשוער הוא 3 עד 5 ימי עסקים, תלוי במורכבות האינטגרציה ובמוכנות אפליקציית המובייל.
למהנדסים שלנו יש 10 שנות ניסיון עם 1С-Bitrix והם מחזיקים בהסמכות "1С-Bitrix Expert". השלמנו מעל 50 פרויקטים הכוללים אינטגרציית אפליקציות מובייל וגיאו-פencing. האיכות מגובה באחריות על כל העבודה שבוצעה.
קבלו ייעוץ על יישום גיאו-פencing לפרויקט שלכם — הערכת ארכיטקטורה חינמית והערכת לוח זמנים. צרו קשר כדי לדון בפרטים.







