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 APK cho bạn, đôi khi chúng tôi gọi là WebAPK. Việc cài đặt thông qua APK giú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 nhóm bộ lọc ý định.

Cài đặt PWA trên Android không chỉ đơn thuần 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 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 thông qua APK giú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 nhóm bộ lọc ý định.

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

Bộ lọc ý định của Android

Khi được cài đặt trên Android, Ứng dụng web lũy tiến 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 một thẻ trình duyệt.

Hãy xem xét manifest.json sau đây:

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

Khi một ứng dụng web sử dụng API 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ỳ giao diện 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 một ứng dụng đã cài đặt để https://example.com/read, thì đường liên kết đó sẽ được ý định nắm bắt và mở trong Ứng dụng web tăng cường.

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 của mình, 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 cho biết Android chỉ mở ứng dụng web của bạn nếu URL khớp với origin + scope. Thao tác này giúp bạn kiểm soát những URL sẽ được ứng dụng của bạn xử lý và những URL sẽ được mở trong trình duyệt. Điều này sẽ 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 manifest.json sau đây:

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

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

Giống như trước đây, WebAPK được tạo sẽ có một bộ lọc ý định, nhưng có 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 xét 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ể dùng thuộc tính này để xác định phạm vi của ứng dụng.

Quản lý quyền

Quyền hoạt động theo cách tương tự 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 tại 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 camera khi tải lần đầu, mà hãy đợi cho đế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 APK, nhưng Chrome sẽ dùng hồ sơ hiện tại để lưu trữ mọi dữ liệu và dữ liệu đó sẽ không được 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ần cài đặt. Cookie được chia sẻ và hoạt động, mọi bộ nhớ phía máy khách đều có thể truy cập và trình chạy 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 phần Cách Chrome xử lý các bản cập nhật đối với 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 kích thước biểu tượng cho màn hình chờ: 192px và 512px. Chúng tôi nhận được phản hồi của bạn rằng các biểu tượng trên màn hình khởi động 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ì xảy ra nếu người dùng đã cài đặt ứng dụng gốc cho trang web?

Tương tự như tính năng thêm vào màn hình chính hiện tại, người dùng sẽ có thể thêm một trang web mà không phụ thuộc vào bất kỳ ứng dụng gốc nào. Nếu bạn dự kiến người dùng có thể cài đặt cả hai, thì 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ó 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 tìm cách để triển khai tính năng này.

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 của 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 tiến bộ trên mọi phiên bản Android chạy Chrome dành cho Android, cụ thể là Jelly Bean trở lên.

Ứng dụng này có 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 APK đã tạo lên 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, hãy xem Hoạt động trên web đáng tin cậy.

Những ứng dụng này có 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 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 xử lý vấn đề này. Chúng tôi cam kết cung cấp tính năng này cho tất cả các trình duyệt trên Android và sẽ sớm có thêm thông tin chi tiết.