Thông báo trên Wear OS

Thông báo trên đồng hồ sử dụng cùng các API và có cấu trúc giống như thông báo trên điện thoại.

Thông báo có thể xuất hiện trên đồng hồ theo hai cách:

  1. Ứng dụng dành cho thiết bị di động tạo một thông báo và hệ thống tự động kết nối thông báo đó với đồng hồ.
  2. Một ứng dụng dành cho thiết bị đeo sẽ tạo một thông báo.

Trong cả hai trường hợp, hãy sử dụng lớp NotificationCompat.Builder để tạo thông báo. Khi bạn tạo thông báo bằng lớp trình tạo, hệ thống sẽ đảm nhận việc hiển thị thông báo đúng cách. Ví dụ: khi bạn thông báo từ ứng dụng dành cho thiết bị di động, mỗi thông báo sẽ xuất hiện dưới dạng một thẻ trên Bảng thông báo.

Xem ví dụ sau để xem cách hiện thông báo. notification-cards

Hình 1. Cùng một thông báo xuất hiện trên điện thoại và trên đồng hồ.

Sử dụng một trong các lớp con NotificationCompat.Style để có kết quả tốt nhất.

Lưu ý: Việc sử dụng RemoteViews sẽ xoá các thông báo của bố cục tuỳ chỉnh, trong khi đó thiết bị đeo chỉ cho thấy văn bản và biểu tượng.

Các thông báo đề xuất cho thiết bị đeo

Hãy dùng thông báo có thể mở rộng làm điểm xuất phát cho toàn bộ thông báo, vì chúng là một cách hay để thu hút người dùng thiết bị đeo. Trạng thái thu gọn sẽ xuất hiện trong khay thông báo để mang đến trải nghiệm ngắn gọn và dễ lướt xem. Nếu người dùng nhấn vào thì thông báo đó sẽ mở rộng để cho thấy một trải nghiệm sống động và cuộn được cho các nội dung và hành động khác.

Bạn có thể Tạo thông báo có thể mở rộng theo cách tương tự như trên thiết bị di động, dùng lớp con NotificationCompat.Style bất kỳ. Ví dụ: một thông báo chuẩn sử dụng NotificationCompat.MessagingStyle sẽ có dạng như sau: expandable-notification

Hình 2. Ví dụ về thông báo MessagingStyle trên Wear OS.

Bạn có thể thấy thông báo có nhiều hành động được xếp chồng ở cuối trạng thái mở rộng.

Để xem ví dụ về NotificationCompat.BigPictureStyle, NotificationCompat.BigTextStyle, NotificationCompat.InboxStyleNotificationCompat.MessagingStyle, hãy tham khảo Mẫu thông báo trên GitHub.

Mẹo: Nếu thông báo có một thao tác "trả lời" (chẳng hạn như đối với ứng dụng nhắn tin) thì bạn có thể cải thiện hoạt động của thông báo. Ví dụ: bạn có thể bật tính năng trả lời bằng giọng nói ngay trên phản hồi bằng văn bản xác định trước cho thiết bị đeo bằng setChoices(). Để biết thêm thông tin, hãy đọc phần Thêm nút trả lời.

Tránh thông báo trùng lặp

Theo mặc định, thông báo sẽ được kết nối từ ứng dụng điện thoại đồng hành sang đồng hồ bất kỳ đã ghép nối. Đây là một lựa chọn phù hợp nếu bạn chưa cài đặt ứng dụng cho thiết bị đeo.

Tuy nhiên, nếu bạn tạo một ứng dụng đồng hồ độc lập và một ứng dụng điện thoại đồng hành thì các ứng dụng đó sẽ tạo các thông báo trùng lặp.

Wear OS cung cấp cách dừng các thông báo trùng lặp bằng Bridging API (API Cầu nối). Để biết thêm thông tin, hãy đọc Các tuỳ chọn cầu nối để nhận thông báo.

Thêm tính năng dành riêng cho thiết bị đeo vào một thông báo

Nếu cần thêm các tính năng dành riêng cho thiết bị đeo vào một thông báo, chẳng hạn như ẩn một biểu tượng ứng dụng khỏi thông báo trên thiết bị đeo hoặc cho phép người dùng ra lệnh phản hồi bằng văn bản sử dụng tính năng nhập bằng giọng nói, thì bạn có thể dùng NotificationCompat.WearableExtender để chỉ định các tuỳ chọn. Để sử dụng API này, hãy làm như sau:

  1. Tạo một thực thể của WearableExtender, đặt các tuỳ chọn dành riêng cho thiết bị đeo cho thông báo đó.
  2. Tạo một thực thể của NotificationCompat.Builder, thiết lập các thuộc tính mong muốn cho thông báo của bạn như mô tả ở phần phía trên trong hướng dẫn này.
  3. Gọi extend() trên thông báo rồi truyền vào WearableExtender. Thao tác này sẽ áp dụng các tuỳ chọn cho thiết bị đeo đối với thông báo.
  4. Gọi build() để tạo thông báo.

Lưu ý: Nếu bạn sử dụng NotificationManager của khung, một số tính năng của NotificationCompat.WearableExtender sẽ không hoạt động. Vì vậy, hãy nhớ sử dụng NotificationCompat.

Bạn có thể đồng bộ hoá thao tác đóng hoặc huỷ thông báo trên các thiết bị của người dùng. Để đồng bộ hoá một thao tác đóng, hãy sử dụng phương thức setDismissalId(). Đối với mỗi thông báo, hãy truyền một mã nhận dạng duy nhất trên tổng thể dưới dạng chuỗi khi bạn gọi setDismissalId(). Khi thông báo bị đóng, mọi thông báo khác có cùng mã đóng sẽ bị đóng trên đồng hồ và trên điện thoại đồng hành. Để truy xuất mã đóng, hãy sử dụng getDismissalId().

Chỉ định các thao tác chỉ dành cho thiết bị đeo

Nếu bạn muốn có nhiều thao tác trên đồng hồ và điện thoại, hãy dùng WearableExtender.addAction(). Sau khi bạn thêm một thao tác bằng phương thức này, thiết bị đeo sẽ không hiển thị bất kỳ thao tác nào khác được thêm bằng NotificationCompat.Builder.addAction(). Những thao tác thêm vào bằng WearableExtender.addAction() chỉ xuất hiện trên thiết bị đeo chứ không xuất hiện trên điện thoại.