Trình duyệt trong ứng dụng mang đến cho người dùng trải nghiệm web đầy đủ mà không cần rời khỏi ứng dụng của bạn. Android cung cấp hai API chính để triển khai trình duyệt trong ứng dụng: Thẻ tuỳ chỉnh và WebView. Sử dụng trình duyệt trong ứng dụng khi bạn có một đường liên kết hoặc quảng cáo dẫn đến một trang web. Bạn có thể mở trang đó ngay trong ứng dụng, như bạn có thể thấy trong Hình 1.
Việc lựa chọn giữa Thẻ tuỳ chỉnh và WebView là một quyết định quan trọng về cấu trúc, ảnh hưởng đến tốc độ phát triển, trải nghiệm người dùng và mức độ kiểm soát của bạn đối với giao diện người dùng.
So sánh nhanh
Hãy tham khảo bảng sau để chọn công cụ phù hợp với nhu cầu của bạn:
| Tính năng | WebView | Tab tùy chỉnh |
|---|---|---|
| Trường hợp sử dụng chính | Xây dựng ứng dụng kết hợp với web làm nội dung chính hoặc nội dung hỗ trợ, hiển thị quảng cáo hiển thị, Chiến dịch quảng cáo ứng dụng hoặc trang điều khoản dịch vụ. | Hiển thị nội dung từ các trang web bên ngoài (như tin bài hoặc trang sản phẩm). |
| Thành phần điều khiển trên giao diện người dùng | Đầy. Đây là một thành phần View mà bạn có thể đặt ở bất cứ đâu. Bạn kiểm soát tất cả giao diện người dùng xung quanh. |
Bị hạn chế. Bạn có thể tạo giao diện cho màu thanh công cụ và thêm một vài thao tác tuỳ chỉnh. |
| Dữ liệu và phiên | Hộp cát. Trình duyệt này không chia sẻ cookie hoặc thông tin đăng nhập với trình duyệt chính của người dùng. | Đã chia sẻ. Thành phần này sử dụng phiên trình duyệt mặc định của người dùng, bao gồm cả cookie và mật khẩu đã lưu. |
| Cầu nối giữa ứng dụng gốc và web | Có. Bạn có thể sử dụng cầu nối JavaScript để giao tiếp sâu, hai chiều giữa nội dung trên web và mã ứng dụng gốc. | Bị hạn chế. Bạn có thể sử dụng phương thức window.postMessage() để truyền chuỗi cơ bản. |
| Công sức của nhà phát triển | Cao. Bạn cần tự quản lý vòng đời, hoạt động điều hướng và hiệu suất. | Thấp. Bạn có thể triển khai tính năng này chỉ bằng vài dòng mã. |
WebView
WebView là một thành phần hiển thị giúp trang web trở thành một phần không thể thiếu trong bố cục của ứng dụng. WebView rất mạnh mẽ nhưng việc xử lý WebView phức tạp hơn một chút so với Thẻ tuỳ chỉnh.
WebView có thể tải nội dung trên web từ xa hoặc cục bộ, thực thi JavaScript và cho phép giao tiếp hai chiều giữa nội dung trên web và mã ứng dụng gốc. Để tìm hiểu thêm về các chức năng của WebView, hãy xem phần Những việc WebView có thể làm.
Bạn cũng có thể sử dụng WebView để phân phối ứng dụng web hoặc hiển thị trang web trực tuyến trong ứng dụng của mình. Ví dụ: thoả thuận người dùng cuối mà bạn cần cập nhật định kỳ. Để tìm hiểu thêm, hãy xem bài viết Xây dựng ứng dụng web trong WebView.
Lý do bạn nên chọn WebView
Sau đây là một số trường hợp phù hợp để sử dụng WebView:
- Ứng dụng kết hợp: Bạn đang xây dựng một ứng dụng trong đó nội dung trên web và các thành phần gốc (như thanh điều hướng hoặc nút hành động nổi) cùng tồn tại.
- Nội dung của bên thứ nhất: Nội dung trên web của bạn là một phần cốt lõi, có tính tương tác trong trải nghiệm trong ứng dụng, chẳng hạn như trình chỉnh sửa tài liệu hoặc canvas thiết kế.
- Kiểm soát toàn bộ thành phần điều khiển trên giao diện người dùng: Bạn cần sửa đổi nội dung của chính trang web hoặc phủ các phần tử trên giao diện người dùng gốc lên trên trang web đó.
- Số liệu phân tích chuyên sâu: Bạn cần thông tin chi tiết về mức độ tương tác và hoạt động của người dùng trong chế độ xem web.
Những điểm đánh đổi chính
Sau đây là một số điểm đánh đổi quan trọng cần cân nhắc khi sử dụng WebView:
- Hiệu suất: WebView có thể tốn nhiều bộ nhớ. Nếu không quản lý cẩn thận, bạn có thể gặp phải các vấn đề về hiệu suất hoặc lỗi ANR (Lỗi ứng dụng không phản hồi).
- Bảo mật và bảo trì: Bạn chịu trách nhiệm tăng cường bảo mật và quản lý vòng đời. Điều này bao gồm việc quản lý việc duy trì trạng thái trong quá trình tạo lại quy trình bằng
WebViewCompat.saveState()và duy trì trong giới hạn giao dịch trạng thái đã lưu 1 MB của Android. Tuy nhiên, các bản cập nhật WebView được phát hành trên toàn cầu thông qua Google Play, vì vậy, bạn không phải lo lắng về việc công cụ cơ bản bị lỗi thời.
Tab tùy chỉnh
Thẻ tuỳ chỉnh là một lựa chọn tuyệt vời để chuyển hướng người dùng đến các URL bên ngoài, vì thẻ này cung cấp một cửa sổ trình duyệt nhanh, an toàn và thân thiện với người dùng, trượt qua ứng dụng của bạn.
Lý do bạn nên chọn Thẻ tuỳ chỉnh
Sau đây là một số trường hợp phù hợp để sử dụng Thẻ tuỳ chỉnh:
- Đường liên kết ngoài: Khi người dùng nhấn vào một đường liên kết đến một trang web mà bạn không sở hữu, Thẻ tuỳ chỉnh sẽ giữ họ trong bối cảnh của ứng dụng, đồng thời mang lại trải nghiệm trình duyệt toàn năng.
- Dễ tích hợp: Đây là cách đơn giản nhất để thiết lập và chạy trải nghiệm web được nhúng.
- Trạng thái chia sẻ: Vì chia sẻ cookie với trình duyệt mặc định của người dùng, nên người dùng không phải đăng nhập lại vào các trang web mà họ đã truy cập.
- Đăng nhập bằng bên thứ ba: Các cửa sổ bật lên này rất phù hợp với quy trình đăng nhập bằng bên thứ ba (chẳng hạn như "Đăng nhập bằng Google" hoặc "Đăng nhập bằng Facebook") vì trình duyệt xử lý thông tin đăng nhập một cách an toàn.
Mặc dù hầu hết các trình duyệt đều hỗ trợ Thẻ tuỳ chỉnh, nhưng một số trình duyệt cung cấp nhiều tuỳ chỉnh hơn các trình duyệt khác. Để biết thêm thông tin, hãy xem phần Hỗ trợ trình duyệt.
Sử dụng nội dung trên web trong Jetpack Compose
Bạn có thể sử dụng cả Thẻ tuỳ chỉnh và WebView khi xây dựng bằng Jetpack Compose:
- Thẻ tuỳ chỉnh: Vì Thẻ tuỳ chỉnh sử dụng
Intent, nên bạn có thể chạy các thẻ này từ bất kỳContextnào trong các hàm Compose, giúp tích hợp liền mạch. - WebView: Compose chưa có thành phần kết hợp WebView gốc, vì vậy, bạn cần sử dụng
AndroidViewđể nhúng WebView chuẩn vào bố cục của mình.
Tài nguyên khác
Để phát triển trang web cho thiết bị chạy Android bằng WebView hoặc API Thẻ tuỳ chỉnh, hãy xem các tài liệu sau:
- Nhúng nội dung trên web vào ứng dụng dưới dạng nội dung chính hoặc nội dung hỗ trợ
- Tài liệu tham khảo API: WebView
- Tổng quan về Thẻ tuỳ chỉnh
- Tổng quan về Hoạt động đáng tin cậy trên web
- Quản lý trạng thái WebView một cách hiệu quả
- Hỗ trợ trình duyệt