הגדרת התראות Web-Push ב-1C-Bitrix

הגדרת התראות Web-Push ב-1C-Bitrix משתמש עוזב את האתר שלך מבלי להשלים הזמנה. תזכורת דוא"ל רגילה הולכת לאיבוד בתיבת הדואר הנכנס. אבל התראת Push מגיעה גם כשהדפדפן סגור במכשיר נייד. הטמעת זה ב-Bitrix אינה טריוויאלית: אתה צריך VAPID, א
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
הגדרת התראות Web-Push ב-1C-Bitrix
פשוט
~1 יום

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

שאלות נפוצות

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

  • פיתוח אתר חברה B2B ADVANCE
    פיתוח אתר חברה B2B ADVANCE
    1460
  • פיתוח אתר לחברת FIXPER
    פיתוח אתר לחברת FIXPER
    1019
  • פיתוח מבוסס Bitrix, Bitrix24, 1C לחברה פיתוח ווידג'ט להזמנת תורים אונליין למרכז רפואי
    פיתוח מבוסס Bitrix, Bitrix24, 1C לחברה פיתוח ווידג'ט להזמנת תורים אונליין למרכז רפואי
    764
  • פיתוח על בסיס 1C Enterprise עבור MIRSANBEL
    פיתוח על בסיס 1C Enterprise עבור MIRSANBEL
    882
  • פיתוח אתר על CRM Bitrix24 עבור DOLBIMBY
    פיתוח אתר על CRM Bitrix24 עבור DOLBIMBY
    810
  • פיתוח על בסיס Bitrix24 עבור חברת TECHNOTORGKOMPLEKS
    פיתוח על בסיס Bitrix24 עבור חברת TECHNOTORGKOMPLEKS
    1166

הגדרת התראות Web-Push ב-1C-Bitrix

משתמש עוזב את האתר שלך מבלי להשלים הזמנה. תזכורת אימייל רגילה הולכת לאיבוד בתיבת הדואר הנכנס. אבל התראת push מגיעה גם כשהדפדפן סגור במכשיר נייד. הטמעה זו ב-Bitrix אינה טריוויאלית: צריך VAPID, Service Worker, טיפול נכון במנויים שפג תוקפם, ואינטגרציה עם אירועי CRM. אנו מפרקים את הפרטים הטכניים שבהם אנו משתמשים בכל פרויקט. הניסיון שלנו — מעל 5 שנים עם Bitrix ו-20+ פרויקטים עם התראות push. בפרויקט אחד (חנות מקוונת עם 50,000 מוצרים), הגדלנו את שחזור העגלות הנטושות ב-25% באמצעות התראות push שהוגדרו לפי התכנית המתוארת להלן. לקוחות בדרך כלל חוסכים $2,000–$5,000 בחודש במכירות משוחזרות.

בעיות שאנו פותרים

התראות push עולות על אימייל בכמה דרכים: הן אינן מסוננות על ידי מסנני ספאם, נמסרות באופן מיידי, ונראות גם כשהדפדפן סגור (בנייד). בעוד ששיעורי הפתיחה של אימייל עומדים בממוצע על 20–30%, התראות push משיגות 60–80%. לפי מפרט Web Push Protocol, הסיכוי לפתיחת התראות push גבוה פי 3. הן יעילות במיוחד לעגלות נטושות — החזרת המשתמשים עולה ב-20–30%. בפרויקט אחד, תיעדנו החזרה של 25% מהמשתמשים שלא השלימו רכישה תוך שעה.

פרמטר Web-push אימייל
זמן מסירה 1–2 שניות 1–10 דקות
שיעור פתיחה 60–80% 20–30%
דורש הרשאה כן (חד-פעמי) לא
עובד עם דפדפן סגור כן (בנייד) לא
מסנני ספאם אין כן

Web-push יעיל פי 3 מאימייל בשיעורי פתיחה.

איך אנחנו עושים את זה: תשתית

מפתחות VAPID – זוג מפתחות ציבורי/פרטי לאימות השרת מול שירות ה-push של הדפדפן. נוצרים פעם אחת. התקן את הספרייה באמצעות composer require minishlink/web-push, ולאחר מכן:

use Minishlink\WebPush\VAPID; $keys = VAPID::createVapidKeys(); // ['publicKey' => '...', 'privateKey' => '...'] // Сохраняем в настройки COption::SetOptionString('local', 'vapid_public_key', $keys['publicKey']); COption::SetOptionString('local', 'vapid_private_key', $keys['privateKey']); 

המפתח הציבורי מועבר לדפדפן במהלך רישום המנוי; המפתח הפרטי נשאר בשרת. Service Worker – קובץ JS שנרשם על ידי הדפדפן לעבודה ברקע. הקובץ use Minishlink\WebPush\VAPID; $keys = VAPID::createVapidKeys(); // ['publicKey' => '...', 'privateKey' => '...'] // Сохраняем в настройки COption::SetOptionString('local', 'vapid_public_key', $keys['publicKey']); COption::SetOptionString('local', 'vapid_private_key', $keys['privateKey']); חייב להיות בשורש האתר (service-worker.js) בשל מגבלות טווח הדפדפן.

איך לרשום משתמשים נכון

בצד הלקוח, בקש הרשאה וצור מנוי. ה-Service Worker מטפל באירועי push נכנסים ובקליקים על התראות:

דוגמת קוד
// service-worker.js self.addEventListener('push', function(event) { const data = event.data.json(); event.waitUntil( self.registration.showNotification(data.title, { body: data.body, icon: data.icon || '/local/images/push-icon.png', data: { url: data.url } }) ); }); self.addEventListener('notificationclick', function(event) { event.notification.close(); event.waitUntil(clients.openWindow(event.notification.data.url)); }); // Подписка в основном скрипте async function subscribeToPush() { const registration = await navigator.serviceWorker.register('/service-worker.js'); const subscription = await registration.pushManager.subscribe({ userVisibleOnly: true, applicationServerKey: urlBase64ToUint8Array('YOUR_VAPID_PUBLIC_KEY') }); await fetch('/local/ajax/push_subscribe.php', { method: 'POST', body: JSON.stringify(subscription), headers: { 'Content-Type': 'application/json' } }); } 

}

בשרת, /service-worker.js שומר את המנוי. טבלת המנויים מכילה שדות: ID, USER_ID (NULL למשתמשים לא מאומתים), ENDPOINT, P256DH, AUTH, CREATED_AT, LAST_ACTIVE. אינדקס ייחודי על ENDPOINT.

שליחת התראות מ-Bitrix

מחלקת שירות המשתמשת ב-// service-worker.js self.addEventListener('push', function(event) { const data = event.data.json(); event.waitUntil( self.registration.showNotification(data.title, { body: data.body, icon: data.icon || '/local/images/push-icon.png', data: { url: data.url } }) ); }); self.addEventListener('notificationclick', function(event) { event.notification.close(); event.waitUntil(clients.openWindow(event.notification.data.url)); }); // Подписка в основном скрипте async function subscribeToPush() { const registration = await navigator.serviceWorker.register('/service-worker.js'); const subscription = await registration.pushManager.subscribe({ userVisibleOnly: true, applicationServerKey: urlBase64ToUint8Array('YOUR_VAPID_PUBLIC_KEY') }); await fetch('/local/ajax/push_subscribe.php', { method: 'POST', body: JSON.stringify(subscription), headers: { 'Content-Type': 'application/json' } }); } :

use Minishlink\WebPush\WebPush; use Minishlink\WebPush\Subscription; function sendPushNotification(array $subscription, string $title, string $body, string $url): void { $auth = [ 'VAPID' => [ 'subject' => 'https://example.com', 'publicKey' => COption::GetOptionString('local', 'vapid_public_key'), 'privateKey' => COption::GetOptionString('local', 'vapid_private_key'), ], ]; $webPush = new WebPush($auth); $webPush->queueNotification( Subscription::create([ 'endpoint' => $subscription['ENDPOINT'], 'keys' => ['p256dh' => $subscription['P256DH'], 'auth' => $subscription['AUTH']], ]), json_encode(['title' => $title, 'body' => $body, 'url' => $url]) ); foreach ($webPush->flush() as $report) { if ($report->isSubscriptionExpired()) { deleteExpiredSubscription($report->getEndpoint()); } } } 

אינטגרציה עם אירועי Bitrix

תזכורת עגלה נטושה. סוכן רץ כל שעה, מוצא עגלות עם מוצרים ישנים יותר משעתיים עבור משתמשים עם מנויים, ושולח push. טבלה /local/ajax/push_subscribe.php, סינון לפי minishlink/web-push ו-use Minishlink\WebPush\WebPush; use Minishlink\WebPush\Subscription; function sendPushNotification(array $subscription, string $title, string $body, string $url): void { $auth = [ 'VAPID' => [ 'subject' => 'https://example.com', 'publicKey' => COption::GetOptionString('local', 'vapid_public_key'), 'privateKey' => COption::GetOptionString('local', 'vapid_private_key'), ], ]; $webPush = new WebPush($auth); $webPush->queueNotification( Subscription::create([ 'endpoint' => $subscription['ENDPOINT'], 'keys' => ['p256dh' => $subscription['P256DH'], 'auth' => $subscription['AUTH']], ]), json_encode(['title' => $title, 'body' => $body, 'url' => $url]) ); foreach ($webPush->flush() as $report) { if ($report->isSubscriptionExpired()) { deleteExpiredSubscription($report->getEndpoint()); } } } .

הודעת שינוי סטטוס הזמנה. Handler b_sale_basket:

AddEventHandler("sale", "OnSaleOrderStatusUpdate", function($orderId, $arFields) { if ($arFields['STATUS_ID'] === 'D') { // Delivered $userId = CSaleOrder::GetByID($orderId)['USER_ID']; sendPushToUser($userId, 'Заказ доставлен', 'Ваш заказ #' . $orderId . ' ожидает вас'); } }); 

קמפיינים המוניים – בחר את כל המנויים מ-DATE_UPDATE < NOW() - INTERVAL 2 HOUR, שלח בקבוצות של 100 דרך ORDER_ID IS NULL + OnSaleOrderStatusUpdate. קמפיינים גדולים משתמשים בסוכן עם פגינציה כדי למנוע timeout של הסקריפט.

טיפול במנויים שפג תוקפם

מנויים שפג תוקפם (ה-endpoint מחזיר 404 או 410) צריכים להימחק מיד — הם מצטברים במהירות ומאטים קמפיינים. אנו ממליצים להוסיף סוכן לניקוי תקופתי: לדוגמה, פעם ביום בדוק את כל המנויים ומחק את אלה שלא עודכנו ב-30 הימים האחרונים. זה מפחית את עומס מסד הנתונים ומשפר את יכולת המסירה.

תמיכת דפדפנים

דפדפן גרסה מינימלית הערות
Chrome 42 תמיכה מלאה
Firefox 44 תמיכה מלאה
Safari 16.4 דורש macOS 13+
Edge 17 תמיכה מלאה
Opera 29 תמיכה מלאה

תהליך ולוח זמנים

התהליך שלנו: איסוף נתונים → ביקורת/ניתוח → עיצוב → הערכה → פיתוח → בדיקות → השקה. אנו מתחילים בניתוח של תכנית ההתראות הנוכחית שלך ואירועי CRM. לאחר מכן אנו מיישמים מפתחות VAPID, Service Worker, טבלת מנויים, ומשתלבים עם הלוגיקה העסקית שלך. אב טיפוס עובד מוכן תוך 3–5 ימים. לוח הזמנים הסופי תלוי במספר האירועים ובמורכבות הטריגרים.

מה כלול בהתקנה במפתח מוכן

  • התקנה והגדרה של מפתחות VAPID
  • רישום Service Worker בשורש האתר
  • יצירת טבלת מנויים וסקריפט שמירה
  • אינטגרציה עם אירועים: עגלות נטושות, שינויי סטטוס הזמנה, קמפיינים המוניים
  • טיפול במנויים שפג תוקפם (סוכן ניקוי)
  • בדיקות בכל הדפדפנים הנתמכים
  • תיעוד להרחבת פונקציונליות
  • ניתוח תכנית ההתראות הנוכחית שלך והמלצות

כשותף Bitrix מוסמך עם ניסיון של מעל 5 שנים, אנו מבטיחים הגדרת התראות push אמינה. צור קשר לייעוץ — נעריך את הפרויקט שלך ונציע את הפתרון האופטימלי. הזמן הגדרת web-push במפתח מוכן וקבל אב טיפוס עובד תוך 3–5 ימים. לבדיקה מהירה של התראות push באתר שלך, פנה למהנדסים שלנו.