Nie wiem, jak pogrupować dwa lub więcej powiadomień w jeden i wyświetlać komunikat "Masz dwie nowe wiadomości".Jak grupować powiadomienia z Androidem, takie jak WhatsApp?
Odpowiedz
Kroki, które należy podjąć opiekę z poniższym kodzie.
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.
Użyj poniższego kodu, aby utworzyć powiadomienie i pogrupować je. Włącz funkcję jednym kliknięciem przycisku.
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());
}
}
Na osobne powiadomienia przypisać różne NOTIFICATION_IDs ..
Należy utworzyć powiadomienie, aby można było zaktualizować identyfikator powiadomienia, dzwoniąc pod numer NotificationManager.notify(ID, notification)
.
następujące kroki muszą być tworzone w celu zaktualizowania zgłoszenia:
- Aktualizacja lub utwórz
NotificationCompat.Builder
obiekt - Budowanie obiektu powiadomienia od niej
- wydać Powiadamianie z tym samym identyfikatorem używanym wcześniej
przykładem z android Dokumenty producent:
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());
...
Zobacz także Android docs na Układanie Powiadomienia https://developer.android.com/training/wearables/notifications/stacks.html
Dobrze. Metoda API jest myląca: metoda NotificationCompatBuilder.setGroup() pochodzi z interfejsu API Wearable. Jego celem jest zarządzanie grupami powiadomień o tym, że można je nosić - chociaż wpływa również na telefon. Ale większość ludzi szuka w telefonie grup podobnych do Gmaila. Odpowiedź brzmi: musisz zrobić to sam, używając powiadomień, aby zaktualizować swoje powiadomienia. Musisz zapisać dane między poszczególnymi powiadomieniami, aby móc obliczyć powiadomienie "podsumowujące" - co oznacza, że musisz ponownie utworzyć i wysłać z tym samym identyfikatorem, aby zastąpić poprzednie "niezwiązane z podsumowaniem" powiadomienie . – John
Dla pełnej logiki należy rozważyć sprawdzenie mój answer.I stosować logikę ze wspólną preferencji i odbiornik transmisji jak i potrzebne do grupy każdą wiadomość do użytkownika i jednym pojedynczym Bądź w kontakcie z aktywnymi powiadomieniami.Tylko kierując się na poziom 23 APi możesz uzyskać aktywne powiadomienia, to mi w ogóle nie pomogło.Także zdecydowałem się napisać trochę logiki.Sprawdź to tutaj, jeśli masz na to ochotę.
Napisałem kod dla konstruktora w klasie "FcmMessagingService". wewnątrz wewnętrznej klasy 'onMessageRecieved'. Jestem w stanie odbierać wszystkie powiadomienia w szczegółach, ale wygląda na to, że otrzymałem powiadomienie z różnych aplikacji. –