it-swarm-vi.tech

Làm cách nào để nhóm các thông báo Android như whatsapp?

Tôi không biết cách nhóm hai hoặc nhiều thông báo thành một và chỉ hiển thị một thông báo như "Bạn có hai tin nhắn mới".

23
Raúl Pérez López

Các bước để được chăm sóc từ mã dưới đây.

NotificationCompat.Builder:contains the UI specification and action information
NotificationCompat.Builder.build() :used to create notification (Which returns Notification object)
Notification.InboxStyle: used to group the notifications belongs to same ID
NotificationManager.notify():to issue the notification.

Sử dụng mã dưới đây để tạo thông báo và nhóm nó. Bao gồm các chức năng trong một nút bấm.

private final int NOTIFICATION_ID = 237;
private static int value = 0;
Notification.InboxStyle inboxStyle = new Notification.InboxStyle();
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.Push_notify_icon);
public void buttonClicked(View v)
{
        value ++;
        if(v.getId() == R.id.btnCreateNotify){
            NotificationManager nManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
            Notification.Builder builder = new Notification.Builder(this);            
            builder.setContentTitle("Lanes");
            builder.setContentText("Notification from Lanes"+value);
            builder.setSmallIcon(R.drawable.ic_launcher);
            builder.setLargeIcon(bitmap);
            builder.setAutoCancel(true);
            inboxStyle.setBigContentTitle("Enter Content Text");
            inboxStyle.addLine("hi events "+value);
            builder.setStyle(inboxStyle);
            nManager.notify("App Name",NOTIFICATION_ID,builder.build());
        }
}

Đối với các thông báo riêng biệt chỉ định các thông báo khác nhau ..

28
Sackurise

Để có logic đầy đủ, vui lòng xem xét việc kiểm tra câu trả lời của tôi. Tôi đã sử dụng logic với các tùy chọn chia sẻ và bộ thu phát khi tôi cần nhóm từng tin nhắn của người dùng thành một và xem trước các thông báo đang hoạt động. Chỉ bằng cách nhắm mục tiêu mức api 23, bạn mới có thể kích hoạt thông báo, nó không giúp tôi chút nào. Vì vậy, tôi quyết định viết một số logic nhẹ. Hãy kiểm tra nó ở đây nếu bạn cảm thấy muốn.

https://stackoverflow.com/a/38079241/6466619

1
VA Entertaiment

Bạn cần tạo thông báo để có thể cập nhật thông báo bằng ID thông báo bằng cách gọi NotificationManager.notify(ID, notification)

Các bước sau đây cần được tạo để cập nhật thông báo:

  1. Cập nhật hoặc tạo một đối tượng NotificationCompat.Builder
  2. Xây dựng một đối tượng Thông báo từ nó
  3. Phát hành Thông báo với cùng một ID bạn đã sử dụng trước đó

Một ví dụ được lấy từ các tài liệu dành cho nhà phát triển Android:

mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

// Sets an ID for the notification, so it can be updated
int notifyID = 1;

mNotifyBuilder = new NotificationCompat.Builder(this)
    .setContentTitle("New Message")
    .setContentText("You've received new messages.")
    .setSmallIcon(R.drawable.ic_notify_status)
numMessages = 0;

// Start of a loop that processes data and then notifies the user
...
mNotifyBuilder.setContentText(currentText).setNumber(++numMessages);

// Because the ID remains unchanged, the existing notification is updated.
mNotificationManager.notify(notifyID, mNotifyBuilder.build());
...

Đồng thời xem các tài liệu Android về Thông báo xếp chồng https://developer.Android.com/training/wearables/notifying/stacks.html

0
Smittey

Bạn có thể xếp tất cả các thông báo của mình vào một nhóm bằng cách sử dụng phương thứcsetGroupvà truyền chuỗi groupId của bạn làm tham số.

builer.setgroup ("NHÓM ID NHÓM");

NotificationManager nManager = (NotificationManager) 
getSystemService(NOTIFICATION_SERVICE);
Notification.Builder builder = new Notification.Builder(this);            
builder.setContentTitle("Lanes");
builder.setGroup("GROUP_ID_STRING");
builder.setContentText("Notification from Lanes"+value);
builder.setSmallIcon(R.drawable.ic_launcher);
builder.setLargeIcon(bitmap);
builder.setAutoCancel(true);
inboxStyle.setBigContentTitle("Enter Content Text");
inboxStyle.addLine("hi events "+value);
builder.setStyle(inboxStyle);
nManager.notify("App Name",NOTIFICATION_ID,builder.build());
0
Natesh bhat