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 tự động tạo và cài đặt một APK đặc biệt của ứng dụng. Đôi khi, chúng tôi gọi đâ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ý một tập hợp các 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 đây:
"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 được đường liên kết đó 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ụ:
https://example.com/app/
- trong phạm vi /app/
https://example.com/app/read/book
– trong /app/
https://example.com/help/
– không có trong /app/
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 đó, các mã này phải được yêu cầu trong thời gian chạy, tốt nhất là chỉ khi bạn thực sự cần đế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 hai biểu tượng: 192px và 512px cho màn hình chờ. 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 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.
- Nếu người dùng xoá bộ nhớ đệm của Chrome, bộ nhớ của trang web đã cài đặt của tôi có bị xoá 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.
- Các 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 các ứng dụng web tiến bộ trên mọi phiên bản Android chạy Chrome dành cho Android, đặc biệt là Jelly Bean trở lên.
- Phương thức 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 để liệt kê trong Cửa hàng Play, hãy tham khảo 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 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ả 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.