Progressive Web App ทำได้มากกว่าแค่การแสดงผลเนื้อหาบนหน้าจอหรือการเชื่อมต่อกับบริการเว็บ PWA สามารถจัดการกับไฟล์จากระบบไฟล์ โต้ตอบกับคลิปบอร์ดของระบบ เข้าถึงฮาร์ดแวร์ที่เชื่อมต่อกับอุปกรณ์ และอื่นๆ อีกมากมาย Web API ทุกรายการจะพร้อมใช้งานสำหรับ PWA ของคุณ และมี API เพิ่มเติมบางส่วนให้ใช้งานเมื่อติดตั้งแอป
คุณสามารถใช้สิ่งที่เว็บทำได้ในปัจจุบันเพื่อดูสิ่งที่เป็นไปได้ในแต่ละแพลตฟอร์ม สำหรับ API หรือความสามารถแต่ละรายการ คุณสามารถใช้ Can I Use หรือตารางความเข้ากันได้ของเบราว์เซอร์ใน MDN
ตรวจสอบการสนับสนุนฟีเจอร์เสมอ
ตัวอักษรแรกใน PWA ย่อมาจาก Progressive และมาจากแนวคิดของการเพิ่มประสิทธิภาพแบบต่อเนื่องและการตรวจหาฟีเจอร์ คุณไม่ควรคาดหวังว่าแอปของคุณจะทำงานเหมือนกันในอุปกรณ์ทุกเครื่อง ความหลากหลายของบริบทและความสามารถในอุปกรณ์หลายพันล้านเครื่องในประเทศต่างๆ ทำให้ PWA เป็นแพลตฟอร์มที่ยอดเยี่ยมด้วยความก้าวหน้า
ซึ่งหมายความว่าคุณต้องพัฒนาแอปในเลเยอร์ต่างๆ ที่อาจไม่พร้อมใช้งานในอุปกรณ์บางเครื่อง และเพื่อตรวจสอบความพร้อมใช้งานก่อนใช้งาน
คุณต้องตรวจสอบกับ JavaScript ว่ามี API อยู่หรือไม่ก่อนที่จะใช้ หรือถาม API ว่าบริการพร้อมใช้งานในอุปกรณ์นั้นหรือไม่
เว็บที่มีประสิทธิภาพ
เว็บมีประสิทธิภาพอย่างยิ่งในปัจจุบัน เช่น
- คุณสามารถสร้างแอปวิดีโอแชทแบบ Hyperlocal ที่มี WebRTC, ตำแหน่งทางภูมิศาสตร์ และข้อความพุช
- คุณทำให้ติดตั้งแอปได้
- คุณเพิ่มเอฟเฟกต์วิดีโอได้ด้วย WebAssembly
- และยังทำเป็น Virtual Reality ได้ด้วย WebGL และ WebXR
การส่งเสริม PWA
เรามาแบ่ง API ความสามารถของ PWA ออกเป็น 4 กลุ่มดังนี้
- เขียว: API พร้อมใช้งานในทุกเบราว์เซอร์ ทุกแพลตฟอร์ม เมื่อเป็นไปได้ในทางเทคนิค ผลิตภัณฑ์ส่วนใหญ่จัดส่งมาหลายปีแล้ว จึงถือเป็นผลิตภัณฑ์สำหรับผู้ใหญ่ และคุณใช้งานได้อย่างมั่นใจ ตัวอย่าง API จากกลุ่มนี้คือ API ตำแหน่งทางภูมิศาสตร์
- สีเขียวอ่อน: API ใช้ได้เฉพาะในบางเบราว์เซอร์ เมื่อพิจารณาถึงการขาดการสนับสนุนในบางแพลตฟอร์ม แพลตฟอร์มเหล่านั้นก็พัฒนาอยู่ในกลุ่มย่อยของเบราว์เซอร์ที่รองรับเพื่อให้คุณใช้ความสามารถได้อย่างมั่นใจ ตัวอย่าง API จากกลุ่มนี้คือ WebUSB
- เหลือง: API ทดลอง API เหล่านี้ยังไม่สมบูรณ์ จึงใช้งานได้ในบางเบราว์เซอร์เท่านั้น และผ่านการทดสอบหรือช่วงทดลองใช้ เราได้พูดถึงความสามารถเหล่านี้ในบททดลอง
- สีแดง: กลุ่มสำหรับ API ที่คุณใช้ใน PWA ไม่ได้และแผนที่จะเพิ่ม API ยังอยู่ในระยะยาว ตัวอย่าง API จากกลุ่มนี้คือการกำหนดเขตพื้นที่เสมือน
ความสามารถที่เป็นมิตรกับสิ่งแวดล้อม
ด้านล่างนี้คือรายการความสามารถที่สำคัญที่สุดที่คุณใช้ใน PWA ได้
พื้นฐาน
- การแคชไฟล์ในเครื่องโดยใช้ Cache API ตามที่เห็นในบทการแคช
- การดำเนินการต่างๆ ในชุดข้อความโดยใช้ Web Worker ดังที่เห็นในส่วนการจัดการความซับซ้อน
- การจัดการคำขอของเครือข่ายด้วยกลยุทธ์ต่างๆ ใน Service Worker ดังที่เห็นในบทในส่วน Service Worker
- 2D Canvas สำหรับการแสดงกราฟิก 2 มิติบนหน้าจอโดยใช้ Canvas API
- ผ้าใบประสิทธิภาพสูง 2 มิติและ 3 มิติ หรือ WebGL สำหรับการแสดงกราฟิก 3 มิติ
- WebAssembly หรือ WASM สำหรับเรียกใช้โค้ดที่คอมไพล์ระดับต่ำเพื่อประสิทธิภาพ
- การสื่อสารแบบเรียลไทม์โดยใช้ WebRTC API
- Web Performance API สำหรับวัดผลและช่วยมอบประสบการณ์การใช้งานที่ดียิ่งขึ้น ดูข้อมูลเพิ่มเติมได้ในคู่มือ Performance API
- จัดเก็บข้อมูลไว้ในเครื่องด้วย IndexedDB และการจัดการพื้นที่เก็บข้อมูลเพื่อค้นหาโควต้าและส่งคำขอพื้นที่เก็บข้อมูลถาวรตามที่เห็นในบทข้อมูลออฟไลน์
- เสียงระดับต่ำด้วย Web Audio API
- การตรวจหาที่ทำงานอยู่เบื้องหน้าโดยใช้ API ระดับการเข้าถึงหน้าเว็บ
- การสื่อสารของเครือข่ายโดยใช้ Fetch API และ WebSocket API
ฮาร์ดแวร์และเซ็นเซอร์
- ตำแหน่งทางภูมิศาสตร์จะค้นหาตำแหน่งของผู้ใช้ผ่านผู้ให้บริการต่างๆ เช่น ดาวเทียมหรือ Wi-Fi ผ่าน Geolocation API
- กล้องและไมโครโฟนจะรับสตรีมสื่อจากกล้องและไมโครโฟนโดยใช้อินเทอร์เฟซอุปกรณ์สื่อ
- เซ็นเซอร์จะรวบรวมข้อมูลแบบเรียลไทม์จากตัวตรวจวัดความเร่ง เครื่องวัดการหมุน เครื่องวัดค่าความเข้มข้นของสนามแม่เหล็ก และอื่นๆ โดยใช้ Sensors API หรืออินเทอร์เฟซรุ่นเก่า เช่น DeviceMotionEvent และ DeviceOrientationEvent ใน Safari คุณต้องใช้คำขอกล่องโต้ตอบสิทธิ์ที่ไม่เป็นไปตามมาตรฐานในการใช้งาน
- การแตะและตัวชี้เข้าถึงข้อมูลเกี่ยวกับการแตะและการคลิกตามตัวชี้ทั้งหมดที่คุณทำด้วยนิ้ว เมาส์ แทร็กแพด หรือปากกา โดยใช้เหตุการณ์ของ Pointer และเหตุการณ์การแตะ
- เกมแพด เพื่ออ่านข้อมูลที่มาจากเกมแพดและจอยสติ๊กมาตรฐานที่เชื่อมต่อกับอุปกรณ์โดยใช้ Gamepad API
- การตรวจสอบสิทธิ์ด้วยข้อมูลไบโอเมตริก (เช่น การจดจำใบหน้าหรือลายนิ้วมือ) โดยใช้ Web Authentication หรือ WebAuthn
การผสานรวมระบบปฏิบัติการ
- การสังเคราะห์เสียงและการจดจำเสียงจะใช้เสียงที่ติดตั้งไว้ของแพลตฟอร์มเพื่อสื่อสารกับผู้ใช้และจดจำสิ่งที่ผู้ใช้กำลังพูดโดยใช้ Web Speech API
- แชร์เนื้อหาจาก PWA ไปยังแอปและที่อื่นๆ ในอุปกรณ์ได้โดยใช้ Web Share API ดังที่เราจะเห็นในบทการผสานรวมระบบปฏิบัติการ
- เข้าถึงคลิปบอร์ดเพื่อบันทึกและดึงเนื้อหาจากคลิปบอร์ดในรูปแบบต่างๆ โดยใช้ API คลิปบอร์ด ตามที่เราได้แสดงในบทการผสานรวมระบบปฏิบัติการ
- จัดการข้อมูลเข้าสู่ระบบและรหัสผ่านของผู้ใช้โดยใช้ Credential Management API
- เปิดใช้วิดีโอการแสดงภาพซ้อนภาพที่เล่นภายในระบบปฏิบัติการโดยใช้ API การแสดงภาพซ้อนภาพ
- แสดงเนื้อหาแบบเต็มหน้าจอด้วย API เต็มหน้าจอตามที่ฉันแสดงในบทของ Windows
ความสามารถที่มีสีเขียวอ่อน
ด้านล่างนี้คือรายการความสามารถที่สำคัญที่สุดที่คุณใช้ใน PWA ได้ โปรดทราบว่าความสามารถเหล่านี้อาจไม่พร้อมใช้งานในบางเบราว์เซอร์
ข้อมูลพื้นฐาน
- WebGL 2.0 ซึ่งเป็นข้อกำหนดของ WebGL เวอร์ชันใหม่เพื่อจับคู่กับ OpenGL 3.0
- ตัวแปลงรหัส การเข้าถึงเฟรมต่างๆ ของสตรีมวิดีโอและเสียงท่อนในระดับต่ำ เหมาะสำหรับเว็บแอปพลิเคชันที่ต้องมีการควบคุมกระบวนการประมวลผลสื่อผ่าน Web Codecs API อย่างเต็มรูปแบบ
ฮาร์ดแวร์และเซ็นเซอร์
- การควบคุมกล้องขั้นสูงเพื่อเข้าถึงการควบคุมการเลื่อน เอียง และซูม นอกเหนือจาก Media API
- บลูทูธ LE เพื่อสื่อสารกับอุปกรณ์บลูทูธพลังงานต่ำที่อยู่ใกล้ผู้ใช้โดยใช้ Web Bluetooth API ดูข้อมูลเพิ่มเติมได้ที่การสื่อสารกับอุปกรณ์บลูทูธผ่าน JavaScript
- Near Field Communication เพื่อแลกเปลี่ยนข้อมูลผ่าน NFC ผ่านข้อความรูปแบบการแลกเปลี่ยนข้อมูล NFC (NDEF) น้ำหนักเบา เช่น แท็ก NFC หรือการ์ด NFC ที่ใช้ WebNFC API นอกจากนี้ คุณยังสามารถอ่านโต้ตอบกับอุปกรณ์ NFC บน Chrome สำหรับ Android สำหรับรายละเอียดเพิ่มเติม
อุปกรณ์ต่อพ่วงแบบอนุกรมสำหรับการเข้าถึงระดับต่ำไปยังอุปกรณ์ที่เชื่อมต่อกับอุปกรณ์โดยใช้พอร์ตอนุกรม, USB หรือซีเรียลผ่านบลูทูธโดยใช้ WPI แบบ Web Serial ดูวิธีอ่านและเขียนไปยังพอร์ตอนุกรมได้ในลิงก์ต่อไปนี้
สิทธิ์เข้าถึงอุปกรณ์ USB เพื่อสื่อสารกับอุปกรณ์ที่เชื่อมต่อผ่าน USB WebUSB API ดูข้อมูลเพิ่มเติมได้ที่สิทธิ์เข้าถึงอุปกรณ์ USB บนเว็บ
อุปกรณ์ที่โต้ตอบกับมนุษย์โดยตรงช่วยให้ PWA โต้ตอบกับอุปกรณ์ทุกประเภทที่เตรียมไว้สำหรับการโต้ตอบของมนุษย์ซึ่งผิดปกติได้โดยใช้ WebHID API ดูคู่มือเกี่ยวกับการเชื่อมต่ออุปกรณ์ HID ที่ผิดปกติ
- แสงแวดล้อมจะอ่านระดับแสงหรือความสว่างของแสงแวดล้อมรอบๆ อุปกรณ์ นอกเหนือจาก Sensors API
- การสั่นจะใช้ Vibration API ซึ่งเป็นการตอบสนองแบบรู้สึกได้เมื่อผู้ใช้มีบางอย่างเกิดขึ้น หากอุปกรณ์รองรับ
- สื่อการบันทึกจะบันทึกข้อมูลที่สร้างโดยออบเจ็กต์ MediaStream หรือ HTMLMediaElement (เช่น แท็ก
<video>
) สำหรับการวิเคราะห์ ประมวลผล หรือบันทึกในดิสก์โดยใช้ Mediarecorder API - การใช้ Wake Lock กับหน้าจอจะป้องกันไม่ให้อุปกรณ์หรี่แสงหรือล็อกหน้าจอเมื่อ PWA ต้องทำงานต่อไปโดยใช้ Screen Wake Lock API
- Virtual Reality ให้คุณใช้ชุดหูฟังและอุปกรณ์อื่นๆ ใน PWA ได้ด้วย WebXR Device API
- Augmented Reality สามารถทำได้ใน PWA ได้หลายวิธี เช่น การใช้ WebXR Device API หรือแอป Safari Quick Look สำหรับเนื้อหา AR
- ตรวจหาผู้ใช้ที่ไม่ได้ใช้งานด้วย Idle Detection API
- การล็อกการวางแนวจะล็อกการวางแนวเป็นแนวตั้งหรือแนวนอนขณะที่ PWA อยู่บนหน้าจอ โดยใช้ Screen Orientation API หรือพร็อพเพอร์ตี้
orientation
ของไฟล์ Manifest ของเว็บแอปสำหรับแอปที่ติดตั้งไว้ - นำเสนอเนื้อหาในโปรเจ็กเตอร์และจอแสดงผลรองได้โดยใช้ presentation API
- ล็อกตัวชี้เพื่อรับข้อมูลการเคลื่อนที่แบบเดลต้าจากตัวชี้ (เมาส์ แทร็กแพด และตัวชี้) แทนค่าตำแหน่ง ซึ่งเป็นประโยชน์สำหรับบางเกม เพราะ Pointer Lock API
การผสานรวมระบบปฏิบัติการ
- อ่านและเขียนไฟล์ในอุปกรณ์ด้วย File System Access API ตามที่คุณเห็นในบทการผสานรวมระบบปฏิบัติการ
- รับเนื้อหาจากแอปอื่นๆ ด้วยเป้าหมายการแชร์เว็บ ตามที่ฉันแสดงในบทการผสานรวมระบบปฏิบัติการ
- รับข้อมูลรายชื่อติดต่อโดยใช้ Contact Picker API ตามที่แสดงในบทการผสานรวมระบบปฏิบัติการ
- ซิงค์ในเบื้องหลังขณะที่ไม่มีการใช้งาน PWA ด้วย Background syncation API
- การกำหนดเวลางานในขณะที่ไม่มีการใช้งาน PWA ด้วย Web Periodic Background Syncation API
- ส่งการแจ้งเตือนโดยใช้ Web Push และ Web Notifications API
- โอนไฟล์ในเบื้องหลังขณะที่ผู้ใช้ไม่ได้ใช้ PWA ด้วย API การดึงข้อมูลในเบื้องหลัง
- ผสานรวมสื่อที่เล่นกับระบบปฏิบัติการโดยใช้ Media Session API
- จัดการการชำระเงินใน PWA ด้วย Payment Request API Apple ยังมีไลบรารี Apple Pay JS เพิ่มเติมจาก Payment Request API
- สถานะเครือข่ายข้อความค้นหา เช่น ประเภทการเชื่อมต่อ (4G, Wi-Fi) และแฟล็ก Save Data โดยใช้ Network Information API
- จับภาพหน้าจอของผู้ใช้สำหรับ Screencast หรือการแชร์หน้าจอโดยใช้ Screen Recording API
- ตรวจหารูปร่างโดยใช้ตัวตรวจจับที่มีการเร่งฮาร์ดแวร์ในอุปกรณ์ ซึ่งรวมถึงบาร์โค้ด (ใบหน้าคนและ OCR ของข้อความยังอยู่ระหว่างการพัฒนา) โดยใช้ Shape Detection API
- ค้นหาหน่วยความจำของอุปกรณ์โดยใช้อินเทอร์เฟซหน่วยความจำอุปกรณ์
- รหัสผ่านที่สามารถใช้งานได้เพียงครั้งเดียวผ่าน SMS ช่วยให้คุณได้รับรหัสทาง SMS ที่ส่งจากเซิร์ฟเวอร์ของคุณโดยอัตโนมัติโดยใช้ WebOTP API Safari จะใช้ชุดย่อยของโซลูชันตามองค์ประกอบ
<input>
อ่านเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ในบล็อกของ WebKit - จัดการแป้นพิมพ์เสมือนที่ปรากฏบนหน้าจออุปกรณ์เคลื่อนที่โดยใช้ Virtual Keyboard API