FCM 中的通知徽章图标可以使用多大的尺寸?

What size can we use for the notification badge icon in FCM?

我正在为我的应用程序使用 FCM 推送通知,一切正常。但是现在,我的通知图标下方出现了一个小图标。见下图。

谁能告诉我这个图标可以使用多大的尺寸?我们如何自定义它?我如何在那个地方添加图标或图像?

notification payload used to send messages to client apps, however you can check out the guidelines in creating icons for Android and IOS 的 Firebase 参考文档中未说明图标大小。

所以我对 Android Notifications and Building Notifications. You can set the icon by using the icon 参数做了一些挖掘。

不过对于通知里面的Badge,这个好像是Android系统自己处理的,不能修改。也取决于设备,徽章很可能是不可见的,因为 Android 本身不允许 Notification Badges even for App Icons.

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

您在 post 中包含的那个必须是设备制造商制作的默认徽章,并且它只显示是因为设备的应用程序启动器。

长话短说,您无法设置通知的图标徽章。

您可以使用任何尺寸的徽章图标,如 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);

如果你想隐藏大图标上面的小图标使用

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) 玩得更多

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

遗憾的是,没有关于推荐尺寸的指导,但我可以推荐透明背景且只有白色的方形图片。

72x72px 可能是基于 Android 文档的图像大小的一个不错的选择,该文档建议徽章大小为 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

我试过了,解决了,抱歉回答晚了

    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;
    }