WebAPK ใน Android

เมื่อผู้ใช้เพิ่ม Progressive Web App ลงในหน้าจอหลักบน Android แล้ว Chrome จะสร้าง APK ให้คุณโดยอัตโนมัติ ซึ่งบางครั้งเราเรียกว่า WebAPK การติดตั้งผ่าน APK จะทำให้แอปของคุณปรากฏใน App Launcher, ในการตั้งค่าแอปของ Android และลงทะเบียนชุดตัวกรอง Intent ได้

การติดตั้ง PWA ใน Android นั้นทำได้มากกว่าแค่เพิ่ม Progressive Web App ลงในหน้าจอหลักของผู้ใช้ Chrome จะสร้างและติดตั้ง APK พิเศษของแอปโดยอัตโนมัติ ซึ่งบางครั้งเราเรียกว่า WebAPK การติดตั้งผ่าน APK จะทำให้แอปของคุณปรากฏใน App Launcher, ในการตั้งค่าแอปของ 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 อินเทนต์จะจับลิงก์นั้นและเปิดใน 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>

มาดูตัวอย่างกัน

ควรทำ

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 และจะมีรายละเอียดเพิ่มเติมให้ทราบในเร็วๆ นี้