Sie können Bilddateien an Ihre Android-Benachrichtigungen anhängen. Das Hinzufügen visueller Komponenten kann die Benutzerinteraktion mit Push-Benachrichtigungen erheblich steigern.
Wenn die App im Vordergrund ausgeführt wird, wird die Push-Nachricht von der App verarbeitet, die die Klasse FirebaseMessagingService
erweitert, und auf folgende Weise in der Manifestdatei deklariert:
<service
android:name=".MyFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
Die Klasse, die die onMessageReceived()
-Implementierung enthält, verarbeitet die empfangenen Daten.
Wenn die Push-Nachricht eine Medien-URL enthält, steht die URL im Parameter RemoteMessage
zur Verfügung, der an die Funktion onMessageReceived()
übergeben wird. Verwenden Sie den Schlüssel attachment-url
, wie im folgenden Codebeispiel veranschaulicht:
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.d("Remote Message", "RemoteMessage: " + remoteMessage.toString());
// Check if message contains a data payload.
if (remoteMessage.getData().size() > 0) {
Log.d("Remote Message", "RemoteMessage: " + remoteMessage.getData());
sendNotification(remoteMessage);
}
}
private void sendNotification(RemoteMessage message) {
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent, PendingIntent.FLAG_ONE_SHOT);
String channelId = getString(R.string.default_notification_channel_id);
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder =
new NotificationCompat.Builder(this, channelId)
.setSmallIcon(R.drawable.ic_stat_ic_notification)
.setContentTitle(getString(R.string.fcm_message))
.setContentText(message.getData().get("body"))
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
//Handle image url if present in the push message
String attachmentUrl = message.getData().get("attachment-url");
if (attachmentUrl != null) {
Bitmap image = getBitmapFromURL(attachmentUrl);
if (image != null) {
notificationBuilder.setStyle(new NotificationCompat.BigPictureStyle().bigPicture(image));
}
}
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// Since android Oreo notification channel is needed.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(channelId,
"Channel human readable title",
NotificationManager.IMPORTANCE_DEFAULT);
notificationManager.createNotificationChannel(channel);
}
notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
}
}
Wenn Sie NotificationCompat.BigPictureStyle
festlegen, werden möglicherweise keine großen Bilder angezeigt. Um sicherzustellen, dass große Bilder immer angezeigt werden, legen Sie den nativen Notification.BigPictureStyle
fest.
Im Folgenden finden Sie ein Beispiel einer multimedialen Push-Benachrichtigung mit einem Bild:
Weitere Informationen zu Rich-Push-Benachrichtigungen mit Android finden Sie unter Interagieren mit Rich-Benachrichtigungen.