रिअल-टाइम एंगेजमेंट: Rails 8 मध्ये वेब पुश नोटिफिकेशन्स (Web Push Notifications)

मोबाईल फीचर्स तयार करताना सोलो डेव्हलपर्सना (Solo developers) अनेकदा अडचणी येतात. पुश नोटिफिकेशन्स पाठवण्यासाठी पूर्वी नेटिव्ह ॲपची (native app) गरज भासायची. जर तुमच्याकडे ॲप नसेल, तर तुम्हाला ईमेल किंवा महागड्या SMS वर अवलंबून राहावे लागायचे.

Web Push API मुळे हे बदलले आहे. हे iOS वरील Safari सह जवळजवळ प्रत्येक ब्राउझरवर काम करते. तुम्ही तुमच्या Rails ॲपमधून थेट वापरकर्त्याच्या डिव्हाइसवर अलर्ट पाठवू शकता. त्यांना App Store वरून काहीही डाउनलोड करण्याची गरज नाही.

Rails 8 मध्ये हे कसे सेट करायचे ते खाली दिले आहे.

वर्कफ्लो (Workflow)

  • सबस्क्रिप्शन (Subscription): वापरकर्ता त्यांच्या ब्राउझरमध्ये 'allow' वर क्लिक करतो. ब्राउझर एक सबस्क्रिप्शन ऑब्जेक्ट (subscription object) प्रदान करतो.
  • स्टोरेज (Storage): तुम्ही हा ऑब्जेक्ट वापरकर्त्याशी संबंधित तुमच्या डेटाबेसमध्ये सेव्ह करता.
  • द पुश (The Push): तुमचा Rails सर्व्हर ब्राउझर पुश सर्व्हिसला एक स्वाक्षरी केलेला (signed) मेसेज पाठवतो.
  • डिलिव्हरी (Delivery): डिव्हाइसवरील सर्विस वर्कर (service worker) नोटिफिकेशन दाखवतो.

सेटअप स्टेप्स (Setup Steps)

1. सुरक्षा (Security)

तुम्हाला तुमचा सर्व्हर ओळखण्यासाठी VAPID कीजची (keys) आवश्यकता आहे. यामुळे हॅकर्सना बनावट अलर्ट पाठवण्यापासून रोखता येते.

  • तुमच्या Gemfile मध्ये web-push gem जोडा.
  • तुमच्या टर्मिनलमध्ये web-push generate-vapid-keys रन करा.
  • या कीज तुमच्या credentials फाईलमध्ये सेव्ह करा.

2. डेटाबेस (Database)

वापरकर्त्यांकडे अनेकदा अनेक डिव्हाइसेस असतात. सबस्क्रिप्शन्स साठवण्यासाठी एक मॉडेल तयार करा.

  • रन करा: rails g model WebPushSubscription user:references endpoint:string p256dh_key:string auth_key:string
  • रन करा: rails db:migrate

3. सर्विस वर्कर (Service Worker)

public/service-worker.js तयार करा. तुमची वेबसाइट बंद असतानाही ही फाईल रन होते. ती पुश इव्हेंटसाठी (push event) लक्ष ठेवते आणि नोटिफिकेशन दाखवते.

4. फ्रंटएंड (Frontend)

  • तुमच्या application.js मध्ये वर्कर रजिस्टर करा.
  • परवानगी मागण्यासाठी Stimulus controller वापरा. सबस्क्रिप्शन डेटा POST रिक्वेस्टद्वारे तुमच्या Rails controller कडे पाठवा.

5. बॅकग्राउंड जॉब्स (Background Jobs)

मुख्य रिक्वेस्ट सायकलमध्ये (main request cycle) कधीही नोटिफिकेशन्स पाठवू नका. तुमचे ॲप स्लो होऊ नये म्हणून बॅकग्राउंड जॉबचा (background job) वापर करा.

  • SendWebPushJob तयार करा.
  • वापरकर्त्याच्या सबस्क्रिप्शन्समधून लूप (loop) फिरवा.
  • पेलोड (payload) पाठवण्यासाठी web-push gem वापरा.
  • जर सबस्क्रिप्शन्स आता वैध नसेल, तर ती डिलीट करा.

तुम्ही फक्त Rails आणि थोड्या प्रमाणात Javascript वापरून नेटिव्ह मोबाईल अनुभवासारखे वाटणारे ॲप तयार करू शकता.

स्रोत: https://dev.to/zilton7/real-time-engagement-web-push-notifications-in-rails-8-5gdp