Thông báo là nội dung 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ừ người khác hoặc kịp thời ra khỏi ứng dụng của bạn. Người dùng có thể nhấn vào thông báo đó để mở hoặc thực hiện hành động ngay trên 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ề thiết kế thông báo và các mẫu tương tác, hãy xem Thiết kế thông báo hướng dẫn.
Giao diện trên thiết bị
Thông báo tự động xuất hiện 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 trên thanh trạng thái, mục nhập 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. Thông báo cũng sẽ xuất hiện trên thiết bị đeo được ghép nối.
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 một biểu tượng trên thanh trạng thái.
Hình 1. Các biểu tượng thông báo xuất hiện ở bên trái trạng thái thanh.
Người dùng có thể vuốt xuống trên thanh trạng thái để mở ngăn thông báo, trong đó họ có thể xem thêm chi tiết và thao tác 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ó. Bắt đầu sau Trên Android 13, chế độ xem mở rộng này có một nút cho phép người dùng dừng một ứng dụng có nền trước đang chạy luôn miễn phí.
Một thông báo vẫn hiển thị trong ngăn thông báo cho đến khi bị đóng theo ứng dụng hoặc người dùng.
Thông báo quan trọng
Kể từ Android 5.0, thông báo có thể xuất hiện nhanh ở dạng có tên là thông báo quan trọng. Hành vi này thường dành cho các thông báo mà người dùng cần biết ngay lập tức và thông báo này 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. Nó sẽ biến mất sau một khoảng thời gian nhưng vẫn hiển thị trong ngăn thông báo dưới dạng thông thường.
Các điều kiện có thể kích hoạt thông báo quan trọng bao gồm:
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à bật nhạc chuông hoặc chế độ rung thiết bị chạy Android 7.1 (API cấp 25) trở xuống.
Kênh thông báo có tầm quan trọng cao trên các thiết bị chạy Android 8.0 (API cấp 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 khoá.
Bạn có thể lập trình để đặt 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 và nếu có thì mức độ chi tiết có thể nhìn thấy.
Người dùng có thể sử dụng các chế độ cài đặt hệ thống để chọn mức độ chi tiết hiển thị trong khoá thông báo trên màn hình hoặc để tắt mọi thông báo trên màn hình khoá. Bắt đầu bằng Trên 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á 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 phần Đặt màn hình khoá khả năng hiển thị.
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 (API cấp 26) trở lên, biểu tượng ứng dụng cho biết thông báo mới bằng một huy hiệu có màu được gọi là notification chấm trên biểu tượng trình chạy ứng dụng tương ứng.
Người dùng có thể chạm & 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ể loại bỏ hoặc hành động trên các thông báo từ trình đơn đó, tương tự như thông báo ngăn.
Hình 5. Huy hiệu thông báo và thao tác chạm và giữ trình đơn.
Để 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 thông báo huy hiệu.
Thiết bị Wear OS
Nếu người dùng có một thiết bị Wear OS được ghép nối, thì tất cả thông báo của bạn sẽ xuất hiện trên thiết bị đó tự động, bao gồm cả thông tin chi tiết có thể mở rộng và các nút hành độ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 thiết bị đeo và bằng cách đưa ra nhiều thao tác, bao gồm 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 tính năng dành riêng cho thiết bị đeo vào tài khoản thông báo.
Hình 6. Thông báo tự động xuất hiện trên Wear OS được ghép nối thiết bị.
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 và ứng dụng của bạn quyết định xác định nội dung cho từng phần của mẫu. Một số thông tin về chỉ xuất hiện ở chế độ xem mở rộng.
Hình 7. Một thông báo cung cấp thông tin cơ bản.
Dưới đây là các phần phổ biến nhất của một thông báo được thể hiện trong hình 7:
- Biểu tượng nhỏ: bắt buộc; thiết lập sử dụ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 cách sử dụng
setWhen()
hoặc ẩn thông tin đó bằng cách sử dụngsetShowWhen(false)
- Biểu tượng lớn: không bắt buộc; thường chỉ dùng cho ảnh liên hệ.
Đừng sử dụng tên này cho biểu tượng ứng dụng. Đặt bằng
setLargeIcon()
. - Tiêu đề: không bắt buộc; thiết lập sử dụng
setContentTitle()
. - Văn bản: không bắt buộc; thiết lập sử dụ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ả thiết bị. Nếu cần, bạn có thể tạo 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à thêm, 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 tốt nhất là bạn nên mở mọi thông báo một hoạt động ứng dụng thích hợp khi người dùng nhấn vào. Ngoài chế độ mặc định này hành động thông báo, bạn có thể thêm các nút hành động hoàn tất một hành động liên quan đến ứng dụng tác vụ từ thông báo (thường không cần mở hoạt động) dưới dạng như được minh hoạ 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 (API cấp 24), bạn có thể thêm một thao tác để trả lời tin nhắn hoặc nhập văn bản khác trực tiếp từ thông báo.
Kể từ Android 10 (API cấp 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.
Cách thêm các nút hành động được giải thích kỹ hơn trong phần 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 gửi thông báo khiến một ứng dụng khởi chạy một hoạt động hoặc gửi tin nhắn trả lời trực tiếp, 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 (API cấp 31) trở lên, bạn có thể định cấu hình một thao tác đối với thông báo sao cho thiết bị phải được mở khoá để ứng dụng gọi ra hành động đó, không bất kể hành động khởi chạy quy trình làm việc nào. Tùy chọn này thêm một lớp bảo mật cho các thông báo trên thiết bị bị khoá.
Để yêu cầu mở khoá thiết bị trước khi ứng dụng của bạn gọi một thông báo cụ thể
hành động, chuyển true
vào
setAuthenticationRequired()
khi tạo hành động thông báo, như minh hoạ trong đoạn mã sau:
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 sao cho vừa đủ trong một dòng. Nếu bạn muốn thông báo dài hơn, bạn có thể bật 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ư minh hoạ trong hình 9.
Hình 9. Một thông báo có thể mở rộng cho .
Bạn cũng có thể tạo thông báo có thể mở rộng bằng hình ảnh, theo kiểu hộp thư đến qua một cuộc trò chuyện hoặc qua bộ điều khiển chế độ phát 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
Để tránh hiển thị quá nhiều thông báo hoặc thông báo dư thừa cho người dùng khi bạn có cập nhật bổ sung, cập nhật một bản cập nhật hiện có thông báo thay vì so với tạo email mới hoặc sử dụng kiểu hộp thư đến thông báo để hiển thị cập nhật cuộc trò chuyện.
Tuy nhiên, nếu cần đưa ra nhiều thông báo, hãy cân nhắc việc nhóm các thông báo đó các thông báo riêng biệt thành một nhóm, có trên Android 7.0 trở lên.
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 có bả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 đó để biết thêm thông tin chi tiết, như được thể hiện 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 nhóm, hãy xem phần Tạo nhóm thông báo.
Kênh thông báo
Kể từ Android 8.0 (API cấp 26), mọi thông báo phải được gán cho một kênh hoặc chúng không xuất hiện. Điều này cho phép người dùng tắt thông báo cụ thể cho ứng dụng của bạn thay vì tắt tất cả thông báo. Người dùng có thể kiểm soát các tùy chọn hình ảnh và thính giác cho mỗi kênh từ hệ thống Android như minh hoạ trong Hình 11. Người dùng cũng có thể chạm và giữ thông báo để thay đổi hành vi của kênh liên quan.
Trên các thiết bị chạy Android 7.1 (API cấp 25) trở xuống, người dùng có thể quản lý thông báo trên mỗi ứng dụng. Mỗi ứng dụng chỉ có một kênh một cách hiệu quả trên Android 7.1 trở xuống.
Hình 11. Chế độ cài đặt thông báo cho ứng dụng Đồng hồ và một trong các kênh 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 đi. Ứng dụng cũng có thể tạo các kênh thông báo tương ứng với các lựa chọn của người dùng. Ví dụ: bạn có thể thiết lập kênh thông báo riêng cho mỗi nhóm trò chuyện do người dùng tạo trong một ứ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 trên Android 8.0 trở lên, nên mọi thông báo được đăng lên cùng một kênh thông báo có cùng 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ý thông báo kênh.
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 mức độ làm gián đoạn thính giác và hình ảnh của người dùng. Tầm quan trọng càng cao của thông báo thì thông báo đó càng có tính gián đoạn.
Trên Android
7.1 (API cấp 25) trở xuống, tầm quan trọng của một thông báo được xác định bằng
của thông báo
priority
.
Trên Android 8.0 (API cấp 26) trở lên, tầm quan trọng của thông báo là
được xác định bởi
importance
của kênh mà bạn đăng thông báo. Người dùng có thể thay đổi tầm quan trọng của
kênh thông báo trong phần cài đặt hệ thống, như minh hoạ 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.
Các mức độ quan trọng có thể có và hành vi thông báo có liên quan là sau:
Khẩn cấp: phát ra âm thanh và xuất hiện dưới dạng thông báo quan trọng.
Cao: phát ra âm thanh.
Trung bình: không có âm thanh.
Thấp: không phát âm thanh và không xuất hiện trong thanh trạng thái.
Tất cả thông báo, bất kể mức độ quan trọng, đều xuất hiện trong hệ thống không gây gián đoạn Vị trí giao diện người dùng, chẳng hạn như trong ngăn thông báo và dưới dạng huy hiệu trên trình chạy . Tuy nhiên, bạn có thể sửa đổi hình thức của thông báo huy hiệu.
Để biết thêm thông tin, hãy đọc bài viết về cách đặt tầm quan trọng của chúng tôi.
Chế độ Không làm phiền
Kể từ Android 5.0 (API cấp 21), người dùng có thể bật chế độ Không làm phiền, Chế độ này sẽ tắt tiếng và rung đối với tất cả thông báo. Vẫn thông báo xuất hiện trong giao diện người dùng hệ thống như bình thường, trừ khi người dùng chỉ định khác.
Hiện có 3 cấp độ trong chế độ Không làm phiền:
- 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 trên toàn hệ thống có thể làm gián đoạn chúng, chẳng hạn như chỉ chuông báo, 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ư minh hoạ trong hình 13.
Hình 13. Người dùng có thể cho phép thông báo dựa trên danh mục trên toàn hệ thống (trái) và người gửi hoặc người gọi (bên phải).
Trên Android 8.0 (API cấp 26) trở lên, người dùng cũng có thể cho phép thông báo cho các danh mục dành riêng cho ứng dụng, còn được gọi là bằng cách ghi đè chế độ Không làm phiền theo từng kênh. Cho ví dụ: một ứng dụng thanh toán có thể có các kênh cho thông báo liên quan đến khoản tiền rút ra và tiền gửi. Người dùng có thể cho phép thông báo rút tiền, gửi tiền các thông báo hoặc cả hai khi ở chế độ ưu tiên.
Trên các thiết bị chạy Android 7.1 (API cấp 25) trở xuống, người dùng có thể cho phép thông báo qua từng ứng dụng một thay vì theo từng ứng dụng theo từng kênh.
Để định cấu hình thông báo cho các cài đặt người dùng này, bạn phải đặt toàn hệ thống danh mục.
Thông báo cho các dịch vụ trên nền trước
Bạn phải có thông báo khi ứng dụng của bạn chạy nền trước
service—Service
chạy trong
hình nền tồn tại lâu dài và dễ nhận biết đối với người dùng, chẳng hạn như nội dung nghe nhìn
trình phát. Bạn không thể loại bỏ thông báo này như các thông báo khác. Để xoá
thông báo thì dịch vụ phải được dừng hoặc bị xoá khỏi nền trước
trạng thái.
Để biết thêm thông tin, hãy đọc bài viết Nền trước luôn miễn phí. Nếu bạn đang tạo một phương tiện truyền thông trình phát, đồng thời đọc nội dung Phát nội dung nghe nhìn trong nền.
Giới hạn về số bài đăng
Kể từ Android 8.1 (API cấp 27), các ứng dụng sẽ không thể phát âm thanh thông báo hơn một lần mỗi giây. Nếu ứng dụng của bạn đăng nhiều thông báo trong một giây, các thông báo đều xuất hiện như mong đợi, nhưng chỉ thông báo đầu tiên trong mỗi giây phát ra âm thanh.
Tuy nhiên, Android cũng áp dụng giới hạn cho tốc độ cập nhật thông báo. Nếu bạn đăng nội dung cập nhật cho một thông báo quá thường xuyên, chẳng hạn như nhiều thông báo trong ít hơn một giây, hệ thống có thể bỏ bản cập nhật.
Tính tương thích của thông báo
Giao diện người dùng hệ thống thông báo trên Android và các API liên quan đến thông báo một cách liên tục
phát triển. Để sử dụng các tính năng mới nhất của API thông báo trong khi vẫn hỗ trợ phiên bản cũ
thiết bị nào, hãy sử dụng API thông báo từ Thư viện hỗ trợ,
NotificationCompat
!
và các lớp con của nó, cũng như
NotificationManagerCompat
.
Điều này cho phép bạn không phải viết mã có điều kiện để kiểm tra cấp độ API, vì
API sẽ xử lý việc này.
NotificationCompat
được cập nhật khi nền tảng phát triển để bao gồm các phương thức
mới nhất. Tuy nhiên, một phương thức trong NotificationCompat
không có sẵn
đảm bảo rằng tính năng tương ứng được cung cấp trên các thiết bị cũ. Trong một số
trường hợp sử dụng, việc gọi một API mới được giới thiệu sẽ dẫn đến tình trạng không hoạt động trên các thiết bị cũ.
Sau đây là bản tóm tắt những thay đổi đáng chú ý nhất về hành vi theo cấp độ API đối với Thông báo trên Android.
Android 5.0, API cấp 21
Giới thiệu màn hình khoá và thông báo quan trọng.
Cho phép người dùng đặt điện thoại ở chế độ Không làm phiền và định cấu hình các thông báo được phép làm gián đoạn chúng khi thiết bị được bật chế độ chỉ ưu tiên.
Thêm các phương thức để thiết lập xem có hiển thị thông báo trên màn hình khoá hay không, chẳng hạn như
setVisibility()
), và để chỉ định phiên bản "công khai" của nội dung thông báo.Thêm phương thức
setPriority()
để cho hệ thống biết mức độ gián đoạn thông báo. Ví dụ: việc đặt mức độ ưu tiên thành cao sẽ khiến sẽ xuất hiện dưới dạng thông báo quan trọng.Thêm tính năng hỗ trợ ngăn xếp thông báo vào Android Wear (hiện gọi là Wear OS) thiết bị. Đặt thông báo vào một ngăn xếp bằng
setGroup()
. Ngăn xếp thông báo (sau này được gọi là nhóm hoặc gói) không được hỗ trợ trên máy tính bảng hoặc điện thoại cho đến Android 7.0 (API cấp 24).
Android 7.0, API cấp 24
Đổi kiểu cho các mẫu thông báo để làm nổi bật hình ảnh chính và hình đại diện.
Thêm 3 mẫu thông báo: một mẫu cho ứng dụng nhắn tin và hai mẫu còn lại để trang trí khung hiển thị nội dung tuỳ chỉnh với tính năng tương tác có thể mở rộng và trang trí hệ thống.
Thêm tính năng hỗ trợ cho các thiết bị cầm tay, chẳng hạn như điện thoại và máy tính bảng, cho nhóm thông báo. Sử dụng cùng một API như Android Wear (hiện được gọi là Wear Hệ điều hành) ra mắt trong Android 5.0 (API cấp 21).
Cho phép người dùng trả lời trong thông báo bằng tính năng trả lời cùng dòng. Họ có thể nhập văn bản, sau đó được gửi đến ứng dụng mẹ của thông báo.
Android 8.0, API cấp 26
Đặt từng thông báo ở một nơi cụ thể channel (kênh).
Cho phép người dùng tắt thông báo trên mỗi kênh thay vì tắt tất cả từ một ứng dụng.
Làm cho ứng dụng có thông báo đang hoạt động hiển thị huy hiệu thông báo ở đầu biểu tượng ứng dụng của họ trên màn hình chính hoặc màn hình trình chạy.
Cho phép người dùng tạm ẩn thông báo khỏi ngăn. Bạn có thể đặt chế độ cài đặt dành cho một thông báo.
Cho phép bạn đặt màu nền của thông báo.
Di chuyển một số API liên quan đến hành vi thông báo từ
Notification
đếnNotificationChannel
. Ví dụ: hãy sử dụngNotificationChannel.setImportance()
thay vìNotificationCompat.Builder.setPriority()
dành cho Android 8.0 trở lên.
Android 13.0, API cấp 33
- Thêm thời gian chạy quyền. Dành cho ứng dụng để gửi không được miễn trừ thông báo, người dùng phải cấp quyền này cho ứng dụng của bạn.
Android 14.0, API cấp 34
Giới hạn các thông báo về ý định truy cập chế độ toàn màn hình ở những ứng dụng cung cấp cuộc gọi và các chuông báo. Dùng API
NotificationManager.canUseFullScreenIntent
để kiểm tra xem ứng dụng của bạn có quyền hay không. Nếu không, ứng dụng của bạn có thể sử dụngACTION_MANAGE_APP_USE_FULL_SCREEN_INTENT
để chạy trang cài đặt nơi người dùng có thể cấp quyền.Thay đổi trải nghiệm người dùng đối với thông báo không đóng được bằng cách cho phép để người dùng đóng thông báo ngay cả khi Đã đặt cờ
Notification.FLAG_ONGOING_EVENT
. Điều này không áp dụng choCallStyle
thông báo nếu cờNotification.FLAG_ONGOING_EVENT
là bộ kiểm soát chính sách thiết bị (DPC) và các gói hỗ trợ cho doanh nghiệp. Chế độ này cũng không áp dụng khi điện thoại bị khoá hoặc nếu người dùng chọn Xoá tất cả.