วิธีรวม Push Notifications เข้ากับ PWA . ของคุณ

เผยแพร่แล้ว: 2021-04-28

สารบัญ

ในบทช่วยสอนของเราวันนี้ เราจะผสานรวม Push Notifications เข้ากับ PWA โดยใช้ Firebase หรือให้เฉพาะเจาะจงมากขึ้น โดยใช้ฟีเจอร์ Cloud Messaging ซึ่งเปิดใช้งานการส่งข้อความโดยใช้คำขอ HTTPS

เว็บแอปโปรเกรสซีฟและการแจ้งเตือนแบบพุช

เนื่องจาก Progressive Web App เป็นการเคลื่อนไหวที่เปลี่ยนแปลงตลอดเวลา จึงไม่น่าแปลกใจเลยที่เห็นว่าเทคโนโลยีนั้นเทียบเท่า (ในแง่ของฟังก์ชัน) กับแอปที่มาพร้อมเครื่อง

 การอ่านที่แนะนำ: PWA กับ Native: แบบไหนเหมาะกับคุณมากกว่ากัน?

ทริกเกอร์การแจ้งเตือนช่วยให้นักพัฒนาสามารถกำหนดเวลาการแจ้งเตือนได้ แม้ว่าอุปกรณ์ของผู้ใช้จะอยู่ในโหมดเครื่องบินก็ตาม

Jon Krafcik, Chrome Dev Summit 2019
ทริกเกอร์การแจ้งเตือนแบบพุช - Chrome Dev Summit 2019
ใหม่ใน Chrome 80 ทริกเกอร์การ แจ้งเตือนเปิดใช้งานการแจ้งเตือนแม้ในโหมดเครื่องบิน

ด้วยการเปลี่ยนแปลงครั้งใหญ่เหล่านี้ จะเป็นการเสียเปล่าที่จะไม่ใช้ประโยชน์จากมันเพื่อเพิ่มรายได้ให้กับการประปาส่วนภูมิภาคของคุณ และมันก็ไม่ได้ซับซ้อนเกินไป เพราะคุณสามารถตั้งค่าฟังก์ชั่น Push Notification ของคุณเองได้ง่ายๆ โดยใช้บทช่วยสอนนี้

 การอ่านที่แนะนำ: 9 ฟีเจอร์ที่ต้องมีของ Progressive Web App (PWA) สำหรับอีคอมเมิร์ซ

วิธีรวม Push Notifications เข้ากับ PWA . ของคุณ

ในบทช่วยสอนของเราวันนี้ เราจะผสานรวม Push Notifications เข้ากับ PWA โดยใช้ Firebase โดยเฉพาะฟีเจอร์ Cloud Messaging ซึ่งช่วยให้สามารถส่งข้อความโดยใช้คำขอ HTTPS

ข้อกำหนดเบื้องต้น

  • บัญชี Firebase (เนื่องจากคุณจะสร้างโครงการภายใน Firebase)
  • เว็บแอปโปรเกรสซีฟ สำหรับการสาธิตอย่างง่าย เราจะใช้ create-react-app ซึ่งเป็น PWA พื้นฐานที่สามารถสร้างได้โดยใช้คำสั่ง
การแจ้งเตือนแบบพุชของ PWA: สร้างโปรเจ็กต์ Firebase
สร้างโปรเจ็กต์ด้วย Firebase

ขั้นตอนที่ 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 
การติดตั้ง Firebase

ขั้นตอนที่ 2: สร้าง push-notification.js ของคุณ

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

ขั้นแรก ให้สร้างฟังก์ชันที่เริ่มต้น Firebase และส่งผ่านคีย์ของโปรเจ็กต์ของคุณ คุณสามารถค้นหาคีย์สำหรับโปรเจ็กต์ของคุณได้โดยไปที่ Firebase > ภาพรวมโปรเจ็กต์ → การตั้งค่าโปรเจ็กต์ และคลิกที่ไอคอนนี้:

Firebase SDK สำหรับการแจ้งเตือน PWA Push

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

Firebase SDK

ตอนนี้เรามีคีย์สำหรับโครงการแล้ว ให้เพิ่มโค้ดต่อไปนี้ลงใน 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

กำหนดค่า Authorization และ Content-Type . อย่างถูกต้อง

หมายเหตุ : 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

สำรวจ simicart PWA