Thông báo là một tin nhắn mà Android hiển thị bên ngoài giao diện người dùng của ứng dụng để cung cấp cho người dùng lời nhắc, thông tin liên lạc từ những người khác hoặc thông tin kịp thời khác từ ứng dụng. Người dùng có thể nhấn vào thông báo đó để mở ứng dụng của bạn hoặc thực hiện hành động ngay trong thông báo.
Trang này cung cấp thông tin tổng quan về vị trí xuất hiện thông báo và các tính năng có sẵn. Để bắt đầu tạo thông báo, hãy đọc bài viết Tạo thông báo.
Để biết thêm thông tin về các mẫu tương tác và thiết kế thông báo, vui lòng xem tài liệu Hướng dẫn thiết kế thông báo.
Giao diện trên thiết bị
Thông báo tự động hiển thị cho người dùng ở nhiều vị trí và định dạng. Thông báo xuất hiện dưới dạng biểu tượng trong thanh trạng thái, mục nhập có thông tin chi tiết hơn trong ngăn thông báo và huy hiệu trên biểu tượng của ứng dụng.
Hành vi trên nhiều thiết bị
Theo mặc định, thông báo cũng xuất hiện trên các thiết bị đeo được ghép nối. Trong những trường hợp nội dung thông báo chỉ liên quan đến thiết bị nguồn, hãy sử dụng
setLocalOnly(). Ví dụ: thông báo xác nhận rằng quá trình tải nội dung nghe nhìn đã hoàn tất. Để biết thêm hướng dẫn cụ thể về thông báo Wear OS, hãy xem
Thông báo Wear OS hướng dẫn.
Thanh trạng thái và ngăn thông báo
Khi bạn đưa ra một thông báo, trước tiên, thông báo sẽ xuất hiện dưới dạng biểu tượng trong thanh trạng thái.
Hình 1. Biểu tượng thông báo xuất hiện ở bên trái thanh trạng thái.
Người dùng có thể vuốt xuống trên thanh trạng thái để mở ngăn thông báo, nơi họ có thể xem thêm thông tin và thực hiện các hành động với thông báo.
Hình 2. Thông báo trong ngăn thông báo.
Người dùng có thể kéo một thông báo trong ngăn xuống để hiển thị thành phần hiển thị mở rộng. Thao tác này sẽ hiển thị thêm nội dung và các nút hành động, nếu có. Kể từ Android 13, chế độ hiển thị mở rộng này sẽ bao gồm một nút cho phép người dùng dừng ứng dụng có các dịch vụ đang chạy trên nền trước.
Một thông báo vẫn sẽ hiển thị trong ngăn thông báo cho đến khi bị người dùng hoặc ứng dụng loại bỏ.
Thông báo quan trọng
Kể từ Android 5.0, thông báo có thể hiển thị nhanh trong một cửa sổ nổi gọi là thông báo quan trọng. Hành vi này thường dành cho những thông báo quan trọng mà người dùng cần biết ngay lập tức và chỉ xuất hiện nếu thiết bị đã được mở khoá.
Hình 3. Một thông báo quan trọng xuất hiện phía trước ứng dụng trên nền trước.
Thông báo quan trọng sẽ xuất hiện khi ứng dụng của bạn gửi thông báo. Thông báo này sẽ biến mất sau một khoảng thời gian ngắn. Tuy nhiên, thông báo này vẫn sẽ hiển thị trong ngăn thông báo như thường lệ.
Sau đây là các trường hợp có thể kích hoạt thông báo quan trọng:
Hoạt động của người dùng hiện ở chế độ toàn màn hình, chẳng hạn như khi ứng dụng sử dụng
fullScreenIntent.Thông báo có mức độ ưu tiên cao và sử dụng nhạc chuông hoặc chế độ rung trên các thiết bị chạy Android 7.1 (cấp độ API 25) trở xuống.
Kênh thông báo có mức độ quan trọng cao trên các thiết bị chạy Android 8.0 (cấp độ API 26) trở lên.
Màn hình khoá
Kể từ Android 5.0, thông báo có thể xuất hiện trên màn hình khóa.
Bạn có thể lập trình để xác định xem thông báo do ứng dụng của bạn đăng có hiển thị trên màn hình khoá bảo mật hay không và nếu có thì mức độ hiển thị chi tiết là bao nhiêu.
Người dùng có thể sử dụng các chế độ cài đặt hệ thống để chọn mức độ hiển thị chi tiết trong thông báo trên màn hình khoá hoặc để tắt tất cả các thông báo trên màn hình khoá. Kể từ Android 8.0, người dùng có thể tắt hoặc bật thông báo trên màn hình khoá cho từng kênh thông báo.
Hình 4. Thông báo trên màn hình khoá có nội dung nhạy cảm bị ẩn.
Để tìm hiểu thêm, hãy xem bài viết Đặt chế độ hiển thị màn hình khoá.
Huy hiệu biểu tượng ứng dụng
Trong các trình chạy được hỗ trợ trên thiết bị chạy Android 8.0 (cấp độ API 26) trở lên, biểu tượng ứng dụng biểu thị các thông báo mới bằng một huy hiệu có màu (còn gọi là dấu chấm thông báo) trên biểu tượng trình chạy ứng dụng tương ứng.
Người dùng có thể chạm và giữ biểu tượng ứng dụng để xem các thông báo cho ứng dụng đó. Người dùng có thể đóng hoặc thao tác trên các thông báo từ trình đơn đó, tương tự như ngăn thông báo.
Hình 5. Huy hiệu thông báo và trình đơn chạm và giữ.
Để tìm hiểu thêm về cách hoạt động của huy hiệu, hãy đọc bài viết Sửa đổi huy hiệu thông báo.
Thiết bị Wear OS
Nếu người dùng có thiết bị Wear OS được ghép nối, tất cả thông báo của bạn sẽ tự động xuất trên thiết bị đó, bao gồm cả các nút hành động và thông tin chi tiết có thể mở rộng.
Bạn có thể nâng cao trải nghiệm bằng cách tuỳ chỉnh giao diện của thông báo trên các thiết bị đeo và đưa ra những hành động khác nhau, bao gồm cả câu trả lời đề xuất và câu trả lời nhập bằng giọng nói. Để biết thêm thông tin, hãy xem cách thêm các tính năng dành riêng cho thiết bị đeo vào thông báo.
Hình 6. Thông báo tự động xuất hiện trên thiết bị Wear OS được ghép nối.
Phân tích thông báo
Thiết kế của thông báo do các mẫu hệ thống quyết định và ứng dụng của bạn xác định nội dung cho từng phần của mẫu. Một số thông tin của thông báo chỉ xuất hiện ở thành phần hiển thị mở rộng.
Hình 7. Thông báo có thông tin cơ bản.
Bên dưới là các phần thường gặp nhất của một thông báo như chỉ ra trong hình 7:
- Biểu tượng nhỏ: bắt buộc; đặt bằng
setSmallIcon(). - Tên ứng dụng: do hệ thống cung cấp.
- Dấu thời gian: do hệ thống cung cấp, nhưng bạn có thể ghi đè bằng
setWhen()hoặc ẩn bằngsetShowWhen(false). - Biểu tượng lớn: không bắt buộc; thường chỉ dùng cho ảnh liên hệ.
Không dùng cho biểu tượng ứng dụng. Đặt bằng
setLargeIcon(). - Tiêu đề: không bắt buộc; đặt bằng
setContentTitle(). - Văn bản: không bắt buộc; đặt bằng
setContentText().
Bạn nên sử dụng các mẫu hệ thống để đảm bảo khả năng tương thích thiết kế phù hợp trên tất cả các thiết bị. Nếu cần, bạn có thể tạo một bố cục thông báo tuỳ chỉnh.
Để biết thêm thông tin về cách tạo thông báo có các tính năng này và nhiều tính năng khác, hãy đọc bài viết Tạo thông báo.
Hành động thông qua thông báo
Mặc dù không bắt buộc, nhưng khi người dùng nhấn vào thông báo, mọi thông báo nên mở ra một hoạt động thích hợp trong ứng dụng. Ngoài hành động mặc định này trong thông báo, bạn có thể thêm các nút hành động trong thông báo để hoàn tất một nhiệm vụ liên quan đến ứng dụng (thường không phải là mở một hoạt động), như trong hình 8.
Hình 8. Một thông báo có các nút hành động.
Kể từ Android 7.0 (cấp độ API 24), bạn có thể thêm một hành động để trả lời tin nhắn hoặc để nhập văn bản khác ngay trong thông báo.
Kể từ Android 10 (cấp độ API 29), nền tảng có thể tự động tạo các nút hành động bằng các hành động dựa trên ý định đề xuất.
Bạn có thể xem thông tin giải thích kỹ hơn về cách thêm các nút hành động trong bài viết Tạo thông báo.
Yêu cầu thiết bị đã mở khoá
Người dùng có thể thấy các hành động thông báo trên màn hình khoá của thiết bị. Nếu một hành động thông báo nhất định khiến ứng dụng khởi chạy một hoạt động hoặc gửi một tin nhắn trả lời trực tiếp, thì người dùng phải mở khoá thiết bị trước khi ứng dụng có thể gọi hành động thông báo đó.
Trên Android 12 (cấp độ API 31) trở lên, bạn có thể định cấu hình một hành động thông báo sao cho thiết bị phải được mở khoá để ứng dụng gọi ra hành động đó, bất kể hành động đó khởi chạy quy trình làm việc là gì. Tuỳ chọn này sẽ thêm một lớp bảo mật bổ sung cho thông báo trên các thiết bị bị khoá.
Để yêu cầu thiết bị được mở khoá trước khi ứng dụng của bạn gọi ra một hành động thông báo nhất định, hãy truyền true vào setAuthenticationRequired() khi tạo hành động thông báo, như thể hiện trong đoạn mã sau đây:
Kotlin
val moreSecureNotification = Notification.Action.Builder(...) // This notification always requests authentication when invoked // from a lock screen. .setAuthenticationRequired(true) .build()
Java
Notification moreSecureNotification = new Notification.Action.Builder(...) // This notification always requests authentication when invoked // from a lock screen. .setAuthenticationRequired(true) .build();
Thông báo có thể mở rộng
Theo mặc định, nội dung văn bản của thông báo sẽ bị cắt bớt sao cho vừa đủ trong một dòng. Nếu muốn nội dung thông báo dài hơn, bạn có thể cho phép một vùng văn bản lớn hơn, có thể mở rộng bằng cách áp dụng mẫu bổ sung, như trong hình 9.
Hình 9. Một thông báo có thể mở rộng cho văn bản lớn.
Bạn cũng có thể tạo một thông báo có thể mở rộng theo kiểu hộp thư đến, có hình ảnh, cuộc trò chuyện hoặc có các bộ điều khiển phát lại nội dung nghe nhìn. Để biết thêm thông tin, hãy đọc bài viết Tạo thông báo có thể mở rộng.
Cập nhật thông báo và nhóm thông báo
Trong trường hợp có thêm thông tin cập nhật, để tránh làm phiền người dùng do gửi nhiều thông báo hoặc do gửi thông báo không cần thiết, bạn nên cập nhật thông báo hiện có thay vì gửi thông báo mới hoặc sử dụng thông báo kiểu hộp thư đến để hiển thị thông tin cập nhật cho cuộc trò chuyện.
Tuy nhiên, nếu cần đưa ra nhiều thông báo, bạn nên xem xét việc nhóm các thông báo riêng biệt đó thành một nhóm (có thể dùng tính năng này trên Android 7.0 trở lên).
Một nhóm thông báo cho phép bạn thu gọn nhiều thông báo vào một bài đăng trong ngăn thông báo, với một đoạn tóm tắt. Người dùng có thể mở rộng dần nhóm thông báo và từng thông báo trong nhóm đó để xem thêm thông tin chi tiết, như trong hình 10.
Hình 10. Một nhóm thông báo được thu gọn và mở rộng.
Để tìm hiểu cách thêm thông báo vào một nhóm, hãy xem bài viết Tạo một nhóm thông báo.
Kênh thông báo
Kể từ Android 8.0 (cấp độ API 26), tất cả thông báo phải được chỉ định cho một kênh, nếu không thì thông báo sẽ không xuất hiện. Điều này cho phép người dùng tắt các kênh thông báo cụ thể của ứng dụng thay vì tắt tất cả các thông báo của ứng dụng. Người dùng có thể kiểm soát các tuỳ chọn hình ảnh và âm thanh cho từng kênh trong phần cài đặt hệ thống của Android, như trong hình 11. Ngoài ra, người dùng còn có thể chạm và giữ một thông báo để thay đổi cách hoạt động của kênh liên kết.
Trên các thiết bị chạy Android 7.1 (cấp độ API 25) trở xuống, người dùng chỉ có thể quản lý thông báo trên cơ sở từng ứng dụng một. Mỗi ứng dụng chỉ có 1 kênh trên Android 7.1 trở xuống.
Hình 11. Các chế độ cài đặt thông báo của ứng dụng Đồng hồ và một trong các kênh thông báo của ứng dụng đó.
Một ứng dụng có thể có các kênh riêng cho từng loại thông báo mà ứng dụng gửi. Một ứng dụng cũng có thể tạo các kênh thông báo tương ứng với lựa chọn của người dùng. Ví dụ: bạn có thể thiết lập các kênh thông báo riêng cho từng nhóm cuộc trò chuyện do người dùng tạo trong ứng dụng nhắn tin.
Kênh cũng là nơi bạn chỉ định mức độ quan trọng cho thông báo của mình trên Android 8.0 trở lên, vì vậy, tất cả thông báo được đăng lên cùng một kênh thông báo đều có cùng một hành vi. Điều này được mô tả trong phần sau.
Để biết thêm thông tin, hãy xem bài viết Tạo và quản lý kênh thông báo.
Mức độ quan trọng của thông báo
Android dựa vào mức độ quan trọng của thông báo để xác định xem thông báo nên làm gián đoạn người dùng ở mức nào (hình ảnh và âm thanh). Thông báo càng quan trọng thì mức độ gián đoạn càng cao.
Trên Android
7.1 (cấp độ API 25) trở xuống, mức độ quan trọng của thông báo được xác định theo
thông báo's
priority.
Trên Android 8.0 (cấp độ API 26) trở lên, mức độ quan trọng của thông báo được xác định theo importance của kênh mà thông báo đăng lên. Người dùng có thể thay đổi mức độ quan trọng của một kênh thông báo trong phần cài đặt hệ thống, như trong hình 12.
Hình 12. Người dùng có thể thay đổi mức độ quan trọng của từng kênh trên Android 8.0 trở lên.
Sau đây là các mức độ quan trọng có thể có và hành vi thông báo liên kết:
Khẩn cấp: thông báo xuất hiện dưới dạng thông báo quan trọng và có âm thanh.
Cao: có âm thanh.
Trung bình: không có âm thanh.
Thấp: không có âm thanh và không xuất hiện trong thanh trạng thái.
Bất kể mức độ quan trọng là gì, tất cả thông báo đều xuất hiện ở các vị trí không gây gián đoạn trong giao diện người dùng hệ thống, chẳng hạn như ở ngăn thông báo và dưới dạng huy hiệu trên biểu tượng trình chạy. Tuy nhiên, bạn có thể sửa đổi giao diện của huy hiệu thông báo.
Để biết thêm thông tin, hãy đọc bài viết về cách thiết lập mức độ quan trọng.
Chế độ Không làm phiền
Kể từ Android 5.0 (cấp độ API 21), người dùng có thể bật chế độ Không làm phiền, để tắt âm thanh và tiếng rung cho tất cả các thông báo. Thông báo vẫn xuất hiện trong giao diện người dùng hệ thống như thường lệ, trừ khi người dùng chỉ định khác.
Có 3 cấp độ trong chế độ Không làm phiền, đó là:
- Im lặng hoàn toàn: chặn tất cả âm thanh và tiếng rung, bao gồm cả báo thức, âm nhạc, video và trò chơi.
- Chỉ báo thức: chặn tất cả âm thanh và tiếng rung, ngoại trừ báo thức.
- Chỉ ưu tiên: người dùng có thể định cấu hình những danh mục nào trên toàn hệ thống có thể làm gián đoạn họ, chẳng hạn như chỉ báo thức, lời nhắc, sự kiện, cuộc gọi hoặc tin nhắn. Đối với tin nhắn và cuộc gọi, người dùng có thể lọc dựa trên người gửi hoặc người gọi, như trong hình 13.
Hình 13. Người dùng có thể cho phép thông báo dựa trên các danh mục toàn hệ thống (trái) và người gửi hoặc người gọi (phải).
Ngoài ra, trên Android 8.0 (cấp độ API 26) trở lên, người dùng có thể cho phép thông báo thông qua các danh mục dành riêng cho ứng dụng (còn gọi là kênh) bằng cách ghi đè Không làm phiền trên cơ sở từng kênh một. Ví dụ: một ứng dụng thanh toán có thể có các kênh thông báo liên quan đến việc rút tiền và gửi tiền. Người dùng có thể cho phép thông báo rút tiền, thông báo gửi tiền hoặc cả hai khi ở chế độ ưu tiên.
Trên các thiết bị chạy Android 7.1 (cấp độ API 25) trở xuống, người dùng có thể cho phép thông báo trên cơ sở từng ứng dụng một, thay vì trên cơ sở từng kênh một.
Để định cấu hình thông báo cho các chế độ cài đặt này của người dùng, bạn phải thiết lập danh mục trên toàn hệ thống.
Thông báo cho các dịch vụ trên nền trước
Bạn cần có thông báo khi ứng dụng của bạn đang chạy một dịch vụ ở nền trước—một Service chạy trong nền hoạt động lâu dài và đáng chú ý với người dùng, chẳng hạn như trình phát nội dung nghe nhìn. Bạn không thể đóng thông báo này như các thông báo khác. Để xoá thông báo này, bạn phải dừng dịch vụ hoặc loại bỏ dịch vụ khỏi trạng thái nền trước.
Để biết thêm thông tin, hãy đọc bài viết Dịch vụ ở nền trước. Ngoài ra, nếu bạn đang tạo một trình phát nội dung nghe nhìn , hãy đọc bài viết Phát nội dung nghe nhìn trong nền.
Hành vi thông báo
Android 16.0, cấp độ API 36
Thông báo hiện được tự động nhóm thay cho ứng dụng.
Các thông báo sau được tự động nhóm:
- Thông báo không có nội dung tóm tắt
- Dịch vụ thông báo không có thông báo con
- Thông báo có một hoặc một số ít thông báo con
Android 15.0, cấp độ API 35
Thời gian quan sát thêm
Android 15 giới thiệu tính năng giảm dần âm lượng thông báo nhằm cải thiện trải nghiệm của các thông báo đến liên tiếp. Tính năng này giảm giao diện, âm lượng và cường độ rung cho các thông báo lặp lại trong tối đa 2 phút.
Các thông báo quan trọng yêu cầu âm thanh và phản hồi xúc giác để thu hút sự chú ý không phải chịu tác động của tính năng hạ nhiệt. Người dùng có thể tắt tính năng giảm dần âm lượng thông báo trong phần Cài đặt.
Hình 9. Các chế độ cài đặt giảm dần âm lượng thông báo.
Sau đây là ví dụ về cách tìm chế độ cài đặt giảm dần âm lượng thông báo:
Kotlin
val intent = Intent(Settings.ACTION_MANAGE_ADAPTIVE_NOTIFICATIONS) val pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_IMMUTABLE)
Java
Intent intent = new Intent(Settings.ACTION_MANAGE_ADAPTIVE_NOTIFICATIONS) PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_IMMUTABLE)