Sáng kiến về con người và hoạt động trò chuyện (people and conversations) là một sáng kiến nhiều năm của Android nhằm mục đích nâng tầm con người và hoạt động trò chuyện trong các khu vực hệ thống của điện thoại. Ưu tiên này dựa trên thực tế rằng hoạt động giao tiếp và tương tác với người khác vẫn là khu vực chức năng có giá trị và quan trọng nhất đối với đa số người dùng của chúng tôi trên mọi nhóm nhân khẩu học.
Chúng tôi đã ra mắt một số tính năng trong Android 11 để hỗ trợ sáng kiến về con người và hoạt động trò chuyện.
Không gian trò chuyện
![Không gian trò chuyện (conversation space) là một khu vực thông báo riêng để mọi người trò chuyện theo thời gian thực.](https://developer.android.google.cn/static/images/guide/topics/ui/conversations-conv-space.png?authuser=9&hl=vi)
Trên thiết bị cầm tay, có một phần riêng ở đầu ngăn thông báo chỉ chứa các cuộc trò chuyện với mọi người theo thời gian thực (chẳng hạn như các cuộc gọi và tin nhắn trò chuyện, bao gồm cả cuộc trò chuyện nhóm). Trên nhiều điện thoại, thông báo trong không gian này có giao diện và hành động khác với thông báo không phải cuộc trò chuyện:
- Có sự khác biệt trong thiết kế với điểm nhấn là hình đại diện để đại diện cho từng người tương ứng với ứng dụng nơi diễn ra cuộc trò chuyện.
- Thao tác nhấn vào thông báo sẽ mở ra cuộc trò chuyện trong ứng dụng (hoặc bong bóng trò chuyện, nếu cuộc trò chuyện trước đó đã được tạo bong bóng trò chuyện) và một lần nhấn vào con nháy sẽ mở rộng các tin nhắn mới trên toàn bộ chiều dài cùng với danh sách tuỳ chọn đầy đủ.
- Có các thao tác dành riêng cho một cuộc trò chuyện (một số thao tác xuất hiện khi nhấn và giữ):
- Đánh dấu cuộc trò chuyện này là ưu tiên
- Đưa cuộc trò chuyện này lên bong bóng trò chuyện (bubble) (chỉ xuất hiện nếu ứng dụng hỗ trợ bong bóng trò chuyện)
- Tắt tiếng thông báo cho cuộc trò chuyện này
- Đặt chế độ rung hoặc âm thanh tuỳ chỉnh cho cuộc trò chuyện này
Cuộc trò chuyện trong bong bóng trò chuyện
![Nếu một thông báo đáp ứng các yêu cầu của cuộc trò chuyện, thì nền tảng sẽ cho thông báo đó xuất hiện dưới dạng bong bóng trò chuyện trên ngăn thông báo.](https://developer.android.google.cn/static/images/guide/topics/ui/conversations-bubble.gif?authuser=9&hl=vi)
Kể từ Android 11, bạn có thể bắt đầu sử dụng Bong bóng trò chuyện trên thông báo trong phần Cuộc trò chuyện. Chỉ các thông báo có lối tắt được liên kết mới có thể chuyển sang bong bóng trò chuyện. Các cuộc trò chuyện sẽ tự động chuyển sang dạng bong bóng nếu được đánh dấu là quan trọng hoặc được đặt thành bong bóng trong ngăn thông báo.
Lối tắt cuộc trò chuyện
Phím tắt đến các cuộc trò chuyện xuất hiện trong trình chạy và bên cạnh phím tắt dài hạn cho mục đích chia sẻ trên trang chia sẻ nội dung.
Nguyên tắc đối với API
Phần này mô tả các API dùng để thêm tính năng hỗ trợ trong ứng dụng cho không gian do hệ thống cung cấp, nơi cho thấy mọi người và cuộc trò chuyện.
Lối tắt cho cuộc trò chuyện
Để tham gia sáng kiến xoay quanh cuộc trò chuyện này, các ứng dụng cần cung cấp cho hệ thống lối tắt dài hạn. Bạn nên sử dụng các lối tắt chia sẻ dài hạn. Nếu cần thì bạn có thể sử dụng lối tắt động trong Android 11. Tuy nhiên, có thể sau này chúng tôi sẽ loại bỏ tuỳ chọn này.
Để phát hành một phím tắt cho cuộc trò chuyện, hãy gọi các phương thức ShortcutManagerCompat
, setDynamicShortcuts()
, addDynamicShortcuts()
hoặc pushDynamicShortcut()
(các phương thức này tự động quản lý giới hạn về phím tắt cho nhà phát triển). Phím tắt này phải tồn tại dài hạn và có dữ liệu Person
đính kèm cho một hoặc nhiều người, xác định những người tham gia khác trong cuộc trò chuyện. Bạn cũng nên đặt LocusIdCompat
.
Nếu một cuộc trò chuyện không còn tồn tại, thì ứng dụng có thể xoá phím tắt bằng removeLongLivedShortcuts()
. Thao tác này sẽ khiến hệ thống xoá tất cả dữ liệu liên quan đến cuộc trò chuyện đó.
Mặc dù có thể xoá lối tắt, nhưng ứng dụng không nên xoá lối tắt đã lưu vào bộ nhớ đệm, trừ trường hợp thực sự cần thiết. Lối tắt có thể được lưu vào bộ nhớ đệm vì người dùng đã tương tác với lối tắt đó nhằm thay đổi trải nghiệm của họ, và việc xoá lối tắt sẽ huỷ các thay đổi đó, gây phiền hà cho người dùng.
Thông báo về cuộc trò chuyện
Một thông báo được coi là thông báo cuộc trò chuyện nếu các điều sau đây đúng:
Thông báo sử dụng
MessagingStyle
.(Chỉ khi ứng dụng nhắm đến Android 11 trở lên) Thông báo sẽ liên kết với một lối tắt chia sẻ đã lưu vào bộ nhớ đệm hoặc lối tắt động dài hạn. Thông báo có thể thiết lập mối liên kết này bằng cách gọi
setShortcutId()
hoặcsetShortcutInfo()
. Nếu ứng dụng nhắm mục tiêu Android 10 trở xuống, thì bạn không cần liên kết thông báo với lối tắt như đã thảo luận trong phần tuỳ chọn dự phòng.Người dùng chưa giảm hạng cuộc trò chuyện trong phần cuộc trò chuyện qua chế độ cài đặt kênh thông báo, tại thời điểm đăng bài.
Sử dụng LocusIdCompat
Trí thông minh trên thiết bị xác định các cuộc trò chuyện mà người dùng có nhiều khả năng quan tâm nhất. Trong đó, các tín hiệu quan trọng nhất là thời gian gần nhất và tần suất của các phiên trò chuyện trong mỗi cuộc trò chuyện. Hệ thống nắm được các hoạt động tương tác trong một cuộc trò chuyện qua lối tắt Trình chạy hoặc trong thông báo nếu chúng được gắn thẻ đúng cách. Tuy nhiên, hệ thống sẽ không biết các cuộc trò chuyện đã diễn ra hoàn toàn trong ứng dụng, trừ trường hợp các hoạt động tương tác đó cũng được gắn thẻ. Do đó, bạn nên đính kèm LocusIdCompat
vào lối tắt và chú thích mảnh hoặc hoạt động trong ứng dụng bằng LocusIdCompat
được liên kết. Hãy sử dụng LocusIdCompat
để cho phép hệ thống đề xuất xếp hạng cuộc trò chuyện một cách chính xác cũng như để hệ thống cho thấy thời gian chính xác của lượt tương tác mới nhất của người dùng (bao gồm cả hoạt động tương tác trong ứng dụng) với một cuộc trò chuyện. Nếu bạn sử dụng setShortcutInfo()
để liên kết cuộc trò chuyện với một lối tắt, thì hệ thống cuộc trò chuyện sẽ tự động đính kèm LocusIdCompat
thích hợp.
Yêu cầu về không gian trò chuyện đối với ứng dụng nhắm đến Android 10 trở xuống
Nếu một ứng dụng không nhắm đến Android 11, thì thông báo của ứng dụng vẫn có thể xuất hiện trên không gian trò chuyện. Tuy nhiên, ứng dụng vẫn phải đáp ứng một số yêu cầu nhất định. Phần này mô tả các yêu cầu đối với những ứng dụng như vậy cũng như hành vi dự phòng nếu ứng dụng không đáp ứng các yêu cầu này.
Yêu cầu cốt lõi để tham gia không gian nhắn tin là ứng dụng phải triển khai các thông báo MessagingStyle
, đồng thời các thông báo này phải tham chiếu đến một lối tắt dài hạn trên thông báo được phát hành tại thời điểm đăng thông báo. Các thông báo đáp ứng các yêu cầu này sẽ xuất hiện trong không gian trò chuyện bằng hành vi này:
- Thông báo xuất hiện ở kiểu cuộc trò chuyện (conversation style)
- Nút Bubble (bong bóng trò chuyện) được cung cấp nếu triển khai.
- Các chức năng cụ thể cho cuộc trò chuyện được cung cấp cùng dòng
Nếu thông báo không đáp ứng các yêu cầu này, thì nền tảng sẽ sử dụng các tuỳ chọn dự phòng để định dạng thông báo đó. Nếu đáp ứng các yêu cầu của một trong hai trường hợp dự phòng, thì thông báo sẽ xuất hiện trong không gian trò chuyện qua định dạng đặc biệt. Nếu không đủ điều kiện cho tuỳ chọn dự phòng thì thông báo sẽ không xuất hiện trong không gian trò chuyện.
Dự phòng: Sử dụng MessagingStyle nhưng không cung cấp lối tắt
Nếu ứng dụng nhắm đến Android 10 trở xuống và một thông báo sử dụng MessagingStyle
nhưng không liên kết thông báo đó với một lối tắt, thì thông báo đó sẽ xuất hiện trong không gian trò chuyện bằng hành vi sau:
- Thông báo xuất hiện ở kiểu cuộc trò chuyện (conversation style)
- Không có nút bong bóng trò chuyện
- Không cung cấp cùng dòng các chức năng cụ thể cho cuộc trò chuyện
Dự phòng: Không sử dụng MessagingStyle, nhưng ứng dụng đó là ứng dụng nhắn tin được công nhận
Nếu thông báo không sử dụng MessagingStyle
nhưng ứng dụng được nền tảng nhận dạng là ứng dụng nhắn tin, đồng thời tham số category
của thông báo được đặt thành msg
, thì thông báo sẽ xuất hiện trong không gian trò chuyện bằng hành vi sau:
- Thông báo xuất hiện ở kiểu cũ phiên bản Android trước 11
- Không có nút bong bóng trò chuyện
- Không cung cấp cùng dòng các chức năng cụ thể cho cuộc trò chuyện
Hướng dẫn, cách sử dụng và kiểm thử
Phần này đưa ra hướng dẫn chung về cách sử dụng và kiểm thử các tính năng liên quan đến cuộc trò chuyện.
Khi nào nên dùng cuộc trò chuyện?
Các thông báo và lối tắt liên quan đến cuộc trò chuyện được dùng để cải thiện trải nghiệm người dùng trong cuộc trò chuyện theo thời gian thực. Ví dụ: tin nhắn SMS, tin nhắn trò chuyện và cuộc gọi điện thoại là các cuộc trò chuyện theo thời gian thực khi người dùng muốn giao tiếp nhanh chóng. Người dùng không có kỳ vọng việc có email hay các hoạt động không liên quan đến cuộc trò chuyện.
Chúng tôi cung cấp cho người dùng khả năng xoá một cuộc trò chuyện cụ thể khỏi phần cuộc trò chuyện nếu họ cảm thấy cuộc trò chuyện đó không ở đúng chỗ.
Các phương pháp hay nhất
Để tăng mức độ tương tác và giúp người dùng tương tác với người khác cũng như với các cuộc trò chuyện liên quan đến ứng dụng của bạn một cách dễ dàng hơn, bạn nên áp dụng các phương pháp hay nhất sau đây.
- Để đảm bảo các cuộc gọi nhỡ xuất hiện trong ngăn cuộc trò chuyện ưu tiên và xuất hiện đúng cách trong tiện ích chuyển đổi, hãy định dạng thông báo cho cuộc gọi nhỡ thành
conversations
và đặt một danh mục thànhCATEGORY_MISSED_CALL
. - Cung cấp hình đại diện chất lượng cao (104dp) cho người dùng; nếu không, hệ thống sẽ sử dụng tên viết tắt của người dùng – một trải nghiệm không hấp dẫn bằng.
- Đừng
cancel
thông báo về cuộc trò chuyện trước khi người dùng thấy tin nhắn tương ứng. Có thể kể đến một ví dụ là huỷ thông báo khi mở ứng dụng trong một chế độ xem mà người dùng không xem hoặc xử lý được thông báo. Nếu người dùng không có cơ hội đọc hoặc xử lý tin nhắn, thì thông báo bị huỷ và bong bóng trò chuyện liên kết của thông báo đó sẽ bị xoá, dẫn đến việc mất ngữ cảnh cuộc trò chuyện. - Cung cấp một URI
data
cho siêu dữ liệu liên quan đến MIME liên kết với tin nhắn, nhằm cung cấp cho bạn tuỳ chọn cung cấp trải nghiệm đa dạng hơn trong thông báo. - Sử dụng
Android 12 status
API để giúp tiện ích trò chuyện hấp dẫn hơn. - Áp dụng các phương pháp hay nhất sau đây cho lối tắt cuộc trò chuyện.
- Phát hành lối tắt cho các tin nhắn đến và đi trong ứng dụng không đẩy thông báo. Tin nhắn đến và đi cho cùng một cuộc trò chuyện phải có cùng một mã phím tắt. Sử dụng
pushDynamicShortcut()
để phát hành lối tắt và báo cáo mức sử dụng. - Để tránh việc vô tình cắt hình đại diện của lối tắt, hãy cung cấp
AdaptiveIconDrawable
cho biểu tượng lối tắt. Hãy xem nội dung Cung cấp ảnh lối tắt để tìm hiểu thêm. - Để giúp hệ thống quảng bá lối tắt của bạn, hãy làm theo các nguyên tắc để có thứ hạng cao nhất. Lối tắt của bạn được xếp hạng trên nhiều nền tảng hệ thống, bao gồm cả trang chia sẻ nội dung trong Android nếu đó là lối tắt chia sẻ.
- Đảm bảo rằng lối tắt cuộc trò chuyện
intents
trực tiếp mở ra cuộc trò chuyện hiện tại. - Sử dụng các thư viện khả năng tương thích để đặt các lối tắt một cách thuận tiện khi có liên quan đến
conversation
.
- Phát hành lối tắt cho các tin nhắn đến và đi trong ứng dụng không đẩy thông báo. Tin nhắn đến và đi cho cùng một cuộc trò chuyện phải có cùng một mã phím tắt. Sử dụng
Kiểm thử lối tắt và thông báo về cuộc trò chuyện
![Thao tác nhấn và giữ một cuộc trò chuyện mở ra một trình đơn chứa các thao tác liên quan đến cuộc trò chuyện.](https://developer.android.google.cn/static/images/guide/topics/ui/conversations-testing.png?authuser=9&hl=vi)
Nếu bạn tuân theo nguyên tắc về không gian trò chuyện, thì các cuộc trò chuyện sẽ tự động xuất hiện trong không gian trò chuyện. Bạn có thể xác minh rằng lối tắt được tích hợp đúng cách bằng cách nhấn và giữ thông báo. Nếu bạn thực hiện thao tác tích hợp đúng cách, thì giao diện người dùng sẽ cho thấy các hành động liên quan đến cuộc trò chuyện. Nếu thông báo không được liên kết với lối tắt, thì giao diện người dùng sẽ đưa ra văn bản cho biết ứng dụng không hỗ trợ các tính năng liên quan đến cuộc trò chuyện.
Lối tắt đã thêm sẽ xuất hiện khi bạn nhấn và giữ trình chạy ứng dụng. Hãy nhớ kiểm thử để đảm bảo các lối tắt sẽ đưa bạn đến đúng vị trí trong ứng dụng.
Lối tắt chia sẻ đã thêm sẽ xuất hiện trong hàng chia sẻ trực tiếp của trang chia sẻ nội dung khi bạn chia sẻ nội dung mà lối tắt chia sẻ của bạn có thể nhận được.
Tiện ích trò chuyện
![Các cuộc trò chuyện xuất hiện trong tiện ích trò chuyện](https://developer.android.google.cn/static/images/guide/topics/ui/conversation-widgets.png?authuser=9&hl=vi)
Trong Android 12, tính năng Tiện ích trò chuyện (Conversation Widget) được xây dựng dựa trên tính năng về con người và hoạt động trò chuyện (people and conversations) ra mắt trong Android 11 bằng cách cho phép ứng dụng đưa ra trạng thái cuộc trò chuyện trong tiện ích trò chuyện.
Tiện ích trò chuyện thúc đẩy người dùng tương tác bằng cách cho phép họ dễ dàng mở các cuộc trò chuyện trên màn hình chính. Các tiện ích này là các lối tắt nâng cao cho phép người dùng quay lại cuộc trò chuyện một cách hiệu quả trong khi cho thấy đoạn trích về trạng thái cuộc trò chuyện của họ hoặc các thông tin liên quan khác.
Đảm bảo rằng ứng dụng hỗ trợ tiện ích trò chuyện
Để xác nhận rằng ứng dụng của bạn hỗ trợ các tiện ích trò chuyện, bạn cần có ít nhất 2 thiết bị Android (đều chạy Android 12) và hai tài khoản người dùng (mỗi tài khoản trên một thiết bị) để trao đổi tin nhắn. Trong quy trình này, chúng tôi sẽ gọi các tài khoản đó là "người dùng A" và "người dùng B".
![Giao diện người dùng của bộ chọn tiện ích để thêm tiện ích trò chuyện mới](https://developer.android.google.cn/static/images/guide/topics/ui/widget-picker-conversation.png?authuser=9&hl=vi)
Hãy hoàn tất các bước sau:
- Trên thiết bị của người dùng A, hãy nhấn và giữ trình chạy. Trong bộ chọn tiện ích, hãy nhấn vào một tiện ích mới cho cuộc trò chuyện như trong hình 2.
- Kéo tiện ích vào màn hình chính. Bạn có thể chọn một danh sách cuộc trò chuyện đang diễn ra hoặc cuộc trò chuyện gần đây trên ứng dụng của người dùng A.
- Bây giờ, trên thiết bị của người dùng B, hãy gửi một tin nhắn thử nghiệm cho người dùng A.
- Trở lại thiết bị của người dùng A, hãy xác minh rằng tiện ích này đã được cập nhật để phản ánh thông báo về tin nhắn của người dùng B.
- Không bắt buộc: cả người dùng A và người dùng B đặt cuộc trò chuyện thành các giá trị trạng thái để đảm bảo rằng tiện ích của họ phản ánh các giá trị đó đúng cách. Để biết danh sách giá trị trạng thái, hãy xem ConversationStatus.