WebAPK trên Android

Khi người dùng thêm Ứng dụng web tiến bộ vào màn hình chính trên Android, Chrome sẽ tự động tạo một tệp APK cho bạn, đôi khi chúng tôi gọi là WebAPK. Việc cài đặt qua tệp APK giúp ứng dụng của bạn có thể xuất hiện trong trình chạy ứng dụng, trong phần cài đặt ứng dụng của Android và đăng ký một bộ bộ lọc ý định.

Việc cài đặt PWA trên Android không chỉ là thêm Ứng dụng web tiến bộ vào Màn hình chính của người dùng. Chrome sẽ tự động tạo và cài đặt một tệp APK đặc biệt của ứng dụng. Đôi khi, chúng tôi gọi tệp này là WebAPK. Việc cài đặt qua tệp APK cho phép ứng dụng của bạn xuất hiện trong trình chạy ứng dụng, trong phần cài đặt ứng dụng của Android và đăng ký một bộ bộ lọc ý định.

Để tạo WebAPK, Chrome sẽ xem xét tệp kê khai ứng dụng web và siêu dữ liệu khác. Khi phát hiện thấy nội dung cập nhật tệp kê khai, Chrome sẽ cần tạo một tệp APK mới.

Bộ lọc ý định Android

Khi được cài đặt trên Android, Ứng dụng web tiến bộ sẽ đăng ký một bộ bộ lọc ý định cho tất cả URL trong phạm vi của ứng dụng. Khi người dùng nhấp vào một đường liên kết nằm trong phạm vi của ứng dụng, ứng dụng sẽ được mở thay vì mở trong thẻ trình duyệt.

Hãy xem xét manifest.json một phần sau:

"start_url": "/",
"display": "standalone",

Khi một ứng dụng web sử dụng ứng dụng này được khởi chạy từ trình chạy ứng dụng, ứng dụng đó sẽ mở https://example.com/ dưới dạng một ứng dụng độc lập, không có bất kỳ trình duyệt Chrome nào.

WebAPK sẽ bao gồm các bộ lọc ý định sau:

<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>

Nếu người dùng nhấp vào một đường liên kết trong ứng dụng đã cài đặt đến https://example.com/read, thì ý định sẽ phát hiện và mở đường liên kết đó trong Ứng dụng web tiến bộ.

Sử dụng scope để hạn chế bộ lọc ý định

Nếu không muốn Ứng dụng web tiến bộ xử lý tất cả URL trong trang web, bạn có thể thêm thuộc tính scope vào tệp kê khai ứng dụng web. Thuộc tính scope yêu cầu Android chỉ mở ứng dụng web nếu URL khớp với origin + scope. Tùy chọn này cho phép bạn kiểm soát những URL mà ứng dụng sẽ xử lý và những URL sẽ được mở trong trình duyệt. Điều này rất hữu ích khi bạn có ứng dụng và nội dung không phải ứng dụng khác trên cùng một miền.

Hãy xem xét một phần manifest.json sau:

"scope": "/app/",
"start_url": "/app/",
"display": "standalone",

Khi khởi chạy từ trình chạy ứng dụng, ứng dụng này sẽ mở https://example.com/app/ dưới dạng một ứng dụng độc lập, không có bất kỳ trình duyệt Chrome nào.

Giống như trước đây, WebAPK được tạo sẽ bao gồm một bộ lọc ý định, nhưng với thuộc tính android:pathPrefix khác trong AndroidManifest.xml của 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>

Hãy cùng xem một vài ví dụ:

Nên

https://example.com/app/ – trong /app/

Nên

https://example.com/app/read/book – trong /app/

Không nên

https://example.com/help/ – không có trong /app/

Không nên

https://example.com/about/ – không có trong /app/

Hãy xem scope để biết thêm thông tin về scope, những điều sẽ xảy ra khi bạn không đặt thuộc tính này và cách bạn có thể sử dụng thuộc tính này để xác định phạm vi của ứng dụng.

Quản lý quyền

Các quyền hoạt động giống như các ứng dụng web khác và không thể được yêu cầu tại thời điểm cài đặt. Thay vào đó, bạn phải yêu cầu các quyền này trong thời gian chạy, tốt nhất là chỉ khi bạn thực sự cần. Ví dụ: đừng yêu cầu quyền truy cập máy ảnh khi tải lần đầu, mà hãy đợi đến khi người dùng cố gắng chụp ảnh.

Quản lý bộ nhớ và trạng thái ứng dụng

Mặc dù ứng dụng web tiến bộ được cài đặt thông qua tệp APK, nhưng Chrome sử dụng hồ sơ hiện tại để lưu trữ mọi dữ liệu và hồ sơ này sẽ không bị tách biệt. Điều này cho phép chia sẻ trải nghiệm giữa trình duyệt và ứng dụng đã cài đặt. Cookie được chia sẻ và đang hoạt động, mọi bộ nhớ phía máy khách đều có thể truy cập được và worker dịch vụ đã được cài đặt và sẵn sàng hoạt động.

Cập nhật WebAPK

Thông tin về cách cập nhật WebAPK đã được chuyển sang bài viết Cách Chrome xử lý các bản cập nhật tệp kê khai ứng dụng web.

Câu hỏi thường gặp

Những biểu tượng nào được dùng để tạo màn hình chờ? :
Bạn nên cung cấp ít nhất 2 biểu tượng: 192px và 512px cho màn hình chờ. Chúng tôi nhận được thông tin từ bạn rằng các biểu tượng trên màn hình chờ quá nhỏ. WebAPK được tạo trong Chrome 71 trở lên sẽ hiển thị biểu tượng lớn hơn trên màn hình chờ. Bạn không cần làm gì cả, miễn là bạn cung cấp các biểu tượng được đề xuất.
Điều gì sẽ xảy ra nếu người dùng đã cài đặt ứng dụng gốc cho trang web?
Giống như tính năng thêm vào màn hình chính hiện nay, người dùng sẽ có thể thêm một trang web độc lập với mọi ứng dụng gốc. Nếu bạn cho rằng người dùng có thể cài đặt cả hai, bạn nên phân biệt biểu tượng hoặc tên của trang web với ứng dụng gốc.
Bộ nhớ của trang web đã cài đặt của tôi có bị xoá nếu người dùng xoá bộ nhớ đệm của Chrome không?
Có.
Ứng dụng của tôi có được cài đặt lại khi tôi mua thiết bị mới không?
Hiện tại thì chưa, nhưng chúng tôi cho rằng đây là một lĩnh vực quan trọng và chúng tôi đang nghiên cứu các cách để triển khai.
Quyền được xử lý như thế nào? Tôi sẽ thấy lời nhắc của Chrome hay của Android?
Quyền vẫn sẽ được quản lý thông qua Chrome. Người dùng sẽ thấy lời nhắc của Chrome để cấp quyền và có thể chỉnh sửa các quyền đó trong phần cài đặt Chrome.
Tính năng này sẽ hoạt động trên những phiên bản Android nào?
Bạn có thể cài đặt ứng dụng web tăng tiến trên tất cả các phiên bản Android chạy Chrome dành cho Android, cụ thể là Jelly Bean trở lên.
Liệu cách này có sử dụng WebView không?
Không, trang web sẽ mở trong phiên bản Chrome mà người dùng đã thêm trang web.
Chúng tôi có thể tải các tệp APK đã tạo lên Cửa hàng Play không?
Không. Nếu bạn muốn tải tệp APK của riêng mình lên, hãy xem phần Hoạt động đáng tin cậy trên web.
Các ứng dụng này có được liệt kê trong Cửa hàng Play không?
Không. Nếu bạn muốn tải APK của riêng mình lên để đăng trong Cửa hàng Play, hãy xem phần Hoạt động đáng tin cậy trên web.
Tôi là nhà phát triển của một trình duyệt khác trên Android, tôi có thể có quy trình cài đặt liền mạch này không? :
Chúng tôi đang nỗ lực khắc phục vấn đề này. Chúng tôi cam kết cung cấp tính năng này cho tất cả trình duyệt trên Android và sẽ sớm cung cấp thêm thông tin chi tiết.