未使用 FCM 通知图标
Posted
技术标签:
【中文标题】未使用 FCM 通知图标【英文标题】:FCM Notification icon is not being used 【发布时间】:2016-12-31 04:09:24 【问题描述】:我正在使用FCM
,我可以成功地向我的应用发送推送通知。我想使用自定义通知图标,但它总是显示白色图标。我正在运行Lollipop
。
上面写着documentation
icon 可选,字符串 表示通知图标。将值设置为 可绘制资源 myicon 的 myicon。
(我不确定这到底是什么意思)。但这是我所做的。
我从 here 生成了图标。它确实有只有白色文本和透明背景的图标。图标的示例截图图片是
我添加到 res 文件夹
我编辑了我的 androidManifest 并添加了这个 android:icon="@drawable/ic_stat_set" in <Application
我尝试在设备上运行项目,新的应用图标 ic_stat_set 正在用作应用启动器。
我从控制台发送通知,我确实收到了它,但它不是我刚刚设置的图标。
我也尝试通过 api 发送。我确实收到了通知,但没有收到我设置的图标。
curl -X POST --header "Authorization: key=SERVERKEY" --Header "Content-Type: application/json" https://fcm.googleapis.com/fcm/send -d "\"to\":\"REGISTERATION-TOKEN-ID\",\"notification\":\"body\":\"Yellow\" , \"icon\" : \"ic_stat_set\" \"priority":\"10""
更新:我的可绘制图标文件是https://drive.google.com/open?id=0B5Fi1l7EbQ_BOERUMzNuQy1OWXM
我是否必须在控制台的这些自定义数据文件中添加一些内容?我的图标?我错过了什么?
谢谢
【问题讨论】:
loliipop 需要 silhouette 【参考方案1】:Lollipop
版本使用无背景图标png
图片。
NotificationCompat.Builder builder = new NotificationCompat.Builder(
this).setSmallIcon(getNotificationIcon())
.setContentTitle(title)
.setSound(defaultSoundUri)
.setDefaults(Notification.DEFAULT_ALL)
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setStyle(new NotificationCompat.BigTextStyle().bigText(message))
.setContentText(message).setAutoCancel(true)
.setContentIntent(contentIntent);
notificationManager.notify(NOTIFICATION_ID++, builder.build());
private int getNotificationIcon()
boolean useWhiteIcon = (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP);
return useWhiteIcon ? R.drawable.logo : R.drawable.ic_launcher;
【讨论】:
我上面提供的图标截图清楚地表明它是一个没有背景的png,不是吗? 他正在使用 FCM 和 Lollipop,没有数据字段。这段代码永远不会被执行。它是显示通知的系统。【参考方案2】:您应该使用 剪影图标 。您必须创建图标的剪影图标(即通知图标)。白色背景问题将由此解决。 它对我有用。请试一试。
【讨论】:
你也应该研究这个链接:-> blog.clevertap.com/… 我确实有透明图标,与您提供的博客链接中提到的相同。问题还在。 :S 必须创建通知图标的剪影图标(不管你是什么)?你应该试试 。它可能会起作用。它对我有用。 drive.google.com/open?id=0B5Fi1l7EbQ_BOERUMzNuQy1OWXM 这是图标的文件。他们是剪影吗? 试试这个图标一次 ->google.co.in/….【参考方案3】:默认情况下,棒棒糖状态栏图标颜色为白色后的android API,需要为高版本和旧版本设置图标。如果没有 hack,你可以试试这个:
int icon = Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP ? R.drawable.your_logo_for_Kitkat : R.mipmap.your_logo_for_Lolipop_and_uper_version;
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(icon)
.setContentTitle(remoteMessage.getData().get("title"))
.setContentText(remoteMessage.getData().get("shortDescription"))
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setColor(Color.RED)
.setStyle(notiStyle)
.setContentIntent(pendingIntent);
【讨论】:
他正在使用 FCM 和 Lollipop,没有数据字段。这段代码永远不会被执行。它是显示通知的系统。 还有系统为他的通知设置图标或标志!!【参考方案4】:我认为可能是您关闭状态栏的图标大小
看这里。
https://developer.android.com/guide/practices/ui_guidelines/icon_design_status_bar.html
您的应用图标应该与通知图标不同。
通知中的图标参数用于状态栏。
Manifest 中的图标参数是应用程序图标(快捷方式)
我推荐这个sample
【讨论】:
drive.google.com/open?id=0B5Fi1l7EbQ_BOERUMzNuQy1OWXM 这是 res 文件夹图标文件。你怎么看? @cjmling 您需要 2 个图标,一个用于启动器,一个用于通知。它们的大小不同。修复此问题并阅读我发送给您的内容,它应该可以工作。这些更改对我来说效果很好。 感谢它现在的工作。我实际上阅读了这篇文章,但找不到问题所在。现在我刚刚从示例应用程序中复制了可绘制图标/文件夹并进行了测试。工作很棒。 :) .. 可能是图标大小或其要求存在问题,我无法弄清楚它是什么。以上是关于未使用 FCM 通知图标的主要内容,如果未能解决你的问题,请参考以下文章