วิธีรวม Push Notifications เข้ากับ PWA . ของคุณ
เผยแพร่แล้ว: 2021-04-28สารบัญ
ในบทช่วยสอนของเราวันนี้ เราจะผสานรวม Push Notifications เข้ากับ PWA โดยใช้ Firebase หรือให้เฉพาะเจาะจงมากขึ้น โดยใช้ฟีเจอร์ Cloud Messaging ซึ่งเปิดใช้งานการส่งข้อความโดยใช้คำขอ HTTPS
เว็บแอปโปรเกรสซีฟและการแจ้งเตือนแบบพุช
เนื่องจาก Progressive Web App เป็นการเคลื่อนไหวที่เปลี่ยนแปลงตลอดเวลา จึงไม่น่าแปลกใจเลยที่เห็นว่าเทคโนโลยีนั้นเทียบเท่า (ในแง่ของฟังก์ชัน) กับแอปที่มาพร้อมเครื่อง
การอ่านที่แนะนำ: PWA กับ Native: แบบไหนเหมาะกับคุณมากกว่ากัน?
ทริกเกอร์การแจ้งเตือนช่วยให้นักพัฒนาสามารถกำหนดเวลาการแจ้งเตือนได้ แม้ว่าอุปกรณ์ของผู้ใช้จะอยู่ในโหมดเครื่องบินก็ตาม
Jon Krafcik, Chrome Dev Summit 2019

ด้วยการเปลี่ยนแปลงครั้งใหญ่เหล่านี้ จะเป็นการเสียเปล่าที่จะไม่ใช้ประโยชน์จากมันเพื่อเพิ่มรายได้ให้กับการประปาส่วนภูมิภาคของคุณ และมันก็ไม่ได้ซับซ้อนเกินไป เพราะคุณสามารถตั้งค่าฟังก์ชั่น Push Notification ของคุณเองได้ง่ายๆ โดยใช้บทช่วยสอนนี้
การอ่านที่แนะนำ: 9 ฟีเจอร์ที่ต้องมีของ Progressive Web App (PWA) สำหรับอีคอมเมิร์ซ
วิธีรวม Push Notifications เข้ากับ PWA . ของคุณ
ในบทช่วยสอนของเราวันนี้ เราจะผสานรวม Push Notifications เข้ากับ PWA โดยใช้ Firebase โดยเฉพาะฟีเจอร์ Cloud Messaging ซึ่งช่วยให้สามารถส่งข้อความโดยใช้คำขอ HTTPS
ข้อกำหนดเบื้องต้น
- บัญชี Firebase (เนื่องจากคุณจะสร้างโครงการภายใน Firebase)
- เว็บแอปโปรเกรสซีฟ สำหรับการสาธิตอย่างง่าย เราจะใช้ create-react-app ซึ่งเป็น PWA พื้นฐานที่สามารถสร้างได้โดยใช้คำสั่ง

ขั้นตอนที่ 1 : สร้าง PWA . พื้นฐาน
เนื่องจากเราจะสร้าง PWA พื้นฐานโดยใช้ create-react-app ให้ดาวน์โหลด NodeJS ก่อน หลังจากคุณติดตั้ง NodeJS เสร็จแล้ว ให้เปิด NodeJS Command Prompt และเรียกใช้คำสั่งต่อไปนี้
ในการสร้างแอป React อย่างง่ายในไดเร็กทอรีที่คุณระบุ:
npx create-react-app your-pwa-directory
เปลี่ยนไดเร็กทอรีการทำงานปัจจุบันเป็นแอป React ที่สร้างขึ้นใหม่:
cd your-pwa-directory
เพิ่มไลบรารี Firebase JavaScript ในโครงการ:
npm ติดตั้ง firebase --save

ขั้นตอนที่ 2: สร้าง push-notification.js
ของคุณ
ขั้นตอนต่อไปคือการสร้างโมดูลที่จะรับผิดชอบการประมวลผลการแจ้งเตือนทั้งหมดของคุณ ใน <your-pwa-directory>\src
ให้สร้างไฟล์ชื่อ push-notification.js
ขั้นแรก ให้สร้างฟังก์ชันที่เริ่มต้น Firebase และส่งผ่านคีย์ของโปรเจ็กต์ของคุณ คุณสามารถค้นหาคีย์สำหรับโปรเจ็กต์ของคุณได้โดยไปที่ Firebase > ภาพรวมโปรเจ็กต์ → การตั้งค่าโปรเจ็กต์ และคลิกที่ไอคอนนี้:

ซึ่งจะนำคุณไปยังหน้าอื่นที่มี Firebase SDK สำหรับ PWA ของคุณ:

ตอนนี้เรามีคีย์สำหรับโครงการแล้ว ให้เพิ่มโค้ดต่อไปนี้ลงใน push-notification.js
ของคุณ
นำเข้า firebase จาก 'firebase'; ส่งออก const initializeFirebase = () => { firebase.initializeApp({ apiKey: "XXXXXXXXXXXXX", authDomain: "XXXXXXXXXXXXX", databaseURL: "XXXXXXXXXXXXX", รหัสโครงการ: "XXXXXXXXXXXXX", storageBucket: "XXXXXXXXXXXXX", ข้อความSenderId: "XXXXXXXXXXXXX", รหัสแอป: "XXXXXXXXXXXXX" }); }
ด้วยสิ่งนี้ คุณได้สร้างฟังก์ชันที่รับผิดชอบการประมวลผลการแจ้งเตือนทั้งหมดของคุณ ตอนนี้คุณจะต้องนำเข้าและเรียกมัน แก้ไข index.js
ของคุณดังนี้:
นำเข้า React จาก 'react'; นำเข้า ReactDOM จาก 'react-dom'; นำเข้า './index.css'; นำเข้าแอพจาก './App'; นำเข้า * เป็น serviceWorkerRegistration จาก './serviceWorkerRegistration'; นำเข้า reportWebVitals จาก './reportWebVitals'; นำเข้า firebase จาก 'firebase'; นำเข้า { initializeFirebase } จาก './push-notification'; ReactDOM.render(<แอพ />, document.getElementById('root')); initializeFirebase();
ขั้นตอนที่ 3: สร้างพนักงานบริการ
Service Workers เป็นชื่อของเทคโนโลยีที่อยู่เบื้องหลัง Progressive Web App ซึ่งขับเคลื่อนความสามารถออฟไลน์ การแจ้งเตือนแบบพุช และการแคชทรัพยากร
SimiCart สิ่งที่คุณต้องรู้เกี่ยวกับ Progressive Web Apps
จำเป็นต้องมีพนักงานบริการเพื่อรับเหตุการณ์ onMessage
และทำให้สามารถส่งการแจ้งเตือนไปยังอุปกรณ์ของผู้ใช้ได้ โดยค่าเริ่มต้น Firebase จะค้นหาไฟล์ชื่อ firebase-messaging-sw.js
โดยอัตโนมัติ

มาเพิ่ม firebase-messaging-sw.js
ให้กับไดเร็กทอรีที่ใช้ไฟล์ของคุณกัน เนื่องจากโครงการของเราเป็นโครงการ create-react-app
firebase-messaging-sw.js
นี้จะอยู่ในโฟลเดอร์สาธารณะของเรา:
importScripts('https://www.gstatic.com/firebasejs/8.4.1/firebase-app.js'); importScripts('https://www.gstatic.com/firebasejs/8.4.1/firebase-messaging.js'); firebase.initializeApp({ apiKey: "XXXXXXXXXXXXX", authDomain: "XXXXXXXXXXXXX", databaseURL: "XXXXXXXXXXXXX", รหัสโครงการ: "XXXXXXXXXXXXX", storageBucket: "XXXXXXXXXXXXX", ข้อความSenderId: "XXXXXXXXXXXXX", รหัสแอป: "XXXXXXXXXXXXX" }); ข้อความ const = firebase.messaging();
หากคุณยังไม่เคยได้ยินเกี่ยวกับ PWA Service Worker เรามีบทความพิเศษให้คุณเรียนรู้เกี่ยวกับเทคโนโลยีที่น่าทึ่งนี้
ขั้นตอนที่ 4: ขอสิทธิ์ผู้ใช้ในการส่งการแจ้งเตือน
เข้าสู่ยุคแห่งความเป็นส่วนตัวแล้ว และคุณไม่ต้องการที่จะรบกวนผู้ใช้ของคุณด้วยการส่งการแจ้งเตือนที่ไม่ต้องการและไม่ได้รับอนุญาต!
หากต้องการขออนุญาตผู้ใช้ของคุณ เพียงเพิ่มสิ่งนี้ใน push-notification.js
ของคุณ:
นำเข้า firebase จาก 'firebase'; ส่งออก const initializeFirebase = () => { firebase.initializeApp({ apiKey: "XXXXXXXXXXXXX", authDomain: "XXXXXXXXXXXXX", databaseURL: "XXXXXXXXXXXXX", รหัสโครงการ: "XXXXXXXXXXXXX", storageBucket: "XXXXXXXXXXXXX", ข้อความSenderId: "XXXXXXXXXXXXX", รหัสแอป: "XXXXXXXXXXXXX" }); } ส่งออก const askForPermissionToReceiveNotifications = async () => { ลอง { ข้อความ const = firebase.messaging(); กำลังรอการส่งข้อความ.requestPermission(); โทเค็น const = รอการส่งข้อความ.getToken(); console.log('โทเค็นของคุณคือ:', โทเค็น); โทเค็นคืน; } จับ (ผิดพลาด) { console.error(ข้อผิดพลาด); } }
และเนื่องจากจะต้องเรียกใช้ฟังก์ชันนี้จากที่ใดที่หนึ่ง ดังนั้นเราจะเพิ่มฟังก์ชันนี้ด้วยการคลิกปุ่มเพียงปุ่มเดียว แก้ไขไฟล์ app.js
ในไดเร็กทอรี /src/ ของคุณดังนี้:
นำเข้าโลโก้จาก './logo.svg'; นำเข้า './App.css'; นำเข้า { askForPermissionToReceiveNotifications } จาก './push-notification'; แอปฟังก์ชัน () { กลับ ( <div className="App"> <header className="App-header"> <img src={logo} className="App-logo" alt="logo" /> <p> แก้ไข <code>src/App.js</code> และบันทึกเพื่อโหลดซ้ำ </p> <a className="ลิงก์แอป" href="https://reactjs.org" เป้าหมาย="_ว่าง" rel="noopener noreferrer" > เรียนรู้ปฏิกิริยา </a> <button onClick={askForPermissionToReceiveNotifications} > คลิกเพื่อรับการแจ้งเตือน </button> </header> </div> ); } ส่งออกแอปเริ่มต้น;
มาเริ่มโปรเจ็กต์ของเรากันเลย คุณจะเห็น ปุ่มคลิกเพื่อรับการแจ้งเตือน ดังนี้:

คลิกที่ปุ่มและคุณจะเห็นป๊อปอัปขออนุญาต:

คลิกที่ อนุญาต และตรวจสอบคอนโซลของเบราว์เซอร์ของคุณ คุณควรเห็นข้อความแจ้งถึงโทเค็นของคุณ:

ตอนนี้ ให้บันทึก โทเค็นนี้ไว้ที่อื่นเพราะคุณจะต้องใช้ในขั้นตอนถัดไป
ขั้นตอน ที่ 5: ส่งการแจ้งเตือนแบบพุชด้วยบุรุษไปรษณีย์
ในขั้นตอนต่อไป เราจะใช้บุรุษไปรษณีย์เพื่อส่งการแจ้งเตือนโดยใช้บริการ Cloud Messaging ของ Firebase
ในบุรุษไปรษณีย์ สร้างคำขอ POST ด้วยข้อมูลต่อไปนี้:
- URL คำขอ : https://fcm.googleapis.com/fcm/send
- ส่วนหัว : ในส่วนหัวของคำขอ POST คุณจะต้องมีคีย์ต่อไปนี้:
การอนุญาต: คีย์ = SERVER_KEY
ประเภทเนื้อหา : application/json

หมายเหตุ : SERVER_KEY
สามารถพบได้ในแท็บ Cloud Messaging ในการตั้งค่า Firebase ของคุณ
- เนื้อหา : กรอกเนื้อหาของคำขอ POST ของคุณด้วยรหัสต่อไปนี้:
{ "การแจ้งเตือน": { "หัวเรื่อง": "SimiCart", "body": "ทดสอบการแจ้งเตือนแบบพุช", "click_action": "http://localhost:3000/", "ไอคอน": "https://i.imgur.com/5zO5cce.png" } "ถึง": "USER_TOKEN" }
แทนที่ USER_TOKEN
ด้วยโทเค็นที่คุณได้รับ (โดยคลิกที่ ปุ่ม Click เพื่อรับการแจ้งเตือน ) ในขั้นตอนที่ 4 อย่าลืมเลือก Body type เป็น raw และ JSON

ตอนนี้คลิกที่ ส่ง และคุณจะเห็นการแจ้งเตือนปรากฏขึ้นที่มุมล่างขวาของคุณ:

หมายเหตุ : การแจ้งเตือนเหล่านี้จะปรากฏเฉพาะเมื่อแอปอยู่ในพื้นหลังหรือย่อให้เล็กสุด
ยินดีด้วย! กปภ. ของคุณสามารถส่งการแจ้งเตือนได้แล้ว!
บทสรุป
เราหวังว่าหลังจากคู่มือนี้ คุณสามารถตั้งค่าฟังก์ชันการแจ้งเตือนแบบพุชของคุณเองได้อย่างมั่นใจ เนื่องจากเป็นเทคโนโลยีใหม่ Progressive Web Apps จึงเป็นสิ่งที่ซับซ้อนสำหรับผู้ใช้ที่ไม่ค่อยเข้าใจเทคโนโลยี ซึ่งเป็นเหตุผลว่าทำไมจึงมีผู้ให้บริการโซลูชันที่พร้อมใช้งาน เช่น SimiCart ที่สามารถดูแลทุกความต้องการของคุณด้วยประสบการณ์หลายปีใน PWA