หากคุณเป็นนักพัฒนาเว็บที่ไม่รู้เกี่ยวกับ App Development (เช่นฉัน!) บทความนี้เหมาะสำหรับคุณ ฉันจะสอนวิธีเปลี่ยนเว็บไซต์ของคุณให้เป็นแอปแบบเนทีฟ โดยไม่ต้องใช้เฟรมเวิร์กหรือภาษาใหม่ คุณจะได้เรียนรู้วิธีแปลงเว็บไซต์เป็น PWA (Progressive Web App) ที่คุณเผยแพร่บน Play Store ได้
ขั้นแรก เราจะเปลี่ยนเว็บไซต์ของคุณให้เป็น Progressive Web App (PWA) จากนั้น เราจะใช้เครื่องมือบรรทัดคำสั่งฟรีจาก Google ชื่อ Bubblewrap เพื่อจัดแพคเกจ PWA นั้นลงในแอป Android มาเริ่มกันเลย
ข้อกำหนดเบื้องต้น
หากคุณปฏิบัติตามบทช่วยสอนนี้ มีข้อกำหนดเบื้องต้นบางประการ:
-
ความรู้พื้นฐานเกี่ยวกับการพัฒนาเว็บ
-
ไซต์ของคุณควรเผยแพร่สู่สาธารณะ และคุณจะต้องมีสิทธิ์เข้าถึงซอร์สโค้ดของไซต์
-
เราจะใช้ npm เพื่อติดตั้งเครื่องมือที่จำเป็น ดังนั้นโปรดตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง Node.js แล้ว
หมายเหตุ: บทช่วยสอนนี้มีพื้นฐานมาจาก Vite โครงการ แต่ขั้นตอนสุดท้ายของ Bubblewrap จะเหมือนกันสำหรับกรอบงานเว็บใดๆ
สารบัญ
-
กปภ. คืออะไร?
-
Bubblewrap คืออะไร
-
TWA (กิจกรรมเว็บที่เชื่อถือได้) คืออะไร
-
TWA ตรวจสอบความน่าเชื่อถืออย่างไร
-
-
ขั้นตอนที่ 1 – กำหนดค่า PWA ของคุณใน Vite
-
สร้างไอคอนแอปของคุณ
-
ติดตั้งปลั๊กอิน Vite PWA
-
กำหนดค่าปลั๊กอิน
-
-
ขั้นตอนที่ 2 – สร้างแอป Android
-
สร้างโฟลเดอร์บิลด์
-
ติดตั้ง Bubblewrap CLI
-
เริ่มต้นโครงการ
-
มาแก้ไขปัญหาคำสั่ง init กันดีกว่า
-
-
ขั้นตอนที่ 3 – ตอบคำถาม Bubblewrap
-
ขั้นตอนที่ 4 – สร้างแอป
-
ขั้นตอนที่ 5 – การตั้งค่าการตรวจสอบ TWA
-
โฟลเดอร์ .well-known คืออะไร
-
delegate_permission/common.handle_all_urls คืออะไร
-
-
ขั้นตอนที่ 6 (ไม่บังคับ) – ปรับแต่งประสบการณ์ในแอป
-
สรุป
กปภ. คืออะไร?
PWA ย่อมาจาก แอปพลิเคชันเว็บแบบก้าวหน้า และเป้าหมายคือการทำให้เว็บไซต์ของคุณมีรูปลักษณ์เหมือนกับแอปเนทีฟ หากคุณเคยเยี่ยมชมเว็บไซต์ในเบราว์เซอร์และเห็นไอคอนติดตั้งที่ให้คุณดาวน์โหลดลงในโทรศัพท์หรือแล็ปท็อป แสดงว่าคุณใช้ PWA แล้ว
แต่ไม่ใช่แค่รูปลักษณ์และความรู้สึกเท่านั้น PWA ยังมีฟีเจอร์ที่คล้ายกับแอป เช่น การทำงานออฟไลน์ การส่งการแจ้งเตือนแบบพุช และอื่นๆ อีกมากมาย
การประปาส่วนภูมิภาคมีสององค์ประกอบหลัก
-
ไฟล์ Manifest อธิบายแอปของคุณ เช่น ชื่อ ไอคอน URL เริ่มต้น และอื่นๆ
-
โปรแกรมทำงานของบริการคือไฟล์ JavaScript พื้นหลังที่ทำหน้าที่เป็นพร็อกซี แคชและการแจ้งเตือนแบบพุชได้รับการจัดการโดยไฟล์บริการ ซึ่งทำงานเป็นเธรดอื่นนอกเหนือจากเธรดหลัก
หากไม่มีองค์ประกอบทั้งสองนี้ เบราว์เซอร์จะไม่อนุญาตให้ผู้ใช้ดาวน์โหลดแอปในเครื่อง
ไฟล์ Manifest และพนักงานบริการเปรียบเสมือนรายการตรวจสอบสำหรับเบราว์เซอร์ เมื่อคุณเยี่ยมชมเว็บไซต์ เบราว์เซอร์จะค้นหาองค์ประกอบทั้งสองนี้ หากมีอยู่และกำหนดค่าอย่างถูกต้อง เบราว์เซอร์จะรู้ว่าเป็น PWA ที่แท้จริง และจะแสดงไอคอน "ติดตั้ง" เพื่อให้ผู้ใช้สามารถดาวน์โหลดแอปในเครื่องได้ หากไม่มีสิ่งเหล่านี้ เบราว์เซอร์ก็จะมองเห็นเว็บไซต์ปกติ และตัวเลือกในการติดตั้งจะไม่สามารถใช้ได้
Bubblewrap คืออะไร
Bubblewrap เป็นเครื่องมือบรรทัดคำสั่งที่สร้างโดย Google ซึ่งใช้ PWA ของคุณและเปลี่ยนให้เป็นแอป Android โดยใช้กิจกรรมเว็บที่เชื่อถือได้ (TWA)
Bubblewrap ช่วยให้กระบวนการสร้าง TWA ง่ายขึ้น โดยเปลี่ยนไฟล์ Manifest ของ PWA ให้เป็นแพ็กเกจแอป Android (APK หรือ AAB)
TWA (กิจกรรมเว็บที่เชื่อถือได้) คืออะไร
กิจกรรมเว็บที่เชื่อถือได้ (TWA) เป็นฟีเจอร์ Android สมัยใหม่ที่ให้คุณแสดงเว็บไซต์ที่ใช้งานอยู่แบบเต็มหน้าจอภายในแอป Android โดยพื้นฐานแล้ว มันจะรันเว็บไซต์บนเบราว์เซอร์ แต่จะไม่แสดงแถบที่อยู่ของเบราว์เซอร์บนแอป สิ่งนี้ช่วยให้รู้สึกเหมือนเป็นแอปเนทีฟ
หากต้องการปลดล็อกฟีเจอร์เต็มหน้าจอ แอปของคุณจะต้อง "เชื่อถือได้"
นี่คือที่มาของ "การจับมือกันอย่างลับๆ" Android ต้องแน่ใจว่าผู้สร้างแอปและเจ้าของเว็บไซต์เป็นคนคนเดียวกัน หากไม่มีหลักฐานการเป็นเจ้าของ TWA จะทำงานในโหมดสำรองและแสดงแถบที่อยู่ของเบราว์เซอร์ที่ด้านบน ทำลายความรู้สึกของแอปดั้งเดิม
TWA ตรวจสอบความน่าเชื่อถืออย่างไร
ความน่าเชื่อถือนี้ได้รับการตรวจสอบโดยใช้ระบบที่เรียกว่า ลิงก์เนื้อหาดิจิทัล . คุณวางไฟล์พิเศษบนเว็บไซต์ของคุณ (เราจะทำเช่นนี้ในส่วนการใช้งาน) ซึ่งมีลายนิ้วมือดิจิทัลเฉพาะของแอปของคุณ เมื่อผู้ใช้เปิดแอปของคุณ ระบบปฏิบัติการ Android จะตรวจสอบไฟล์นี้ หากลายนิ้วมือตรงกัน แอปจะมอบสถานะ "เชื่อถือได้" ให้กับแอปของคุณ นำแถบที่อยู่ออก และเปิดใช้งานคุณลักษณะอื่นๆ เช่น การทำ Deep Link
คุณสามารถตรวจสอบความสัมพันธ์นี้ได้ด้วยตนเองโดยใช้เครื่องมือทดสอบอย่างเป็นทางการของ Google:Digital Asset Links Verifier
เมื่อคุณเข้าใจโปรเจ็กต์และเครื่องมือแล้ว มาเริ่มสร้างกันเลย
ขั้นตอนที่ 1 – กำหนดค่า PWA ของคุณใน Vite
ขั้นตอนแรกคือการเพิ่มองค์ประกอบหลัก 2 รายการสำหรับ PWA ได้แก่ ไฟล์ Manifest และโปรแกรมทำงานของบริการ นี่คือสิ่งที่จะทำให้เบราว์เซอร์รับรู้ว่า "ติดตั้งได้"
คู่มือนี้อ้างอิงจากโปรเจ็กต์ที่สร้างด้วย Vite ซึ่งทำให้กระบวนการนี้ง่ายดายด้วยปลั๊กอินพิเศษ หากคุณกำลังใช้เครื่องมืออื่น แนวคิดจะเหมือนกัน แต่คุณจะต้องค้นหาแหล่งข้อมูลที่แตกต่างกันเกี่ยวกับขั้นตอนเฉพาะสำหรับสภาพแวดล้อมของคุณ
สร้างไอคอนแอปของคุณ
ก่อนที่เราจะแตะโค้ดใดๆ เราจำเป็นต้องมีไอคอนสำหรับแอปของเรา Android ต้องใช้ขนาดเฉพาะสำหรับไอคอน Launcher ของแอป (สิ่งที่คุณเห็นบนหน้าจอหลัก) และหน้าจอเริ่มต้น (สิ่งที่คุณเห็นเมื่อแอปเริ่มทำงาน)
คุณจะต้องมีสองขนาดหลัก:05 พิกเซลและ 18 พิกเซล คุณสามารถใช้ Favicon Generator นี้เพื่อสร้างโลโก้ของคุณในขนาดที่เกี่ยวข้อง คุณสามารถอัปโหลดโลโก้หลักของคุณได้ และมันจะสร้างขนาดที่จำเป็นทั้งหมดให้กับคุณ
จากนั้นเพียงดาวน์โหลดไฟล์ที่สร้างขึ้นและวาง 25 และ 36รหัส> ไฟล์ลงใน 41 โฟลเดอร์ของโครงการของคุณ

ติดตั้งปลั๊กอิน Vite PWA
PWA ต้องใช้ไฟล์ Manifest และพนักงานบริการ เราสามารถสร้างสิ่งเหล่านี้ได้ด้วยตนเอง แต่ปลั๊กอินนี้จะทำให้กระบวนการทั้งหมดนั้นเป็นไปโดยอัตโนมัติ มันจะสร้าง 59 โดยอัตโนมัติ และ 68รหัส> สำหรับคุณทุกครั้งที่คุณสร้างโครงการของคุณ
npm install vite-plugin-pwa -D
กำหนดค่าปลั๊กอิน
ในขั้นตอนนี้ เราจะใช้ปลั๊กอินนี้และกำหนดค่ารายการของแอปของเรา แก้ไข 77 ไฟล์. การกำหนดค่านี้จะบอกปลั๊กอินว่าจะตั้งชื่อแอปของคุณว่าอะไร ไอคอนใดที่จะใช้ และอื่นๆ
ใน 81 :
export default defineConfig({
plugins: [
VitePWA({
registerType: "autoUpdate",
manifest: {
name: "your app name",
short_name: "your app short name",
description: "write any description",
theme_color: "#0d1117",
background_color: "#ffffff",
display: "standalone",
start_url: "/",
icons: [
{
src: "/web-app-manifest-192x192.png",
sizes: "192x192",
type: "image/png",
},
{
src: "/web-app-manifest-512x512.png",
sizes: "512x512",
type: "image/png",
},
],
},
}),
]
ตอนนี้ เมื่อคุณรัน 90 ปลั๊กอินจะสร้างไฟล์ Manifest และไฟล์พนักงานบริการให้คุณโดยอัตโนมัติ เมื่อเสร็จแล้ว ให้ปรับใช้การเปลี่ยนแปลง ตอนนี้เว็บไซต์ของคุณเป็น PWA แล้ว
ขั้นตอนที่ 2 – สร้างแอป Android
ตอนนี้เว็บไซต์ของคุณเป็น PWA แล้ว มาใช้ Bubblewrap เพื่อรวมแพ็คเกจลงในแอป Android กันดีกว่า
สร้างโฟลเดอร์บิลด์
สร้างโฟลเดอร์เฉพาะสำหรับไฟล์โครงการ Android ของคุณ ในรูทของโปรเจ็กต์ของคุณ ให้สร้างโฟลเดอร์ใหม่ ฉันจะโทรหาฉัน 105 .
project/
├── client/
├── server/
└── android/
ตอนนี้นำทางไปยังโฟลเดอร์ใหม่ที่คุณสร้างขึ้น
ติดตั้ง Bubblewrap CLI
npm install -g @bubblewrap/cli
เริ่มต้นโครงการ
จากนั้นให้เรียกใช้ 119 คำสั่ง Bubblewrap จะเชื่อมต่อกับเว็บไซต์ที่ใช้งานอยู่ของคุณ อ่าน 123 ไฟล์ที่ Vite สร้างขึ้น และใช้ข้อมูลนั้นเพื่อสร้างโปรเจ็กต์ Android พื้นฐาน
bubblewrap init --manifest=https://your-website-domain/manifest.webmanifest
รันคำสั่งแทนที่ 135 ด้วย URL จริงของคุณ:
มาแก้ไขปัญหา 144 กัน คำสั่ง
ในขณะที่คุณเรียกใช้ 156 คำสั่ง Bubblewrap จะต้องมีแพ็คเกจซอฟต์แวร์หลักสองชุด ได้แก่ Java Development Kit (JDK) และ Android SDK . มันจะเสนอให้ติดตั้งให้คุณ
การตั้งค่า JDK:
? Do you want Bubblewrap to install the JDK (recommended)?
(Enter "No" to use your own JDK 17 installation) (Y/n)
ในกรณีของฉัน เมื่อฉันปล่อยให้ Bubblewrap ติดตั้ง JDK กระบวนการดาวน์โหลดไฟล์แต่กลับล้มเหลวในขั้นตอน "คลายการบีบอัด" หากคุณประสบปัญหาเดียวกันนี้ ไม่ต้องกังวล! การแก้ไขคือการติดตั้งด้วยตนเอง
-
พูดว่า ไม่ ถึงพรอมต์
-
ดาวน์โหลดเวอร์ชันที่แนะนำ (โดยปกติคือ JDK 17) จากแหล่งเช่น Adoptium
-
ติดตั้งและตั้งค่าตัวแปรสภาพแวดล้อมของระบบของคุณเพื่อรวม
167ของ JDK เส้นทาง หากคุณไม่แน่ใจวิธีตั้งค่าตัวแปรสภาพแวดล้อม คุณสามารถดูไซต์นี้:ตั้งค่าตัวแปรสภาพแวดล้อม -
เมื่อ Bubblewrap ถามถึงเส้นทาง ให้ระบุโดยตรง เช่น
170.
การตั้งค่า Android SDK:
เมื่อตั้งค่า JDK สำเร็จแล้ว ขั้นตอนต่อไปคือการกำหนดค่า Android SDK
? Do you want Bubblewrap to install the Android SDK (recommended)?
(Enter "No" to use your own Android SDK installation) (Y/n)
เนื่องจากฉันไม่มี Android SDK ฉันจึงปล่อยให้ Bubblewrap จัดการเรื่องนี้โดยเลือก ใช่ . ฉันไม่พบปัญหาใดๆ ที่นี่
หากคุณประสบปัญหาใดๆ ในการตั้งค่าบน Android SDK เพียงตั้งค่าด้วยตนเองและระบุเส้นทาง เช่นเดียวกับการตั้งค่า JDK
ขั้นตอนที่ 3 – ตอบคำถาม Bubblewrap
หลังจากตั้งค่า SDK แล้ว Bubblewrap จะถามคำถามมากมายเพื่อกำหนดค่าแอปของคุณ ข้อมูลนี้ใช้เพื่อสร้าง 184 ซึ่งเป็นพิมพ์เขียวสำหรับแอปของคุณ
Domain: Press Enter (auto-filled from your manifest)
Application name: Your full app name
Application ID: (e.g, chat.yourapp.twa)
Display mode: standalone
Orientation: portrait
Status bar color: Press Enter (accepts default)
Splash screen color: Press Enter (accepts default)
Icon URL: Press Enter (accepts default)
Include support for Play Billing?: Type Y if your app uses Google Play in-app purchases. Otherwise, N
Request geolocation permission?: Type Y if your app needs location access. Otherwise, N
ในคำถามเหล่านี้ ส่วนสำคัญคือที่เก็บคีย์และคีย์
First and Last names: Your full name
Organizational Unit: Developer or anything
Organization: Your organization name
Country (2-letter code): Your country code
Password for key store: Enter a new password
Password for key: Re-enter the same password
หมายเหตุ: รหัสผ่านเหล่านี้สำหรับทั้งที่เก็บคีย์และคีย์ควรเหมือนกัน ไม่เช่นนั้นจะทำให้เกิดข้อผิดพลาด อ้างอิงถึงปัญหานี้: ปัญหาบับเบิ้ลแรป
ขั้นตอนที่ 4 – สร้างแอป
bubblewrap build --universalApk
คำสั่งนี้เริ่มสร้างแอปพลิเคชันของคุณ ที่นี่ธง 194 จะสร้าง 206 และ 218รหัส> . หากคุณกำลังจะเผยแพร่แอปพลิเคชันของคุณใน Play Store ให้อัปโหลด 227 ไฟล์ไปที่ Play Store สำหรับการทดสอบของเรา เราจำเป็นต้องมีไฟล์ APK ดังนั้นแฟล็กนี้คือ 232 จะสร้างทั้งสองไฟล์ หากเราไม่ได้ให้แฟล็กนี้ มันจะให้แค่ 245 เท่านั้น .
ขั้นตอนที่ 5 – การตั้งค่าการตรวจสอบ TWA
เมื่อสร้างเสร็จแล้ว คุณจะได้รับ APK โอนไปยังโทรศัพท์ของคุณและทดสอบ เมื่อคุณเปิดแอป คุณจะเห็นแถบที่อยู่ของเบราว์เซอร์ เนื่องจากเรายังไม่ได้สร้าง "ความน่าเชื่อถือ" ระหว่างแอปและเว็บไซต์ของคุณ มาแก้ไขกันตอนนี้เลย
ในโปรเจ็กต์ส่วนหน้าของคุณ ไปที่ 254 โฟลเดอร์ ให้สร้างโฟลเดอร์ใหม่ชื่อ 268 และภายในนั้น ให้สร้างไฟล์ชื่อ 271 .
frontend/
├── public/
├── .well-known/
└── assetlinks.json
280 คืออะไร โฟลเดอร์?
โฟลเดอร์ที่รู้จักใช้เพื่อจัดเก็บไฟล์ที่กำหนดการกำหนดค่าสำหรับโปรโตคอล เนื่องจากใช้สำหรับแหล่งข้อมูลภายนอกเพื่อค้นหาการตรวจสอบความถูกต้องสำหรับเว็บไซต์ของคุณ ในกรณีของเรา แอปของเราจะตรวจสอบโฟลเดอร์ที่รู้จักจากเว็บไซต์ของเราและตรวจสอบความถูกต้อง
วางสิ่งต่อไปนี้ลงใน 298 :
[
{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "chat.yourapp.twa",
"sha256_cert_fingerprints": [
"your_sha256_fingerprint"
]
}
}
]
304คืออะไร ?
นี่เป็นแฟล็กพิเศษที่เปิดลิงก์ทั้งหมดจากแอปแทนโดเมน พูดง่ายๆ ก็คือทำหน้าที่เป็น Deep Link หลังจากที่คุณติดตั้งแอป หากคุณคลิกลิงก์เว็บไซต์ของคุณจาก WhatsApp หรือจากที่ไหนสักแห่ง แอปจะเปิดแอปของคุณแทนการเปิดในเบราว์เซอร์ โดยทำหน้าที่เป็น Deep Link
316รหัส> ฟิลด์ควรเป็น 326 ซึ่งคุณสามารถรับได้จากโฟลเดอร์บิลด์ Android ของคุณใน 336 .
ตอนนี้ขอลายนิ้วมือของคุณ เรียกใช้คำสั่งต่อไปนี้:
keytool -list -v -keystore android.keystore -alias android
ชื่อนามแฝงควรเป็นค่าที่คุณสร้างขึ้น เมื่อคุณป้อนคำสั่งนี้ ระบบจะถามรหัสผ่านที่เก็บคีย์ ป้อนแล้วคุณจะได้รับ 347 ลายนิ้วมือ คัดลอกและวางลงใน 354 ไฟล์ใน 362 อาร์เรย์ ตอนนี้ผลักดันการเปลี่ยนแปลงเหล่านี้ไปสู่การใช้งานจริง คุณสามารถตรวจสอบความถูกต้องได้ในลิงก์เนื้อหาดิจิทัล
แค่นั้นแหละ! ตอนนี้คุณสามารถติดตั้งแอปและทดสอบได้แล้ว
ขั้นตอนที่ 6 (ไม่บังคับ) – ปรับแต่งประสบการณ์ในแอป
นอกจากนี้ ยังมีบางกรณีที่เราต้องการแสดงเนื้อหาที่แตกต่างแก่ผู้ใช้บนเว็บไซต์เทียบกับแอปบนอุปกรณ์เคลื่อนที่ เราทำแบบนั้นได้ไหม? ใช่แล้ว!
ในโฟลเดอร์บิลด์ Android ของคุณใน 374 จะมีช่องชื่อ 380 . ถ้าไม่ ให้เพิ่มและเพิ่มค่า 392 . 402รหัส> คือจุดเริ่มต้น ฉันมีพารามิเตอร์การสืบค้นค่า 415 .
รันบิลด์อีกครั้งด้วย 426 .
ตอนนี้ หากคุณเปิดแอป แอปจะเปิดขึ้นโดยมี URL รายการเป็น 436 .
ในส่วนหน้าของคุณ:
const twaParam = queryParams.get("twa");
const [isTwa, setIsTwa] = useState<boolean>(() => {
return localStorage.getItem("isTwa") === "true";
});
useEffect(() => {
if (twaParam === "true") {
localStorage.setItem("isTwa", "true"); // set the value to local storage
setIsTwa(true);
}
}, [twaParam]);
{isTwa? (
<Link to="/contact" className="underline hover:text-primary">
Contact
</Link>
) : (
<Link to="/download" className="underline hover:text-primary">
Download App
</Link>
)}
ในโค้ดด้านบน เราจะตรวจสอบ 445 พารามิเตอร์การค้นหาใน URL หากมีอยู่ เราจะบันทึกข้อมูลนั้นลงในที่จัดเก็บในเครื่อง จากนั้นเราจะแสดงเนื้อหาตามเงื่อนไขสำหรับผู้ใช้
แค่นั้นแหละ. เราได้สร้างแอปแล้ว
หากคุณต้องการเปลี่ยนชื่อ สี หรือหน้าจอเริ่มต้น คุณสามารถเปลี่ยนได้ใน 450 และรันบิลด์อีกครั้ง
สรุป
Bubblewrap ใช้งานได้กับ Android เท่านั้น หากคุณต้องการให้แอปรองรับข้ามแพลตฟอร์ม ก็ยังมีแพลตฟอร์มอื่นๆ เช่น Capacitor ซึ่งฉันจะเขียนถึงในบทความอื่น
ยังไงก็ตาม คุณสามารถดูแอปที่ฉันสร้างโดยใช้ Bubblewrap ได้ที่นี่:Stranger Talk
หากมีข้อผิดพลาดหรือมีคำถามใดๆ โปรดติดต่อฉันทาง LinkedIn หรือ Instagram
ขอบคุณสำหรับการอ่าน!
เรียนรู้การเขียนโค้ดฟรี หลักสูตรโอเพ่นซอร์สของ freeCodeCamp ช่วยให้ผู้คนมากกว่า 40,000 คนได้งานในตำแหน่งนักพัฒนา เริ่มต้น