我们可以使用什么尺寸的FCM中的通知徽章图标?

时间:2016-09-23 06:44:48

标签: android firebase push-notification firebase-cloud-messaging firebase-notifications

我正在为我的应用使用FCM推送通知,一切正常。但是现在,我的通知图标下面有一个小图标。见下图。

enter image description here

任何人都可以告诉我这个图标的大小是多少?我们如何定制它?我如何在那个地方添加图标或图像?

6 个答案:

答案 0 :(得分:2)

图片中的图标表明该通知来自Chrome,最近在版本53中添加了对徽章自定义的支持。

遗憾的是没有关于推荐尺寸的指导,但是我可以给出一个具有透明背景和仅白色的方形图像。

对于基于Android文档的图片大小,72x72px可能是一个不错的选择,这些文档建议徽章大小为24dips(可以认为是24px乘以设备屏幕密度)。所以24px x 3 = 72px。

要在网络通知上设置徽章,您需要添加徽章选项:

self.addEventListener('push', function(event) {
  event.waitUntil(
    self.registration.showNotification(
      'Hello', {
        body: 'Thanks for sending this push msg.',
        icon: './images/icon-192x192.png',
        badge: './images/icon-72x72.png'
      })
  );
});

来自https://medium.com/dev-channel/custom-notification-badges-for-all-df524a4003e8#.jwbxe7eft

的信息

更多信息:https://web-push-book.gauntface.com/chapter-05/02-display-a-notification/#badge

答案 1 :(得分:1)

您可以使用任何尺寸的徽章图标,例如72x72或任何尺寸 但事情是你的图标应该是.png扩展名只有透明背景和图标颜色应该只有白色...这是设置大型通知图标和徽章图标的代码

 String title = context.getString(R.string.app_name);
    Bitmap bm = BitmapFactory.decodeResource(context.getResources(), R.drawable.logo);
    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context)
            .setSmallIcon(R.drawable.tlogo)
            .setLargeIcon(bm)
            .setContentTitle(title)
            .setContentText(message)
            .setStyle(new NotificationCompat.BigTextStyle().bigText(message))
            .setWhen(when);

答案 2 :(得分:0)

用于向客户端应用发送邮件的notification payload的Firebase参考文档中未说明图标大小,但您可以查看为Android和{{3}创建图标的指南}。

答案 3 :(得分:0)

所以我对Android NotificationsBuilding Notifications进行了一些挖掘。您可以使用icon参数设置图标。

但是,对于通知中的徽章,这个似乎是由Android系统本身处理的,无法修改。根据设备的不同,很可能徽章不可见,因为Android本身不允许Notification Badges even for App Icons

到目前为止,我已经在我的设备上进行了一些测试,只有显示徽章的通知才能通过Google Apps(Gmail,云端硬盘,照片等)和设备制造商发送的通知进行打开。

您在帖子中包含的那个必须是设备制造商制作的默认徽章,并且仅在设备的应用启动器时显示。

很长一段时间,您无法设置通知的图标徽章。

答案 4 :(得分:0)

如果你想隐藏大图标顶部的小图标

int smallIconId = mContext.getResources().getIdentifier("right_icon", "id", android.R.class.getPackage().getName());
        Notification notification = notificationBuilder.build();
        if (smallIconId != 0) {
            notification.contentView.setViewVisibility(smallIconId, View.INVISIBLE);
        }

您甚至可以使用findviewById(smallIconId)

进行更多游戏

答案 5 :(得分:0)

我尝试了这个并且它解决了,抱歉迟到的答案

    private void sendNotification(String messageBody,String titles) {


            Intent intent = new Intent(this, NotificationList.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);
            Bitmap largeIcon = BitmapFactory.decodeResource(getResources(), R.mipmap.appicon);

            NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)

                    .setContentTitle(titles)
                    .setLargeIcon(largeIcon)
                    .setContentText(messageBody)
                    .setAutoCancel(true)
                    .setSound(defaultSoundUri)
                    .setSmallIcon(getNotificationIcon())
                    .setContentIntent(pendingIntent);

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

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

private int getNotificationIcon() {
        boolean useWhiteIcon = (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M);
        return useWhiteIcon ? R.mipmap.notismall : R.mipmap.appicon;
    }