我正在使用Firebase通知作为我的应用程序的推送通知。一切正常,但应用程序未运行时通知图标会显示白色圆圈。我的目标是SDK版本23,我还使用Roman Nurik的通知图标生成器生成透明白色图标。
当应用程序处于前台并运行时,通知图标显示正确。img
但当应用程序处于后台或被删除时,图标会被替换为通用的白色圆圈。img公司
这是我的通知生成器方法:
private void sendNotification(String messageTitle, String messageBody) {
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent,
PendingIntent.FLAG_ONE_SHOT);
NotificationCompat.Builder notification = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_stat_notification_icon)
.setContentTitle(messageTitle)
.setContentText(messageBody)
.setStyle(new NotificationCompat.BigTextStyle().bigText(messageBody))
.setAutoCancel(true)
.setPriority(Notification.PRIORITY_DEFAULT)
.setDefaults(Notification.DEFAULT_ALL)
.setContentIntent(pendingIntent);
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, notification.build());
}
我认为您需要在应用程序中添加一个剪影图标,并在设备运行Android Lollipop时使用它。
使用以下代码获取小图标以进行通知。
protected int getNotificationIcon() {
boolean useWhiteIcon = (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP);
return useWhiteIcon ? R.drawable.ic_silhouette : R.drawable.ic_launcher;
}
你可以在这里看到完整的解决方案。
我做了同样的事情,效果很好。
请尝试以下代码:
Intent intent = new Intent(this, TabActivity.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);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(getNotificationIcon())
.setContentTitle("IDS DMS Support")
.setContentText(messageBody)
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
我已经找到了类似问题的答案:带有新的Firebase云消息传递系统的通知图标
不幸的是,这是SDK 9.0.0中Firebase通知的限制。当应用程序在后台时,从清单中使用启动器图标(带有必要的Android着色)用于从控制台发送的消息。
如果应用程序位于前台(或发送数据消息),您应该能够使用自己的逻辑进行自定义,如果从HTTP/XMPP API发送消息,您应该能够自定义图标。现在,通过从控制台发送的消息,您将看到这种行为。
似乎避免这个Firebase通知错误的最好方法是在构建中更改您的targetSdkVersion。渐变到19。通知图标将被着色。Firebase将在一段时间后修复此问题。
希望会有帮助
我今天的通知图标有一个奇怪的问题。 我做了什么坏事吗? 这是我的图标图片(刚从这里下载https://material.io/icons/#ic_photo) : http://image.noelshack.com/fichiers/2016/44/1478185219-icon-notification.png 我错过什么了吗? 作为记录,我使用的是SDK 24,目前只创建了hdpi资源文件夹
下面是我的函数的简化版本: 我没有任何特定的java代码,因为我现在只需要显示通知。有没有人想过用一种简单的方法来存档这个问题?
我对Firebase通知有问题,如果我在应用程序在屏幕上运行时发送通知,通知会正确显示如下: 如果我在后台运行应用程序时发送通知,则通知如下所示: 这是我的FirebaseMessagingService类 为什么会这样?
我正在尝试在windows Phone7.5中实现推送通知 更新: 我知道通道活动时间长达30天,当我只使用模拟器时是否相同? 应用程序应与通道相关联,以便接收通知,即使在应用程序未运行时,如果通知通道处于活动状态,则应用程序也将接收toast
当我打开我的android应用程序并测试解析推送通知时,它工作了。但是当我把我的应用程序从多任务中杀死并再次测试时,应用程序崩溃了。 错误日志 08-18 21:16:21.694 244 06-24406/?E/AndroidRuntime:致命异常:main process:com.myatminsoe.mKeyboard,PID:24406 java.lang.runtimeExceptio
问题内容: 这是我有趣的问题。当应用未运行时,来自GCM的Android通知未显示标题和内容( 仅 显示应用名称,并且在单击时打开MainActivity)。 但是,当应用程序打开时,它会 成功 显示标题和内容。可能是什么问题?它运行没有问题,我没有进行任何更改。 表现: GcmService.java: 谢谢。 在应用程序运行时记录。 应用未运行时记录。 问题答案: 找到了问题。我使用的是Pla