答案 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 Notifications和Building 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;
}