ನೈಜ-ಸಮಯದ ತೊಡಗಿಸಿಕೊಳ್ಳುವಿಕೆ: Rails 8 ನಲ್ಲಿ Web Push Notifications

ಸೋಲೋ ಡೆವಲಪರ್‌ಗಳು (Solo developers) ಮೊಬೈಲ್ ಫೀಚರ್‌ಗಳನ್ನು ನಿರ್ಮಿಸುವಾಗ ಅನೇಕ ಅಡೆತಡೆಗಳನ್ನು ಎದುರಿಸುತ್ತಾರೆ. ಪುಶ್ ನೋಟಿಫಿಕೇಶನ್‌ಗಳನ್ನು ಕಳುಹಿಸಲು ಮೊದಲು ನೇಟಿವ್ ಆ್ಯಪ್ (native app) ಅಗತ್ಯವಿರುತ್ತಿತ್ತು. ಒಂದು ವೇಳೆ ನಿಮ್ಮ ಬಳಿ ಆ್ಯಪ್ ಇಲ್ಲದಿದ್ದರೆ, ನೀವು ಇಮೇಲ್ ಅಥವಾ ದುಬಾರಿ SMS ಮೇಲೆ ಅವಲಂಬಿತರಾಗಬೇಕಿತ್ತು.

Web Push API ಇದನ್ನು ಬದಲಾಯಿಸುತ್ತದೆ. ಇದು iOS ನಲ್ಲಿರುವ Safari ಸೇರಿದಂತೆ ಬಹುತೇಕ ಎಲ್ಲಾ ಬ್ರೌಸರ್‌ಗಳಲ್ಲಿ ಕೆಲಸ ಮಾಡುತ್ತದೆ. ನಿಮ್ಮ Rails ಆ್ಯಪ್‌ನಿಂದ ನೇರವಾಗಿ ಬಳಕೆದಾರರ ಸಾಧನಕ್ಕೆ ನೀವು ಅಲರ್ಟ್‌ಗಳನ್ನು ಕಳುಹಿಸಬಹುದು. ಅವರು App Store ನಿಂದ ಏನನ್ನೂ ಡೌನ್‌ಲೋಡ್ ಮಾಡುವ ಅಗತ್ಯವಿಲ್ಲ.

Rails 8 ನಲ್ಲಿ ಇದನ್ನು ಹೇಗೆ ಸೆಟಪ್ ಮಾಡುವುದು ಎಂಬುದು ಇಲ್ಲಿದೆ.

ಕಾರ್ಯವಿಧಾನ (The Workflow)

  • ಸಬ್‌ಸ್ಕ್ರಿಪ್ಶನ್ (Subscription): ಬಳಕೆದಾರರು ತಮ್ಮ ಬ್ರೌಸರ್‌ನಲ್ಲಿ 'allow' ಮೇಲೆ ಕ್ಲಿಕ್ ಮಾಡುತ್ತಾರೆ. ಬ್ರೌಸರ್ ಒಂದು ಸಬ್‌ಸ್ಕ್ರಿಪ್ಶನ್ ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು ಒದಗಿಸುತ್ತದೆ.
  • ಸ್ಟೋರೇಜ್ (Storage): ನೀವು ಈ ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು ಬಳಕೆದಾರರಿಗೆ ಸಂಬಂಧಿಸಿದಂತೆ ನಿಮ್ಮ ಡೇಟಾಬೇಸ್‌ನಲ್ಲಿ ಉಳ儲ತೀರಿ.
  • ದ ಪುಶ್ (The Push): ನಿಮ್ಮ Rails ಸರ್ವರ್ ಬ್ರೌಸರ್ ಪುಶ್ ಸರ್ವಿಸ್‌ಗೆ ಸಹಿ ಮಾಡಿದ ಸಂದೇಶವನ್ನು (signed message) ಕಳುಹಿಸುತ್ತದೆ.
  • ಡೆಲಿವರಿ (Delivery): ಸಾಧನದಲ್ಲಿರುವ ಸರ್ವಿಸ್ ವರ್ಕರ್ (service worker) ನೋಟಿಫಿಕೇಶನ್ ಅನ್ನು ತೋರಿಸುತ್ತದೆ.

ಸೆಟಪ್ ಹಂತಗಳು (Setup Steps)

1. ಸೆಕ್ಯೂರಿಟಿ (Security)

ನಿಮ್ಮ ಸರ್ವರ್ ಅನ್ನು ಗುರುತಿಸಲು ನಿಮಗೆ VAPID ಕೀಗಳು ಬೇಕು. ಇದು ಹ್ಯಾಕರ್‌ಗಳು ನಕಲಿ ಅಲರ್ಟ್‌ಗಳನ್ನು ಕಳುಹಿಸುವುದನ್ನು ತಡೆಯುತ್ತದೆ.

  • ನಿಮ್ಮ 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 ಅನ್ನು ರಚಿಸಿ. ನಿಮ್ಮ ವೆಬ್‌ಸೈಟ್ ಮುಚ್ಚಿದಾಗಲೂ ಈ ಫೈಲ್ ಚಾಲನೆಯಲ್ಲಿರುತ್ತದೆ. ಇದು ಪುಶ್ ಇವೆಂಟ್‌ಗಾಗಿ ಕಾಯುತ್ತದೆ ಮತ್ತು ನೋಟಿಫಿಕೇಶನ್ ಅನ್ನು ತೋರಿಸುತ್ತದೆ.

4. ಫ್ರಂಟ್‌ಎಂಡ್ (Frontend)

  • ನಿಮ್ಮ application.js ನಲ್ಲಿ ವರ್ಕರ್ ಅನ್ನು ರಿಜಿಸ್ಟರ್ ಮಾಡಿ.
  • ಅನುಮತಿಯನ್ನು ಕೇಳಲು Stimulus ಕಂಟ್ರೋಲರ್ ಬಳಸಿ. POST ರಿಕ್ವೆಸ್ಟ್ ಮೂಲಕ ಸಬ್‌ಸ್ಕ್ರಿಪ್ಶನ್ ಡೇಟಾವನ್ನು ನಿಮ್ಮ Rails ಕಂಟ್ರೋಲರ್‌ಗೆ ಕಳುಹಿಸಿ.

5. ಬ್ಯಾಕ್‌ಗ್ರೌಂಡ್ ಜಾಬ್ಸ್ (Background Jobs)

ಮುಖ್ಯ ರಿಕ್ವೆಸ್ಟ್ ಸೈಕಲ್‌ನಲ್ಲಿ (main request cycle) ಎಂದಿಗೂ ನೋಟಿಫಿಕೇಶನ್‌ಗಳನ್ನು ಕಳುಹಿಸಬೇಡಿ. ನಿಮ್ಮ ಆ್ಯಪ್‌ನ ವೇಗ ಕಡಿಮೆಯಾಗುವುದನ್ನು ತಪ್ಪಿಸಲು ಬ್ಯಾಕ್‌ಗ್ರೌಂಡ್ ಜಾಬ್ ಬಳಸಿ.

  • ಒಂದು SendWebPushJob ಅನ್ನು ರಚಿಸಿ.
  • ಬಳಕೆದಾರರ ಸಬ್‌ಸ್ಕ್ರಿಪ್ಶನ್‌ಗಳ ಮೂಲಕ ಲೂಪ್ ಮಾಡಿ.
  • ಪೇಲೋಡ್ (payload) ಕಳುಹಿಸಲು web-push gem ಬಳಸಿ.
  • ಸಬ್‌ಸ್ಕ್ರಿಪ್ಶನ್‌ಗಳು ಇನ್ನು ಮುಂದೆ ಮಾನ್ಯವಾಗದಿದ್ದರೆ ಅವುಗಳನ್ನು ಡಿಲೀಟ್ ಮಾಡಿ.

ಕೇವಲ Rails ಮತ್ತು ಸ್ವಲ್ಪ ಪ್ರಮಾಣದ Javascript ಬಳಸಿ ನೀವು ನೇಟಿವ್ ಮೊಬೈಲ್ ಅನುಭವವನ್ನು ನೀಡುವ ಆ್ಯಪ್ ಅನ್ನು ನಿರ್ಮಿಸಬಹುದು.

Source: https://dev.to/zilton7/real-time-engagement-web-push-notifications-in-rails-8-5gdp