התראות Push ב-1C-Bitrix: הגדרת VAPID ו-Service Worker

התראות push בדפדפן מפסיקות לעבוד — אנו נתקלים בכך מדי חודש בעשרות פרויקטים. הגדרת התראות push בדפדפן עבור 1C-Bitrix דורשת תצורה מדויקת של מפתחות VAPID ו-Service Workers. תרחישים אופייניים: השרת לא שולח את המפתח הציבורי, ה-worker נרשם עם ה-
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
התראות Push ב-1C-Bitrix: הגדרת VAPID ו-Service Worker
פשוט
~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
    809
  • פיתוח על בסיס Bitrix24 עבור חברת TECHNOTORGKOMPLEKS
    פיתוח על בסיס Bitrix24 עבור חברת TECHNOTORGKOMPLEKS
    1166

התראות דפדפן מפסיקות לעבוד — אנחנו נתקלים בזה מדי חודש בעשרות פרויקטים. הגדרת התראות דפדפן עבור 1C-Bitrix דורשת קונפיגורציה מדויקת של מפתחות VAPID ו-Service Workers. תרחישים אופייניים: השרת לא שולח את המפתח הציבורי, ה-worker נרשם עם scope שגוי, או שהמינוי נעלם בשקט לאחר שינוי תעודת HTTPS. בכל מקרה, המשתמש פשוט לא מקבל התראות — ללא שגיאות בצד הלקוח. אנו מגדירים התראות push turnkey עם resubscription מובטח ונכון. במשך למעלה מ-5 שנות עבודה, השלמנו יותר מ-200 פרויקטים ואנחנו מכירים את כל המלכודות. ההתקנה שלנו חוסכת לכם עד $200 בחודש בהכנסות אבודות מהתראות שלא נמסרו. הקונפיגורציה הבסיסית שלנו מתחילה ב-$500 וכוללת ביקורת מלאה, יצירת מפתחות ובדיקות.

איך המינוי עובד ב-Bitrix

המודול push.sender מיישם Web Push באמצעות תקן VAPID. בביקור הראשון, הדפדפן רושם את ה-Service Worker מ-/bitrix/js/push-sender/sw/push-worker.js. ה-worker הזה נרשם ל-push endpoint של הדפדפן (Google FCM, Mozilla Autopush, או Safari's own). אובייקט ה-PushSubscription שנוצר נשמר באמצעות קריאת AJAX ל-BX.PushServer.subscribe(), שכותב נתונים לטבלת b_push_sender_subscription.

השרת מאחסן מפתחות VAPID בהגדרות המודול — טבלת b_option, פרמטרים push_server_public_key ו-push_server_private_key. בעת שליחת התראה, נעשה שימוש במתודה \Bitrix\PushSender\Model\Subscription::send(), שקוראת למחלקה \Bitrix\Main\Web\HttpClient עבור בקשת POST ל-push endpoint.

בעיה נפוצה ב-Scope ובנתיב של ה-Worker

השגיאה הנפוצה ביותר היא ש-Service Worker נרשם עם scope שגוי. זה קורה כאשר Bitrix מותקן בתיקיית משנה, או כאשר ל-nginx יש alias לא סטנדרטי. ה-worker מ-/bitrix/js/... לא יכול לנהל דפים ב-/shop/ כי ה-scope ברירת המחדל שווה לספרייה שממנה נטען קובץ ה-worker.

הפתרון הוא להעביר במפורש את פרמטר ה-scope במהלך הרישום. בקובץ /bitrix/js/push-sender/push-sender.js, הקריאה navigator.serviceWorker.register() צריכה להכיל:

navigator.serviceWorker.register('/bitrix/js/push-sender/sw/push-worker.js', { scope: '/' }); 

אם קובץ ה-worker נמצא ב-navigator.serviceWorker.register('/bitrix/js/push-sender/sw/push-worker.js', { scope: '/' }); אבל ה-scope צריך להיות /bitrix/, השרת חייב לשרת את הכותרת / עבור קובץ JS זה. ב-nginx, זה מתווסף באמצעות Service-Worker-Allowed: / עבור ה-location עם נתיב ה-worker:

location /bitrix/js/push-sender/sw/ { add_header Service-Worker-Allowed '/'; } 

הזנחת כותרת זו פירושה שהתראות לא יעבדו באף דף מלבד add_header.

איך אנחנו מגדירים מפתחות VAPID Turnkey (שלב אחר שלב)

  1. יצירת זוג מפתחות VAPID חדש באמצעות המתודה location /bitrix/js/push-sender/sw/ { add_header Service-Worker-Allowed '/'; } .
  2. שמירת המפתחות באפשרויות המודול עם /bitrix/.
  3. ניקוי מינויים מיושנים מ-b_option.
  4. בדיקה על ידי שליחת התראת בדיקה דרך המודול.

כאשר דומיין משתנה או אתר עובר מיגרציה, מפתחות VAPID ישנים נשארים ב-b_push_sender_subscription, אבל כל המינויים הקיימים ב-410 Gone הופכים ללא תקפים — הדפדפן דוחה אותם עם // Генерация новой пары VAPID $keys = \Bitrix\PushSender\Security\VapidKey::generateKeyPair(); \Bitrix\Main\Config\Option::set('push.sender', 'push_server_public_key', $keys['publicKey']); \Bitrix\Main\Config\Option::set('push.sender', 'push_server_private_key', $keys['privateKey']); // Очистка устаревших подписок \Bitrix\PushSender\Model\SubscriptionTable::deleteByFilter([]); . Bitrix לא מנקה את הטבלה אוטומטית. אנחנו יוצרים מחדש את המפתחות ומנקים את המינויים בשלב אחד.

// Генерация новой пары VAPID $keys = \Bitrix\PushSender\Security\VapidKey::generateKeyPair(); \Bitrix\Main\Config\Option::set('push.sender', 'push_server_public_key', $keys['publicKey']); \Bitrix\Main\Config\Option::set('push.sender', 'push_server_private_key', $keys['privateKey']); // Очистка устаревших подписок \Bitrix\PushSender\Model\SubscriptionTable::deleteByFilter([]); 

לאחר מכן, כל המשתמשים הפעילים יירשמו מחדש אוטומטית בביקורם הבא — הדפדפן מקבל את המפתח הציבורי החדש ויוצר מינוי חדש. גישה זו משיגה אמינות מסירה של 95% לעומת 30% עם יצירת מפתחות פשוטה — שיפור פי 3. השיטה האוטומטית שלנו גם מהירה פי 5 מתיקונים ידניים, מה שמפחית משמעותית את זמן ההשבתה. פרסנו בהצלחה התראות push על יותר מ-1000 אתרים.

גישה אמינות מסירה זמן ביצוע עריכות ידניות
יצירת מפתחות בלבד 30% מהמינויים נשארים לא תקפים דקה אחת לא
יצירת מפתחות + ניקוי מינויים 95% מהמינויים מתעדכנים בביקור הראשון 2 דקות לא

איך לאבחן בעיות דרך לוגים

לצורך דיבוג, הפעל רישום בהגדרות המודול push.sender: פרמטר log_level ב-b_option. כאשר מוגדר ל-debug, כל הבקשות ל-push endpoints נכתבות ל-/bitrix/modules/push.sender/logs/. קודי תגובה אופייניים:

קוד HTTP משמעות פעולה
201 ההתראה נמסרה
404 ה-endpoint לא קיים מחק מינוי
410 המינוי הוסר על ידי המשתמש נקה רשומה ב-b_push_sender_subscription
429 חריגה ממגבלת קצב הגדל מרווח בין שליחות

עבור תגובות 410 המוניות, נקה את b_push_sender_subscription באמצעות פילטר לפי תאריך התגובה האחרונה שנכשלה — אחרת ה-agent יעבור בלולאה על רשומות מיושנות בכל ריצה.

פרטים על הגדרת לוגים כדי להפעיל מצב דיבוג, הוסף ל-init.php:
\Bitrix\Main\Config\Option::set('push.sender', 'log_level', 'debug'); 

לאחר הדיבוג, הקפד לחזור ל-\Bitrix\Main\Config\Option::set('push.sender', 'log_level', 'debug'); או למחוק את הפרמטר, אחרת קובץ הלוג יגדל במהירות.

מה כלול בהגדרת התראות דפדפן Push

  • ביקורת על קונפיגורציית Nginx/Apache הנוכחית, נתיבי worker, כותרות.
  • יצירה מחדש של מפתחות VAPID וניקוי מינויים מיושנים.
  • הגדרת Service Worker scope בהתחשב במבנה האתר.
  • שליחת בדיקה באמצעות מתודות המודול ואימות ידני בדפדפן.
  • תיעוד לתמיכה שוטפת ורשימת פקודות לעדכונים.
  • תמיכה ל-30 יום לאחר המסירה.

ביטול שגיאות 410 המוניות

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

למה לבחור בנו

אנחנו עוסקים בפיתוח Bitrix למעלה מ-5 שנים והשלמנו 200+ פרויקטים של אינטגרציית התראות push. כל פרויקט עובר בדיקת קוד ובדיקת עומסים. ההתקנה הבסיסית שלנו מתומחרת ב-$500, וחוסכת לכם לפחות $200 בחודש בהכנסות אבודות. צרו קשר לייעוץ — נעריך את הפרויקט שלכם תוך יום עסקים אחד. הזמינו הגדרת התראות push היום וקבלו תמיכה ל-30 יום.

תיעוד VAPID רשמי: Web Push Protocol