2017-07-21 43 views
8

próbowałem wcisnąć powiadomić o NotificationCompat:Android powiadomienia Push transparent nie pojawiać się w niektórych urządzeniach

NotificationCompat.Builder b = new NotificationCompat.Builder(this); 
      b.setAutoCancel(true) 
        .setDefaults(NotificationCompat.DEFAULT_ALL) 
        .setWhen(System.currentTimeMillis()) 
        .setSmallIcon(this.getResources(). 
         getIdentifier("ic_launcher", "mipmap", this.getPackageName())) 
        .setLargeIcon(BitmapFactory.decodeResource(this.getResources(), 
         this.getResources(). 
         getIdentifier("ic_launcher", "mipmap", this.getPackageName()))) 
        .setTicker("God Reacts") 
        .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) 
        .setPriority(Notification.PRIORITY_MAX) 
        .setContentTitle(data.get("lineOne")) 
        .setContentText(data.get("lineTwo")) 
        .setContentInfo("Spread the message !"); 

      PendingIntent contentIntent = PendingIntent.getActivity(this, 0, 
        new Intent(this,getMainActivityClass()), 
        PendingIntent.FLAG_UPDATE_CURRENT); 
      b.setContentIntent(contentIntent); 
      NotificationManager nm = (NotificationManager) 
      this.getSystemService(Context.NOTIFICATION_SERVICE); 
      nm.notify(1, b.build()); 

Ale w kilku urządzeniach (Samsung, MI etc) baner zgłoszenie nie jest wyświetlany. Powiadomienie przesuwa się na pasku zadań z dźwiękiem i wibruje.

Jednak w przypadku kilku urządzeń jest on pokazywany idealnie, gdy aplikacja jest zamknięta/tło/pierwszy plan. Urządzenie, w którym jest prawidłowo wyskakujące, używa marshmallow. Czy jest to spowodowane określonym systemem operacyjnym? Czy to jest problem związany z urządzeniem? Jakie dodatkowe elementy muszę dodać?

+0

W niektórych szczególnych przypadkach niektóre urządzenia mogą instalować czystą aplikację powiadomień, mogą wyczyścić powiadomienia. Już wcześniej spotkałem się z tym problemem i całkowicie mnie to zwariowało. może możesz to sprawdzić. –

+0

@ Spark.Bao Nie sądzę, że tak było. Sprawdziłem to na 2 prawdziwych urządzeniach bez powiadomienia czyszczenia aplikacji.Nie rozumiem, z jakich powodów te problemy występują –

+0

Czy sprawdziłeś to: https: // stackoverflow .pl/questions/29522254/get-android-notification-to-appear-as-banner? – josealfonsomora

Odpowiedz

0

Problem dotyczy ustawień niektórych urządzeń.

Konieczność włączenia "Floating notifications" w ustawieniach -> aplikacja -> powiadomienia.

+0

Czy możesz dodać więcej szczegółów do swojego rozwiązania? – arul

+0

@arul nie ma nic więcej do tego. –

2

Problem może pojawić się w niektórych urządzeniach wersji nougat ze względu na optymalizację baterii.
np. Samsung Galaxy S8 i S8 + OnePlus, xaiomi itd. Ale w Android wersji nugat, Można spróbować to raz, na które trzeba sprawdzić ustawienia raz

krok 1: ustawienia Goto>

krok 2: wyszukiwania dla "optymalizacji Battery">

krok 3: stąd, dotknij "aplikacje nie zostały zoptymalizowane" i przełącz na "wszystkie aplikacje" na .

krok 4: wyszukiwania dla aplikacji (której nie otrzymujesz powiadomień)

Krok 5: z kranu na nazwę aplikacji i ustawić go jako nie zoptymalizowany tak, że może otrzymywać powiadomienia.

LUB

krok 1: przejdź do Ustawienia> Aplikacje

krok 2: Kliknij: Menu w prawym górnym rogu, wybierz> [Special Dostęp] krok

3: Wybierz>Optymalizuj zużycie baterii>

krok 4: Kliknij menu rozwijane w kierunku górnej części ekranu, która mówi: "Aplikacje nie zoptymalizowane [v]" -> zmiana na [All Apps]

Krok 5: wybrać swoją aplikację i zmiany to "Nieoptymalizowane".

+0

Dziękujemy za odpowiedź. Problem nadal występuje również w starszych wersjach (na przykład kitkat) –

+1

w porządku !! spróbuje czegoś innego i zaktualizuje, jeśli zadziała. –

3

w chińskich urządzeniach takich jak MI lub OPPO itp. System wyłączy usługi powiadamiania dla aplikacji nieobsługiwanych na białej liście. Więc nie ma nic więcej, co można z tym zrobić.Po prostu poproś ich o dodanie do białej listy aplikacji (ponure prawdopodobieństwo wystąpienia w ogóle) lub skorzystaj z hackowania, aby w jakikolwiek sposób zachować pamięć w pamięci, powiedzmy, uruchamiając pustą usługę w tle 24 * 7

+0

Moja aplikacja uruchamia usługę w tle –

1

Najpierw spróbuj z minimalną właściwością powiadomień. Spróbuj postępować zgodnie z kodem, który działa poprawnie w mojej aplikacji. Jeśli działa, możesz debugować swój kod, włączając jedną właściwość powiadomienia.

private void sendNotification(String messageBody) { 
Intent intent = new Intent(this, NotificationActivity.class); 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent, 
      PendingIntent.FLAG_ONE_SHOT); 

    Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) 
      .setSmallIcon(R.drawable.ic_action_notification) 
      .setContentTitle("Touchrooms Notification") 
      .setContentText(messageBody) 
      .setAutoCancel(true) 
      .setSound(defaultSoundUri) 
      .setContentIntent(pendingIntent); 

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

    notificationManager.notify(0 /* ID of notification */, notificationBuilder.build()); 
} 
0

Miałem podobny problem, gdy powiadomienie wykorzystywało ikonę lub obraz i nie mogło załadować tej ikony/obrazu. Można łatwo sprawdzić, zmieniając te linie, które zestawy ikon ze środków na ikonie obciążenia przez res_id jak poniżej:

b.setSmallIcon(R.drawable.new_mail); 
b.setLargeIcon(R.drawable.my_icon); 

Twoje obecne podejście do ładowania tych ikon mogą nie działać na tych urządzeniach i w rezultacie, zgłoszenie będzie miał dźwięk i wibracje, ale nie pojawią się żadne widoczne treści.