Normalny Konstruktor powiadomień nie wyświetla powiadomień na Androidzie O.
Jak mogę wyświetlić powiadomienie na Androidzie 8 Oreo?
Czy jest jakiś nowy kod do dodania do wyświetlania powiadomień na Androidzie O?
Normalny Konstruktor powiadomień nie wyświetla powiadomień na Androidzie O.
Jak mogę wyświetlić powiadomienie na Androidzie 8 Oreo?
Czy jest jakiś nowy kod do dodania do wyświetlania powiadomień na Androidzie O?
Odpowiedzi:
W Androidzie O konieczne jest używanie kanału z Konstruktorem powiadomień
poniżej znajduje się przykładowy kod:
Lub ze zgodnością obsługi poprzez:
lub jeśli chcesz prostej poprawki, użyj następującego kodu:
Aktualizacje: odwołanie NotificationCompat.Builder
Ten konstruktor został uznany za przestarzały na poziomie API 26.0.0, więc powinieneś go użyć
więc nie ma takiej potrzeby
setChannelId
z nowym konstruktorem.I powinieneś użyć najnowszej biblioteki AppCompat obecnie 26.0.2
Źródło z kanału programistów Androida na Youtube
Możesz także sprawdzić oficjalne Dokumenty na Androida
źródło
NotificationCompat.Builder(Context, String)
konstruktor? Używam (między innymi): -compileSdkVersion 26
-buildToolsVersion '26.0.2'
-compile 'com.android.support:appcompat-v7:26.0.0-beta2'
a jednak nadal nie akceptuje mojego konstruktora za pomocą kontekstu i łańcucha. Jakieś pomysły?Tutaj zamieszczam funkcję szybkiego rozwiązania z celową obsługą
źródło
Oprócz tej odpowiedzi musisz utworzyć kanał powiadomień, zanim będzie można go użyć.
Musisz także korzystać z kanałów, tylko jeśli Twój targetSdkVersion ma 26 lub więcej.
Jeśli używasz NotificationCompat.Builder, musisz także zaktualizować wersję beta biblioteki pomocy technicznej: https://developer.android.com/topic/libraries/support-library/revisions.html#26-0-0- beta2 (aby móc wywołać
setChannelId
konstruktora kompatybilności).Bądź ostrożny, ponieważ ta aktualizacja biblioteki podnosi minSdkLevel do 14.
źródło
źródło
Jeśli nie możesz otrzymać powiadomienia wypychanego w wersji 26+ SDK?
NotificationCompat.Builder powiadomienieBuilder = nowe NotificationCompat.Builder (kontekst, identyfikator_kanału)
-> Tutaj otrzymasz powiadomienie push za pomocą
channel_id
w urządzeniu, które składa się z wersji SDK 26+.-> Ponieważ
NotificationCompat.Builder(context)
metoda jest przestarzała, teraz będziesz używać zaktualizowanej wersji, która ma dwa parametry: jeden to kontekst, drugi to identyfikator_kanału.->
NotificationCompat.Builder(context, channel_id)
zaktualizowana metoda. Spróbuj.-> W wersji 26+ SDK urządzenia za każdym razem utworzysz channel_id.
źródło
Skorzystaj z tej klasy dla systemu Android 8 Notification
źródło
Wypróbuj ten kod:
źródło
Aplikacja demonstracyjna powiadomień dla systemu Android dla systemu Android O oraz niższych wersji API. Oto najlepsza aplikacja demo na GitHub-Demo 1 i GitHub-Demo 2 .
źródło
To jest błąd w Firebase API w wersji 11.8.0, więc jeśli zmniejszysz wersję API, nie napotkasz tego problemu.
źródło
Miałem ten sam problem na Oreo i odkryłem, że jeśli najpierw utworzysz swój kanał za pomocą NotificationManager.IMPORTANCE_NONE, a następnie zaktualizujesz go później, kanał zachowa pierwotny poziom ważności.
Jest to poparte dokumentacją szkoleniową Google Notification, która stwierdza:
Usunięcie i ponowna instalacja aplikacji pozwoli zresetować zachowania kanału.
Najlepiej unikać używania IMPORTANCE_NONE, chyba że chcesz ukryć powiadomienia dla tego kanału, tzn. Użyć cichych powiadomień.
źródło
Oto jak to robisz
Przeczytaj pełny samouczek na => https://developer.android.com/training/notify-user/build-notification
źródło
CHANNEL_ID
w NotificationChannel i Notification.Builder musi być taki sam, wypróbuj ten kod:źródło
Cóż, w moim przypadku mam system Android 8.1.0 i numer modelu vivo1811 i próbowałem ze wszystkimi powyższymi rozwiązaniami, ale nic nie działa.
W końcu napisałem do pomocy technicznej Firebase, a następnie przy dalszym debugowaniu otrzymałem komunikat „Nie udało się wysłać do zatrzymanej aplikacji”: Upewnij się, że aplikacja nie została wymuszona .
I to była odpowiedź zespołu Firebase ->
Tutaj OEM oznacza producenta oryginalnego sprzętu .
źródło
Dla każdego, kto zmaga się z tym po wypróbowaniu powyższych rozwiązań, upewnij się, że identyfikator kanału użyty podczas tworzenia kanału powiadomień jest identyczny z identyfikatorem kanału ustawionym w Konstruktorze powiadomień.
źródło
źródło
Poniższa metoda pokaże powiadomienie z włączonym dużym tekstem i zamrożeniem (powiadomienie nie zostanie usunięte nawet po przesunięciu przez użytkownika). Potrzebujemy usługi NotificationManager
Metoda usuwania powiadomień
Link źródłowy
źródło
już nieaktualne dla wersji większej lub równej Android Oreo. Możesz zmienić implementację na używanie
źródło
źródło
Poniższy fragment kodu działa dla mnie w Oreo, możesz spróbować. mam nadzieję, że to zadziała
private void sendNotification (Kontekst ctx, tytuł ciągu, int powiadomienieNumer, komunikat ciągu, podtekst ciągu, zamiar zamiaru) {
try {
źródło
W Androidzie Oreo aplikacja powiadomień odbywa się przy użyciu kanałów i klasy NotificationHelper. Powinna mieć identyfikator kanału i nazwę kanału.
Najpierw musisz utworzyć klasę NotificationHelper
Utwórz przycisk w pliku xml działania, a następnie W głównym działaniu
Następnie uruchom swój projekt
źródło
Musisz utworzyć kanał powiadomień dla poziomu API powyżej 26 (oreo).
STRING_ID = identyfikator kanału string string jest taki sam jak w Notification.Builder jak ten
Identyfikator kanału w powiadomieniu i w powiadomieniu powinien być taki sam Cały kod wygląda tak ... '
źródło
Przede wszystkim, jeśli nie wiesz, z Androida Oreo, tj. Interfejsu API na poziomie 26, obowiązkowe jest, aby powiadomienia były przesyłane ponownie z kanałem.
W takim przypadku wiele samouczków może Cię pomylić, ponieważ pokazują one inny przykład powiadomienia powyżej oreo i poniżej.
Oto wspólny kod, który działa zarówno na oreo powyżej, jak i poniżej:
Samouczek wideo: WIDEO YOUTUBE
Jeśli chcesz pobrać to demo: GitHub Link
źródło
źródło