நிகழ்நேர ஈடுபாடு: Rails 8-இல் Web Push Notifications

தனித்துச் செயல்படும் டெவலப்பர்கள் (Solo developers) மொபைல் அம்சங்களை உருவாக்கும்போது பெரும்பாலும் ஒரு தடையைச் சந்திக்க நேரிடும். புஷ் நோட்டிஃபிகேஷன்களை (push notifications) அனுப்ப முன்னதாக ஒரு நேட்டிவ் ஆப் (native app) தேவைப்பட்டது. உங்களிடம் அது இல்லையென்றால், நீங்கள் மின்னஞ்சல் அல்லது விலையுயர்ந்த SMS-ஐ மட்டுமே நம்பியிருக்க வேண்டியிருந்தது.

Web Push API இதை மாற்றுகிறது. இது iOS-இல் உள்ள Safari உட்பட கிட்டத்தட்ட அனைத்து பிரவுசர்களிலும் வேலை செய்கிறது. உங்கள் Rails ஆப்பிலிருந்து பயனரின் சாதனத்திற்கு நேரடியாக எச்சரிக்கைகளை (alerts) நீங்கள் அனுப்ப முடியும். அவர்கள் App Store-லிருந்து எதையும் பதிவிறக்கம் செய்ய வேண்டிய அவசியமில்லை.

Rails 8-இல் இதை எவ்வாறு அமைப்பது என்பது இதோ.

பணிப்பாய்வு (The Workflow)

  • சந்தா (Subscription): பயனர் தனது பிரவுசரில் 'allow' என்பதைக் கிளிக் செய்கிறார். பிரவுசர் ஒரு subscription object-ஐ வழங்குகிறது.
  • சேமிப்பு (Storage): இந்த object-ஐ பயனருடன் இணைத்து உங்கள் தரவுத்தளத்தில் (database) சேமிக்கிறீர்கள்.
  • புஷ் (The Push): உங்கள் Rails சர்வர் பிரவுசர் புஷ் சேவைக்கு (browser push service) ஒரு கையொப்பமிடப்பட்ட செய்தியை (signed message) அனுப்புகிறது.
  • விநியோகம் (Delivery): சாதனத்தில் உள்ள service worker நோட்டிஃபிகேஷனைக் காட்டுகிறது.

அமைப்பதற்கான படிகள் (Setup Steps)

1. பாதுகாப்பு (Security)

உங்கள் சர்வரை அடையாளம் காண உங்களுக்கு VAPID keys தேவை. இது ஹேக்கர்கள் போலியான எச்சரிக்கைகளை அனுப்புவதைத் தடுக்கிறது.

  • உங்கள் Gemfile-இல் web-push gem-ஐச் சேர்க்கவும்.
  • உங்கள் டெர்மினலில் web-push generate-vapid-keys என்பதை இயக்கவும்.
  • இந்த கீய்களை (keys) உங்கள் credentials கோப்பில் சேமிக்கவும்.

2. தரவுத்தளம் (Database)

பயனர்கள் பெரும்பாலும் பல சாதனங்களைக் கொண்டிருப்பார்கள். சந்தாக்களைச் சேமிக்க ஒரு model-ஐ உருவாக்கவும்.

  • இயக்கவும்: 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-இல் worker-ஐப் பதிவு செய்யவும்.
  • அனுமதியைக் கேட்க ஒரு Stimulus controller-ஐப் பயன்படுத்தவும். subscription தரவை ஒரு POST request மூலம் உங்கள் Rails controller-க்கு அனுப்பவும்.

5. பின்னணி வேலைகள் (Background Jobs)

முக்கிய கோரிக்கை சுழற்சியில் (main request cycle) நோட்டிஃபிகேஷன்களை ஒருபோதும் அனுப்ப வேண்டாம். உங்கள் ஆப் மெதுவாக மாறுவதைத் தவிர்க்க ஒரு background job-ஐப் பயன்படுத்தவும்.

  • ஒரு SendWebPushJob-ஐ உருவாக்கவும்.
  • பயனரின் சந்தாக்கள் (subscriptions) வழியாக லூப் (loop) செய்யவும்.
  • payload-ஐ அனுப்ப web-push gem-ஐப் பயன்படுத்தவும்.
  • சந்தாக்கள் இனி செல்லுபடியாகவில்லை என்றால் அவற்றை நீக்கவும்.

Rails மற்றும் சிறிதளவு Javascript ஆகியவற்றைப் பயன்படுத்தி மட்டுமே ஒரு நேட்டிவ் மொபைல் அனுபவத்தைத் தரும் ஆப்பை உங்களால் உருவாக்க முடியும்.

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