ପୁସ୍ ନୋଟିଫିକେସନ୍ କନଫିଗରେସନ୍ (Firebase)
ଏହି ସେକ୍ସନ୍ ପୁସ୍ ନୋଟିଫିକେସନ୍ ପାଇଁ Firebase କିପରି କନଫିଗର୍ କରିବେ ତାହା ବର୍ଣ୍ଣନା କରେ, ଯେଉଁଥିରେ Firebase ପ୍ରୋଜେକ୍ଟ ତିଆରି, SDK ତିଆରି, VAPID କି ସେଟଅପ୍, ଏବଂ Laravel କନଫିଗରେସନ୍ ଅନ୍ତର୍ଭୁକ୍ତ।
1. Firebase ଆକାଉଣ୍ଟ ଓ ପ୍ରୋଜେକ୍ଟ ତିଆରି କରନ୍ତୁ
- Firebase Console କୁ ଯାଆନ୍ତୁ
- ଏକ Google ଆକାଉଣ୍ଟ ସହ ସାଇନ୍ ଇନ୍ କରନ୍ତୁ
- Add project କ୍ଲିକ୍ କରନ୍ତୁ
- ଏକ ପ୍ରୋଜେକ୍ଟ ନାମ ପ୍ରବେଶ କରାନ୍ତୁ (ଉଦାହରଣ ସ୍ୱରୂପ,
restaurant) - Google Analytics ସକ୍ଷମ କରନ୍ତୁ କିମ୍ବା ଛାଡ଼ି ଦିଅନ୍ତୁ
- Create project କ୍ଲିକ୍ କରନ୍ତୁ
ସମ୍ପୂର୍ଣ୍ଣ ହେବା ପରେ, ଆପଣଙ୍କ Firebase ପ୍ରୋଜେକ୍ଟ ବ୍ୟବହାର ପାଇଁ ପ୍ରସ୍ତୁତ ହେବ।
2. Web App ପଞ୍ଜୀକରଣ କରନ୍ତୁ (Firebase Config ତିଆରି କରନ୍ତୁ)
- ଆପଣଙ୍କ Firebase ପ୍ରୋଜେକ୍ଟ ଖୋଲନ୍ତୁ
- Project Settings (⚙️ ଆଇକନ୍) କୁ ଯାଆନ୍ତୁ
- Your apps ଅନ୍ତର୍ଗତ, Web (
</>) ଆଇକନ୍ କ୍ଲିକ୍ କରନ୍ତୁ - ଏକ ଆପ୍ ନିକନେମ୍ ପ୍ରବେଶ କରାନ୍ତୁ (ଉଦାହରଣ ସ୍ୱରୂପ, Restaurant Web Panel)
- Register app କ୍ଲିକ୍ କରନ୍ତୁ
Firebase apiKey, projectId, ଏବଂ messagingSenderId ପରି କନଫିଗରେସନ୍ ମୂଲ୍ୟ ପ୍ରଦାନ କରିବ। ଏହି ମୂଲ୍ୟଗୁଡ଼ିକ ଫ୍ରଣ୍ଟଏଣ୍ଡରେ ବ୍ୟବହୃତ ହୋଇ Laravel configରେ ସଂରକ୍ଷିତ ହୁଏ।
3. Firebase Admin SDK (Service Account) ତିଆରି କରନ୍ତୁ
- Firebase Console → Project Settings
- Service accounts ଟ୍ୟାବ୍ ଖୋଲନ୍ତୁ
- Generate new private key କ୍ଲିକ୍ କରନ୍ତୁ
- JSON ଫାଇଲ୍ ଡାଉନଲୋଡ୍ କରନ୍ତୁ
ଡାଉନଲୋଡ୍ ହୋଇଥିବା ଫାଇଲକୁ ଆପଣଙ୍କ Laravel ପ୍ରୋଜେକ୍ଟ ମଧ୍ୟରେ ରଖନ୍ତୁ:
storage/app/firebase/firebase-adminsdk.json
⚠️ ଏହି ଫାଇଲକୁ ସାର୍ବଜନୀନ ଭାବେ ପ୍ରକାଶ କରନ୍ତୁ ନାହିଁ କିମ୍ବା ଭର୍ସନ୍ କଣ୍ଟ୍ରୋଲରେ କମିଟ୍ କରନ୍ତୁ ନାହିଁ।
4. VAPID କି (Web Push) ତିଆରି କରନ୍ତୁ
- Firebase Console → Project Settings
- Cloud Messaging ଟ୍ୟାବ୍ ଖୋଲନ୍ତୁ
- Web Push certificates କୁ ସ୍କ୍ରୋଲ୍ କରନ୍ତୁ
- Generate key pair କ୍ଲିକ୍ କରନ୍ତୁ
- Public key କପି କରନ୍ତୁ
ଏହି ପବ୍ଲିକ୍ କି ବ୍ରାଉଜର୍ ନୋଟିଫିକେସନ୍ ପାଇଁ VAPID key ଭାବେ ବ୍ୟବହୃତ ହୁଏ।
5. Firebase Configuration File (Laravel)
ନିମ୍ନଲିଖିତ ଫାଇଲ୍ ତିଆରି କିମ୍ବା ଅପଡେଟ୍ କରନ୍ତୁ:
config/firebase.php
<?php
return [
'credentials' => storage_path('app/firebase/firebase-adminsdk.json'),
'project_id' => 'restaurant-1f6bf',
// Web Push VAPID key
'vapid_key' => 'YOUR_VAPID_KEY_HERE',
// Firebase Web App credentials
'service_credentials' => [
'apiKey' => 'YOUR_API_KEY',
'authDomain' => 'YOUR_AUTH_DOMAIN',
'projectId' => 'YOUR_PROJECT_ID',
'storageBucket' => 'YOUR_STORAGE_BUCKET',
'messagingSenderId' => 'YOUR_SENDER_ID',
'appId' => 'YOUR_APP_ID',
'measurementId' => 'YOUR_MEASUREMENT_ID',
],
];
6. ଫ୍ରଣ୍ଟଏଣ୍ଡରେ VAPID କି ବ୍ୟବହାର କରନ୍ତୁ
VAPID କି Laravel configରୁ ପ୍ରବେଶ କରାଯାଏ ଏବଂ Firebase Cloud Messaging ଟୋକନ୍ ଅନୁରୋଧ କରିବା ସମୟରେ ବ୍ୟବହୃତ ହୁଏ।
getToken(messaging, {
vapidKey: "{{ config('firebase.vapid_key') }}"
});
ସୁରକ୍ଷା ଟିପ୍ପଣୀ
- ✔ VAPID କି ସାର୍ବଜନୀନ ଏବଂ ଫ୍ରଣ୍ଟଏଣ୍ଡ ବ୍ୟବହାର ପାଇଁ ସୁରକ୍ଷିତ
- ❌ Admin SDK JSON କେବଳ ସର୍ଭର୍-ପାର୍ଶ୍ୱରେ ରହିବା ଉଚିତ
- ❌ ସର୍ଭିସ୍ ଆକାଉଣ୍ଟ କ୍ରେଡେନ୍ସିଆଲ୍ ଜାଭାସ୍କ୍ରିପ୍ଟରେ କେବେ ପ୍ରକାଶ କରନ୍ତୁ ନାହିଁ
Firebase Service Worker Configuration
ବ୍ରାଉଜର୍ ଟ୍ୟାବ୍ ବନ୍ଦ କିମ୍ବା ନିଷ୍କ୍ରିୟ ଥିବାବେଳେ ପୃଷ୍ଠଭୂମି ନୋଟିଫିକେସନ୍ ପରିଚାଳନା କରିବାକୁ Firebase ପୁସ୍ ନୋଟିଫିକେସନ୍କୁ ଏକ Service Worker ଆବଶ୍ୟକ। ଏହି କନଫିଗରେସନ୍ firebase-messaging-sw.js ଫାଇଲ୍ ମଧ୍ୟରେ କରାଯାଏ।
firebase-messaging-sw.js କଣ?
firebase-messaging-sw.js ଫାଇଲ୍ ବ୍ରାଉଜର୍ ପୃଷ୍ଠଭୂମିରେ ଚାଲେ ଏବଂ ଏଥିପାଇଁ ଦାୟୀ:
- ଆପ୍ ଖୋଲା ନଥିଲେ ପୁସ୍ ନୋଟିଫିକେସନ୍ ପାଇବା
- ସିଷ୍ଟମ୍ ନୋଟିଫିକେସନ୍ ପ୍ରଦର୍ଶନ କରିବା
- ନୋଟିଫିକେସନ୍ କ୍ଲିକ୍ ଇଭେଣ୍ଟ ପରିଚାଳନା କରିବା
ଏହି ଫାଇଲ୍ Laravel ଓ Blade ଟେମ୍ପଲେଟ୍ଠାରୁ ସ୍ୱାଧୀନ ଭାବେ ଚାଲିଥିବାରୁ, Firebase କନଫିଗରେସନ୍ ମୂଲ୍ୟ ଏହା ମଧ୍ୟରେ ସିଧାସଳଖ ଇନିସିଆଲାଇଜ୍ ହେବା ଆବଶ୍ୟକ।
Service Worker Firebase Initialization
firebase-messaging-sw.js ମଧ୍ୟରେ Firebase Web App କ୍ରେଡେନ୍ସିଆଲ୍ ଯୋଡ଼ନ୍ତୁ। ଏହି କ୍ରେଡେନ୍ସିଆଲ୍ ଫ୍ରଣ୍ଟଏଣ୍ଡ Firebase କନଫିଗରେସନରେ ବ୍ୟବହୃତ ସମାନ ମୂଲ୍ୟ।
importScripts('https://www.gstatic.com/firebasejs/12.7.0/firebase-app-compat.js');
importScripts('https://www.gstatic.com/firebasejs/12.7.0/firebase-messaging-compat.js');
firebase.initializeApp({
apiKey: "YOUR_API_KEY",
authDomain: "YOUR_AUTH_DOMAIN",
projectId: "YOUR_PROJECT_ID",
storageBucket: "YOUR_STORAGE_BUCKET",
messagingSenderId: "YOUR_MESSAGING_SENDER_ID",
appId: "YOUR_APP_ID",
measurementId: "YOUR_MEASUREMENT_ID"
});
const messaging = firebase.messaging();
messaging.onBackgroundMessage(payload => {
self.registration.showNotification(
payload.notification.title,
{
body: payload.notification.body,
icon: payload.notification.icon,
data: payload.data,
}
);
});
ଏଠାରେ କ୍ରେଡେନ୍ସିଆଲ୍ କାହିଁକି ଯୋଡ଼ାଯାଏ?
Service Worker Laravel କନଫିଗରେସନ୍ ଫାଇଲ୍ କିମ୍ବା ଏନଭାୟରନ୍ମେଣ୍ଟ ଭେରିଏବଲ୍ ପ୍ରବେଶ କରିପାରେ ନାହିଁ। ତେଣୁ, Firebase Web କ୍ରେଡେନ୍ସିଆଲ୍ ଏହି ଫାଇଲ୍ ମଧ୍ୟରେ ସିଧାସଳଖ ନିର୍ଦ୍ଧାରଣ କରାଯିବା ଆବଶ୍ୟକ କିମ୍ବା ଏକ ପବ୍ଲିକ୍ ଜାଭାସ୍କ୍ରିପ୍ଟ କନଫିଗରେସନ୍ ଫାଇଲ୍ ମାଧ୍ୟମରେ ଲୋଡ୍ ହେବା ଆବଶ୍ୟକ।
ସୁରକ୍ଷା ଟିପ୍ପଣୀ
- ✔ Firebase Web କ୍ରେଡେନ୍ସିଆଲ୍ ସାର୍ବଜନୀନ ଏବଂ ପ୍ରକାଶ ପାଇଁ ସୁରକ୍ଷିତ
- ✔ ପୃଷ୍ଠଭୂମି ପୁସ୍ ନୋଟିଫିକେସନ୍ ପାଇଁ ଆବଶ୍ୟକ
- ❌ ଏଠାରେ Firebase Admin SDK କ୍ରେଡେନ୍ସିଆଲ୍ ଅନ୍ତର୍ଭୁକ୍ତ କରନ୍ତୁ ନାହିଁ
- ❌ Service Workerରେ
firebase-adminsdk.jsonକେବେ ପ୍ରକାଶ କରନ୍ତୁ ନାହିଁ
ଫାଇଲ୍ ଅବସ୍ଥାନ
public/firebase-messaging-sw.js
ନିଶ୍ଚିତ କରନ୍ତୁ ଯେ ଏହି ଫାଇଲ୍ ସାର୍ବଜନୀନ ଭାବେ ପ୍ରବେଶଯୋଗ୍ୟ ଅଛି ଯାହା ଦ୍ୱାରା ବ୍ରାଉଜର୍ Service Worker ସଠିକ୍ ଭାବେ ପଞ୍ଜୀକରଣ କରିପାରିବ।