WebAPK trên Android

Khi người dùng thêm Ứng dụng web tiến bộ của bạn 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 APK này là WebAPK. Việc được cài đặt thông qua 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ý tập hợp bộ lọc ý định.

Cài đặt PWA trên Android không chỉ 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 APK này là WebAPK. Việc được cài đặt thông qua 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ý tập hợp 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 Android

Khi một Ứng dụng web tiến bộ được cài đặt trên Android, ứng dụng đó sẽ đăng ký một tập hợp 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 một phần manifest.json sau:

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

Khi một ứng dụng web sử dụng ứng dụng này được 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 mà không có bất kỳ trình duyệt nào trên Chrome.

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

<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 đến https://example.com/read, thì ý định đó sẽ nắm bắt được ý định và mở đường liên kết đó trong Ứng dụng web tiến bộ.

Sử dụng scope để hạn chế các 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 yêu cầu Android chỉ mở ứng dụng web của bạn nếu URL khớp với origin + scope. Quy trình này cho phép bạn kiểm soát URL nào sẽ được ứng dụng của bạn xử lý và URL nào đượ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 chạy từ trình chạy ứng dụng, https://example.com/app/ sẽ mở dưới dạng một ứng dụng độc lập mà không có bất kỳ trình duyệt nào trên Chrome.

Giống như trước đây, WebAPK được tạo sẽ bao gồm một bộ lọc ý định, nhưng với một 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 tham khảo 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 ở /app/

Không nên

https://example.com/about/ – không ở /app/

Vui lòng xem scope để biết thêm thông tin về scope, điều gì xảy ra nếu bạn không đặt thuộc tính này, cũng như 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ể yêu cầu được tại thời điểm cài đặt. Thay vào đó, bạn phải yêu cầu các lớp này trong thời gian chạy, tốt nhất là chỉ khi bạn thực sự cần các mã đó. Ví dụ: không yêu cầu quyền truy cập vào máy ảnh trong lần tải đầu tiên, 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 qua một APK, Chrome sẽ sử dụng hồ sơ hiện tại để lưu trữ bất kỳ dữ liệu nào và hồ sơ đó sẽ không bị tách biệt. Điều này cho phép trải nghiệm chung giữa trình duyệt và ứng dụng đã 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 được 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 đã chuyển sang phần Cách Chrome xử lý bản cập nhật cho 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 ý kiến phản hồi của bạn về các biểu tượng trên màn hình chờ quá nhỏ. Các 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ì, miễn là bạn đã cung cấp các biểu tượng đề 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?
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 muốn người dùng có thể cài đặt cả hai, bạn nên tạo sự khác biệt giữa biểu tượng hoặc tên 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 có 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 giải pháp 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?
Các 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ấp quyền của Chrome 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 các ứng dụng web tiến bộ trên tất cả các phiên bản Android chạy Chrome dành cho Android, đặc biệt là Jelly Bean trở lên.
Tính năng này có sử dụng WebView không?
Không, trang web sẽ mở bằng 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 được 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 mục Hoạt động đáng tin cậy trên web.
Những ứng dụng này có được nêu trê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 để liệt kê 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ể thực hiện quy trình cài đặt liền mạch này không? :
Chúng tôi đang xử lý. 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à chúng tôi sẽ sớm có thêm thông tin chi tiết.