Real-Time Engagement: Rails 8-ലെ Web Push Notifications

മൊബൈൽ ഫീച്ചറുകൾ നിർമ്മിക്കുമ്പോൾ സോളോ ഡെവലപ്പർമാർ പലപ്പോഴും ഒരു തടസ്സം നേരിടാറുണ്ട്. പുഷ് നോട്ടിഫിക്കേഷനുകൾ അയക്കാൻ പണ്ട് ഒരു നേറ്റീവ് ആപ്പ് ആവശ്യമായിരുന്നു. അങ്ങനെയൊരു ആപ്പ് ഇല്ലെങ്കിൽ, ഇമെയിൽ അല്ലെങ്കിൽ ചിലവേറിയ SMS എന്നിവയെയാണ് നിങ്ങൾ ആശ്രയിച്ചിരുന്നത്.

Web Push API ഇത് മാറ്റുന്നു. iOS-ലെ Safari ഉൾപ്പെടെ മിക്കവാറും എല്ലാ ബ്രൗസറുകളിലും ഇത് പ്രവർത്തിക്കുന്നു. നിങ്ങളുടെ Rails ആപ്പിൽ നിന്ന് നേരിട്ട് ഉപയോക്താവിന്റെ ഉപകരണത്തിലേക്ക് നിങ്ങൾക്ക് അലേർട്ടുകൾ അയക്കാൻ കഴിയും. അവർ App Store-ൽ നിന്ന് ഒന്നും ഡൗൺലോഡ് ചെയ്യേണ്ടതില്ല.

Rails 8-ൽ ഇത് എങ്ങനെ സജ്ജീകരിക്കാം എന്ന് താഴെ നൽകുന്നു.

The Workflow

  • സബ്‌സ്‌ക്രിപ്ഷൻ (Subscription): ഉപയോക്താവ് അവരുടെ ബ്രൗസറിൽ 'allow' എന്ന് ക്ലിക്ക് ചെയ്യുന്നു. ബ്രൗസർ ഒരു സബ്‌സ്‌ക്രിപ്ഷൻ ഒബ്‌ജക്റ്റ് നൽകുന്നു.
  • സ്റ്റോറേജ് (Storage): ഈ ഒബ്‌ജക്റ്റ് ഉപയോക്താവുമായി ബന്ധിപ്പിച്ച് നിങ്ങളുടെ ഡാറ്റാബേസിൽ നിങ്ങൾ സേവ് ചെയ്യുന്നു.
  • പുഷ് (The Push): നിങ്ങളുടെ Rails സെർവർ ബ്രൗസർ പുഷ് സർവീസിലേക്ക് ഒരു സൈൻ ചെയ്ത സന്ദേശം അയക്കുന്നു.
  • ഡെലിവറി (Delivery): ഉപകരണത്തിലെ സർവീസ് വർക്കർ നോട്ടിഫിക്കേഷൻ കാണിക്കുന്നു.

Setup Steps

  1. Security നിങ്ങളുടെ സെർവറിനെ തിരിച്ചറിയാൻ നിങ്ങൾക്ക് VAPID കീകൾ ആവശ്യമാണ്. ഇത് ഹാക്കർമാർ വ്യാജ അലേർട്ടുകൾ അയക്കുന്നത് തടയുന്നു. നിങ്ങളുടെ Gemfile-ലേക്ക് web-push gem ചേർക്കുക. നിങ്ങളുടെ ടെർമിനലിൽ web-push generate-vapid-keys എന്ന് റൺ ചെയ്യുക. ഈ കീകൾ നിങ്ങളുടെ credentials ഫയലിൽ സേവ് ചെയ്യുക.

  2. Database ഉപയോക്താക്കൾക്ക് പലപ്പോഴും ഒന്നിലധികം ഉപകരണങ്ങൾ ഉണ്ടാകാറുണ്ട്. സബ്‌സ്‌ക്രിപ്ഷനുകൾ സൂക്ഷിക്കുന്നതിനായി ഒരു മോഡൽ നിർമ്മിക്കുക. Run: rails g model WebPushSubscription user:references endpoint:string p256dh_key:string auth_key:string Run: rails db:migrate

  3. Service Worker public/service-worker.js എന്ന ഫയൽ നിർമ്മിക്കുക. നിങ്ങളുടെ വെബ്‌സൈറ്റ് അടച്ചിട്ടിരിക്കുമ്പോഴും ഈ ഫയൽ പ്രവർത്തിക്കും. ഇത് പുഷ് ഇവന്റിനായി കാത്തിരിക്കുകയും നോട്ടിഫിക്കേഷൻ കാണിക്കുകയും ചെയ്യുന്നു.

  4. Frontend നിങ്ങളുടെ application.js-ൽ വർക്കർ രജിസ്റ്റർ ചെയ്യുക. അനുമതി ചോദിക്കുന്നതിനായി ഒരു Stimulus controller ഉപയോഗിക്കുക. ഒരു POST റിക്വസ്റ്റ് വഴി സബ്‌സ്‌ക്രിപ്ഷൻ ഡാറ്റ നിങ്ങളുടെ Rails കൺട്രോളറിലേക്ക് അയക്കുക.

  5. Background Jobs മെയിൻ റിക്വസ്റ്റ് സൈക്കിളിൽ ഒരിക്കലും നോട്ടിഫിക്കേഷനുകൾ അയക്കരുത്. നിങ്ങളുടെ ആപ്പിന്റെ വേഗത കുറയുന്നത് ഒഴിവാക്കാൻ ഒരു ബാക്ക്ഗ്രൗണ്ട് ജോബ് ഉപയോഗിക്കുക. ഒരു SendWebPushJob നിർമ്മിക്കുക. ഉപയോക്താവിന്റെ സബ്‌സ്‌ക്രിപ്ഷനുകളിലൂടെ ലൂപ്പ് ചെയ്യുക. പേലോഡ് അയക്കാൻ web-push gem ഉപയോഗിക്കുക. സബ്‌സ്‌ക്രിപ്ഷനുകൾ ഇനി ഉപയോഗയോഗ്യമല്ലെങ്കിൽ അവ ഡിലീറ്റ് ചെയ്യുക.

Rails-ഉം കുറച്ച് Javascript-ഉം മാത്രം ഉപയോഗിച്ച് ഒരു നേറ്റീവ് മൊബൈൽ അനുഭവം നൽകുന്ന ആപ്പ് നിങ്ങൾക്ക് നിർമ്മിക്കാൻ കഴിയും.

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