我们可以为 FCM 中的通知徽章图标使用多大的尺寸?
Posted
技术标签:
【中文标题】我们可以为 FCM 中的通知徽章图标使用多大的尺寸?【英文标题】:What size can we use for the notification badge icon in FCM? 【发布时间】:2016-09-23 06:44:47 【问题描述】:我正在为我的应用程序使用FCM
推送通知,一切正常。但是现在,我的通知图标下方出现了一个小图标。见下图。
谁能告诉我这个图标可以使用多大的尺寸?我们如何自定义它?如何在那个地方添加图标或图像?
【问题讨论】:
您可以为通知生成器发布您的代码 sn-p 吗? @AL。请检查 FCM 示例..我只使用了那个 【参考方案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】:图片中的图标表明该通知来自 Chrome,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
【讨论】:
【参考方案3】:我试过了,它解决了,抱歉回复晚了
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;
【讨论】:
【参考方案4】:Firebase 参考文档中没有说明用于向客户端应用发送消息的notification payload 的图标大小,但是您可以查看为Android 和ios 创建图标的指南。
【讨论】:
我在问android【参考方案5】:所以我对Android Notifications 和Building Notifications 进行了一些挖掘。您可以使用icon参数设置图标。
但是对于通知里面的Badge,这个好像是Android系统自己处理的,不能修改。也取决于设备,很可能徽章不可见,因为 Android 本身不允许Notification Badges even for App Icons。
到目前为止,我已经在我的设备上进行了一些测试,只有显示徽章的通知是可以由 Google Apps(Gmail、Drive、Photos 等)打开的通知和设备制造商发送的通知。
您在帖子中添加的徽章必须是设备制造商制作的默认徽章,并且仅由于设备的应用启动器而显示。
长话短说,您无法设置通知的图标徽章。
【讨论】:
【参考方案6】:如果您想在大图标上隐藏小图标,请使用
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) 玩更多游戏
【讨论】:
以上是关于我们可以为 FCM 中的通知徽章图标使用多大的尺寸?的主要内容,如果未能解决你的问题,请参考以下文章
使用 cordova 在 Android/Ios 中显示徽章编号