it-swarm.com.ru

Как установить большую иконку в уведомлении приложения Firebase?

Привет я реализую Push-уведомления в Android, используя Firebase. Теперь есть маленькая иконка, показывающая внутри одного круга. Мне нужно, чтобы показать в большем размере. Пожалуйста, смотрите изображение. И вот мой код,

            Android:id="@+id/relativeNotification"

            Android:layout_width="192dp"
            Android:layout_height="192dp"
            Android:layout_alignParentEnd="true"
            Android:layout_alignParentRight="true">

            <com.inspius.coreapp.widget.TintableImageView
                Android:layout_width="192dp"
                Android:layout_height="192dp"
                Android:layout_centerHorizontal="true"
                Android:layout_centerVertical="true"
                Android:layout_gravity="center_vertical"
                Android:contentDescription="@string/app_name"
                Android:src="@drawable/ic_launcher"
                app:tint="@color/custom_icon_video_detail_selector" />

Как мне установить большую иконку из этой маленькой иконки?

Here is the image

8
Sirilcs

Я думаю, что это может быть сделано путем переопределения настроек по умолчанию.

В вашем приложении манифест:

<meta-data
        Android:name="com.google.firebase.messaging.default_notification_icon"
        Android:resource="@drawable/notification_icon" />

Используйте свой значок вместо @drawable/notification_icon.

Источник

Надеюсь, это поможет

Обновление: Также, посмотрите:

https://github.com/firebase/quickstart-Android/issues/4#issuecomment-221344318

Параметр icon может использоваться для указания рисования в вашем приложении . Если вы хотите использовать R.drawable.foo, просто передайте foo.

Вот документация параметра icon:

https://firebase.google.com/docs/cloud-messaging/http-server-ref#notification-payload-support

3
ʍѳђઽ૯ท

См. Вы можете настроить уведомление Firebase только тогда, когда ваше приложение находится на переднем плане.

Ваше уведомление будет перехвачено в onMessageReceived метод FirebaseMessagingService service 

Чтобы настроить уведомление, когда ваше приложение находится на переднем плане.

Поместить значок из папки приложения Drawable

Bitmap largeIcon = BitmapFactory.decodeResource(getResources(), R.drawable.icons);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
.setLargeIcon(largeIcon)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle(remoteMessage.getNotification().getTitle())
.setContentText(remoteMessage.getNotification().getBody());
NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
            manager.notify(0, builder.build());

Поместить значок из API "значок" тег

String name = remoteMessage.getNotification().getIcon();
URL url_value = new URL(name);
Bitmap mIcon1 = BitmapFactory.decodeStream(url_value.openConnection().getInputStream());
NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
.setLargeIcon(mIcon1)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle(remoteMessage.getNotification().getTitle())            .setContentText(remoteMessage.getNotification().getBody());
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
            manager.notify(0, builder.build());

2
Gulnaz Ghanchi

Я пытался сделать то же самое. Переопределение метода handleIntent сработало для меня. Я думаю, что удаление super.handleIntent (намерение) сделало эту работу. Затем мы можем создать собственное уведомление, чтобы установить большую иконку. И передний план, и фоновый режим вызовут этот метод. Что-то вроде этого:

public class YourMessagingService extends FirebaseMessagingService {

    @Override
    public void handleIntent(Intent intent) {
        // super.handleIntent(intent);

        // get intent codes....

        NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
        Notification notification = builder
                .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.yourLargeIcon))
                .setSmallIcon(R.drawable.yourSmallIcon)
                .setContentTitle("yourTitle")
                .setContentText("yourText")
                .build();

        NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        notificationManager.notify(111, notification);
    }

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);
    }

    @Override
    public void onDeletedMessages() {
        super.onDeletedMessages();
    }
}
1
CCOONOK