เมื่อผู้ใช้เพิ่ม Progressive Web App ของคุณลงในหน้าจอหลักใน Android แล้ว Chrome จะสร้าง APK ให้คุณโดยอัตโนมัติ ซึ่งบางครั้งเราเรียกว่า WebAPK การติดตั้งผ่าน APK จะช่วยให้แอปของคุณปรากฏในตัวเปิดแอป ในการตั้งค่าแอปของ Android และลงทะเบียนชุดตัวกรอง Intent ได้
การติดตั้ง PWA ใน Android ไม่ได้มีไว้เพื่อเพิ่ม Progressive Web App ลงในหน้าจอหลักของผู้ใช้เท่านั้น แต่ Chrome จะสร้างและติดตั้ง APK พิเศษของแอปโดยอัตโนมัติ ซึ่งบางครั้งเราเรียกว่า WebAPK การติดตั้งผ่าน APK จะช่วยให้แอปของคุณปรากฏในตัวเปิดแอป ในการตั้งค่าแอปของ Android และลงทะเบียนชุดตัวกรอง Intent ได้
Chrome จะดู ไฟล์ Manifest ของเว็บแอปและ ข้อมูลเมตาอื่นๆ เพื่อ สร้าง WebAPK เมื่อตรวจพบการอัปเดตไฟล์ Manifest Chrome จะต้องสร้าง APK ใหม่
ตัวกรอง Intent ของ Android
เมื่อติดตั้ง Progressive Web App ใน Android ระบบจะลงทะเบียนชุด ตัวกรอง Intent สำหรับ URL ทั้งหมดภายในขอบเขตของแอป เมื่อผู้ใช้คลิกลิงก์ที่ อยู่ในขอบเขตของแอป ระบบจะเปิดแอปแทนที่จะเปิด ในแท็บเบราว์เซอร์
ลองดู manifest.json บางส่วนต่อไปนี้
"start_url": "/",
"display": "standalone",
เมื่อเปิดเว็บแอปที่ใช้ไฟล์นี้จากตัวเปิดแอป ระบบจะเปิด https://example.com/ เป็นแอปแบบสแตนด์อโลนโดยไม่มี Chrome ของเบราว์เซอร์
WebAPK จะมีตัวกรอง Intent ต่อไปนี้
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="https"
android:host="example.com"
android:pathPrefix="/" />
</intent-filter>
หากผู้ใช้คลิกลิงก์ในแอปที่ติดตั้งไว้เพื่อไปยัง https://example.com/read ระบบจะตรวจพบ Intent และเปิดใน Progressive Web App
การใช้ scope เพื่อจำกัดตัวกรอง Intent
หากไม่ต้องการให้ Progressive Web App จัดการ URL ทั้งหมดภายในเว็บไซต์
คุณสามารถเพิ่มพร็อพเพอร์ตี้ scope ลงใน
ไฟล์ Manifest ของเว็บแอปได้ พร็อพเพอร์ตี้ scope จะบอกให้ Android เปิดเว็บ
แอปของคุณก็ต่อเมื่อ URL ตรงกับ origin + scope ซึ่งจะช่วยให้คุณควบคุม URL ที่แอปจะจัดการและ URL ที่ควรเปิดในเบราว์เซอร์ได้
ฟีเจอร์นี้มีประโยชน์เมื่อคุณมีแอปและเนื้อหาอื่นๆ ที่ไม่ใช่แอปอยู่ในโดเมนเดียวกัน
ลองดู manifest.json บางส่วนต่อไปนี้
"scope": "/app/",
"start_url": "/app/",
"display": "standalone",
เมื่อเปิดจากตัวเปิดแอป ระบบจะเปิด https://example.com/app/ เป็นแอปแบบสแตนด์อโลนโดยไม่มี Chrome ของเบราว์เซอร์
เช่นเดียวกับก่อนหน้านี้ WebAPK ที่สร้างขึ้นจะมีตัวกรอง Intent แต่มีแอตทริบิวต์ android:pathPrefix ที่แตกต่างกันใน AndroidManifest.xml ของ APK ดังนี้
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="https"
android:host="example.com"
android:pathPrefix="/app/" />
</intent-filter>
ลองดูตัวอย่าง 2-3 ตัวอย่าง
https://example.com/app/ - ภายใน /app/
https://example.com/app/read/book - ภายใน /app/
https://example.com/help/ - ไม่อยู่ใน /app/
https://example.com/about/ - ไม่อยู่ใน /app/
ดูข้อมูลเพิ่มเติมเกี่ยวกับscope สิ่งที่จะเกิดขึ้นเมื่อคุณไม่ได้ตั้งค่า และวิธีใช้
เพื่อกำหนดขอบเขตของแอปได้ที่
scope
การจัดการสิทธิ์
สิทธิ์จะทำงานในลักษณะเดียวกับเว็บแอปอื่นๆ และขอไม่ได้ในระหว่างการติดตั้ง แต่ต้องขอในระหว่างรันไทม์ และควรขอเฉพาะเมื่อจำเป็นจริงๆ เท่านั้น เช่น อย่าขอสิทธิ์เข้าถึงกล้องเมื่อโหลดครั้งแรก แต่ให้รอจนกว่าผู้ใช้จะพยายามถ่ายรูป
การจัดการพื้นที่เก็บข้อมูลและสถานะของแอป
แม้ว่าจะติดตั้ง Progressive Web App ผ่าน APK แต่ Chrome จะใช้โปรไฟล์ปัจจุบันเพื่อจัดเก็บข้อมูลทั้งหมด และข้อมูลจะไม่ถูกแยกออกไป ซึ่งจะช่วยให้ผู้ใช้ได้รับประสบการณ์การใช้งานร่วมกันระหว่างเบราว์เซอร์กับแอปที่ติดตั้งไว้ โดยคุกกี้จะแชร์และใช้งานได้ พื้นที่เก็บข้อมูลฝั่งไคลเอ็นต์จะเข้าถึงได้ และ Service Worker จะได้รับการติดตั้งและพร้อมใช้งาน
การอัปเดต WebAPK
ข้อมูลเกี่ยวกับวิธีอัปเดต WebAPK ได้ย้ายไปอยู่ที่ หัวข้อวิธีที่ Chrome จัดการการอัปเดตไฟล์ Manifest ของเว็บแอปแล้ว
คำถามที่พบบ่อย
ระบบใช้ไอคอนใดในการสร้างหน้าจอเริ่มต้น
เราขอแนะนำให้คุณระบุไอคอนสำหรับหน้าจอเริ่มต้นอย่างน้อย 2 ขนาด ได้แก่: 192 พิกเซลและ 512 พิกเซล เราทราบมาว่าไอคอนในหน้าจอเริ่มต้นมีขนาดเล็กเกินไป WebAPK ที่สร้างใน Chrome 71 ขึ้นไปจะแสดงไอคอนที่ใหญ่ขึ้นในหน้าจอเริ่มต้น คุณไม่จำเป็นต้องดำเนินการใดๆ ตราบใดที่คุณได้ระบุไอคอนที่แนะนำไว้
จะเกิดอะไรขึ้นหากผู้ใช้ติดตั้งแอปดั้งเดิมของเว็บไซต์ไว้แล้ว
เช่นเดียวกับการเพิ่มลงในหน้าจอหลักในปัจจุบัน ผู้ใช้จะเพิ่มเว็บไซต์ได้โดยไม่ขึ้นอยู่กับแอปดั้งเดิม หากคาดว่าผู้ใช้อาจติดตั้งทั้ง 2 อย่าง เราขอแนะนำให้แยกความแตกต่างของไอคอนหรือชื่อเว็บไซต์กับแอปดั้งเดิม
พื้นที่เก็บข้อมูลของเว็บไซต์ที่ติดตั้งไว้จะถูกล้างหรือไม่หากผู้ใช้ล้างแคชของ Chrome
ใช่
ระบบจะติดตั้งแอปของฉันอีกครั้งหรือไม่เมื่อฉันซื้ออุปกรณ์เครื่องใหม่
ยังไม่ติดตั้งในตอนนี้ แต่เราคิดว่านี่เป็นส่วนสำคัญและกำลังหาวิธีทำให้การดำเนินการนี้เป็นไปได้
ระบบจัดการสิทธิ์อย่างไร ฉันจะเห็นข้อความแจ้งของ Chrome หรือข้อความแจ้งของ Android
ระบบจะยังคงจัดการสิทธิ์ผ่าน Chrome ผู้ใช้จะเห็นข้อความแจ้งของ Chrome เพื่อให้สิทธิ์และจะแก้ไขสิทธิ์ได้ในการตั้งค่า Chrome
ฟีเจอร์นี้จะทำงานใน Android เวอร์ชันใด
Progressive Web App สามารถติดตั้งได้ใน Android ทุกเวอร์ชันที่ใช้ Chrome สำหรับ Android โดยเฉพาะ Jelly Bean ขึ้นไป
ฟีเจอร์นี้ใช้ WebView หรือไม่
ไม่ เว็บไซต์จะเปิดใน Chrome เวอร์ชันที่ผู้ใช้เพิ่มเว็บไซต์
เราอัปโหลด APK ที่สร้างขึ้นไปยัง Play Store ได้ไหม
ไม่ได้ หากต้องการอัปโหลด APK ของคุณเอง โปรดดูที่กิจกรรมบนเว็บที่เชื่อถือได้
แอปเหล่านี้จะแสดงใน Play Store ไหม
ไม่ หากต้องการอัปโหลด APK ของคุณเองเพื่อแสดงใน Play Store โปรดดูที่ กิจกรรมบนเว็บที่เชื่อถือได้
ฉันเป็นนักพัฒนาเบราว์เซอร์อื่นใน Android ฉันจะใช้กระบวนการติดตั้งที่ราบรื่นนี้ได้ไหม
เรากำลังดำเนินการในส่วนนี้ เรามุ่งมั่นที่จะทำให้ฟีเจอร์นี้พร้อมใช้งานในเบราว์เซอร์ทั้งหมดใน Android และจะแจ้งรายละเอียดเพิ่มเติมให้ทราบเร็วๆ นี้