2016-06-29 13 views
0

Ich habe GCM für iOS und Android beide implementiert und dieser Teil scheint gut zu funktionieren. Mein Problem ist, dass Meine Benachrichtigungen auf Android nicht erweiterbar sind, wenn der Text in der Benachrichtigung mehr als eine Zeile umfasst. Ich habe nach Lösungen gesucht, die vorschlagen, Benachrichtigung unter Verwendung BigView aufzurufen. Meine Benachrichtigungen kommen direkt über GCM auf das Gerät und ich bearbeite es nicht dazwischen. Ich bin mir nicht sicher, wie ich mit diesem Problem umgehen soll.GCM Android Notification nicht Expanding

Sollte ich nur Datenteil von Benachrichtigung erhalten und lokal Benachrichtigung aufrufen, um dieses Problem zu beheben, oder gibt es etwas, das ich verwenden kann, während GCM vom Server gesendet wird?

EDIT: Ich habe expandierende Benachrichtigung funktioniert, aber es ist immer noch nicht mein Problem zu lösen, weil es doppelte Benachrichtigungen zeigt. Eine kommt von GCM und die zweite lokal aufgerufene Benachrichtigung. Ich habe versucht, das Tag von der GCM-Benachrichtigung auf die lokale Nachricht anzuwenden, aber es löst das Problem nicht.

Antwort

2

Versuchen Sie, diese Art in Ihrer Meldung Builder zu setzen:

.setStyle(new NotificationCompat.BigTextStyle().bigText("your_message_here")) 
+0

I direkte GCM-Benachrichtigung über bin. Sollte ich die GcmReceiver-Klasse außer Kraft setzen und selbst Benachrichtigungen erstellen? –

+0

Ja .. Das ist ein besserer Ansatz für den Aufbau unserer eigenen benutzerdefinierten Benachrichtigungen .. Und ich empfehle Ihnen Firebase Cloud Messaging .. –

+0

Es hat funktioniert, aber es zeigt doppelte Benachrichtigung mit GCM. Was ich tun wollte, überschreiben GCM-Benachrichtigung mit lokalen, obwohl ich Tag von GCM-Benachrichtigung auf lokale Benachrichtigung angewendet. –

0

Benachrichtigung Layout für die Benachrichtigung erstellen. Und dann in Ihrer Textansicht 'Linien = 2' oder verwenden Sie 'multiline'.

custom_notification.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/layout" 
android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:padding="10dp" > 
    <ImageView android:id="@+id/image" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:layout_alignParentLeft="true" 
    android:layout_marginRight="10dp" /> 
    <TextView android:id="@+id/title" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_toRightOf="@id/image" 
    style="Custom Notification Title" /> 
<TextView android:id="@+id/text" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_toRightOf="@id/image" 
    android:layout_below="@id/title" 
    style="Custom Notification Text" /> 
</RelativeLayout> 

Fügen Sie diese in Ihrer Tätigkeit onCreate Funktion oder innerhalb Empfänger bei GCM oder fcm (wo Ihre Mitteilung baut)

int icon = R.drawable.ic_launcher; 
    long when = System.currentTimeMillis(); 
    Notification notification = new Notification(icon, "Custom Notification", when); 

    NotificationManager mNotificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); 

    RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.custom_notification); 
    contentView.setImageViewResource(R.id.image, R.drawable.ic_launcher); 
    contentView.setTextViewText(R.id.title, "Custom notification"); 
    contentView.setTextViewText(R.id.text, "This is a custom layout"); 
    notification.contentView = contentView; 

    Intent notificationIntent = new Intent(this, MainActivity.class); 
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); 
    notification.contentIntent = contentIntent; 

    notification.flags |= Notification.FLAG_NO_CLEAR; //Do not clear the notification 
    notification.defaults |= Notification.DEFAULT_LIGHTS; // LED 
    notification.defaults |= Notification.DEFAULT_VIBRATE; //Vibration 
    notification.defaults |= Notification.DEFAULT_SOUND; // Sound 

    mNotificationManager.notify(1, notification); 
+0

Es spielt keine Rolle, was Sie verwenden, um Benachrichtigungen zu erstellen. Sie möchten Text in mehr als einer Zeile. Nehmen Sie einfach Änderungen an den Textansichtsattributen vor. Nach Ihrem Bedarf. –

+0

das scheint mehr Brauch für das, was ich tun möchte –

+0

Es gibt keine Abkürzung für alles. Wenn Sie die integrierte Benachrichtigung von Android OS anpassen möchten. Dann musst du dein eigenes erstellen. –

Verwandte Themen