我在 .NET MAUI 中遇到推送通知问题。我正在使用 Firebase Cloud Messaging,并且已成功将其集成到我的应用程序中。问题出在通知图标上;当我在使用应用程序时收到通知时,图标会正确显示,但如果我在应用程序关闭时收到通知,图标会显得很小并在一个较大的圆圈内(看起来不太好)。我尝试过使用带有彩色或白色和透明背景的 SVG 和 PNG 文件,但似乎没有任何效果。这就是我用过的图像。
问题截图如下:
这些示例是使用名为 small_notification_icon.png 的 PNG 文件制作的,并保存在 Resources/Images 文件夹中,该文件夹仅使用透明背景的白色。这是我使用的代码:
var notificationBuilder = new NotificationCompat.Builder(this, MainActivity.ChannelID)
.SetSmallIcon(Resource.Drawable.small_notification_icon)
.SetContentTitle(title)
.SetContentText(messageBody)
.SetChannelId(MainActivity.ChannelID)
.SetPriority((int)NotificationPriority.High);
var notificationManager = NotificationManagerCompat.From(this);
notificationManager.Notify(MainActivity.NotificationID, notificationBuilder.Build());
如果您能提供有关如何解决此问题的任何帮助或建议,我将不胜感激。
我已经确定了问题。当应用程序在后台运行时,从控制台发送的通知使用清单文件中指定的启动器图标。
要解决此问题,您只需在
AndroidManifest
标签中插入以下代码即可替换 Application
中指定的默认图像。您所需要做的就是将 your_favourite_image 替换为您喜欢的通知图标图像。
<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@drawable/your_favourite_image" />
这应该可以解决问题并允许您使用您喜欢的图像进行通知。
我用过
.SetSmallIcon(Resource.Drawable.appiconfg)
,没问题。它使用我的应用程序图标,该图标是项目中的 SVG 文件。
轻松解决:
FirebaseCloudMessagingImplementation.SmallIconRef = Resource.Drawable.dotnet_bot
private void CreateNotificationChannel()
{
var channelId = $"{PackageName}.general";
var notificationManager = (NotificationManager)GetSystemService(NotificationService);
var channel = new NotificationChannel(channelId, "General", NotificationImportance.High);
notificationManager.CreateNotificationChannel(channel);
FirebaseCloudMessagingImplementation.ChannelId = channelId;
FirebaseCloudMessagingImplementation.SmallIconRef = Resource.Drawable.dotnet_bot;
}
接受的答案让我开始了,但我仍然对一些细节有点不清楚。这是我的具体设置,以防对其他人有帮助:
请注意,我使用的是 icon 和 icon.png,因此您可能需要更改这些名称以匹配您的具体情况。
<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@drawable/icon" />