.NET MAUI Android 中的通知图标

问题描述 投票:0回答:4

我在 .NET MAUI 中遇到推送通知问题。我正在使用 Firebase Cloud Messaging,并且已成功将其集成到我的应用程序中。问题出在通知图标上;当我在使用应用程序时收到通知时,图标会正确显示,但如果我在应用程序关闭时收到通知,图标会显得很小并在一个较大的圆圈内(看起来不太好)。我尝试过使用带有彩色或白色和透明背景的 SVG 和 PNG 文件,但似乎没有任何效果。这就是我用过的图像

问题截图如下:

应用程序内部: Inside the app

如果我在应用程序中向下滚动: And if I scroll down while in the app

应用程序外部(关闭时): Outside the app (when closed)

再次,如果我在应用程序关闭时向下滚动: And again, if I scroll down while the app is closed

这些示例是使用名为 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());

如果您能提供有关如何解决此问题的任何帮助或建议,我将不胜感激。

c# android xamarin maui
4个回答
4
投票

我已经确定了问题。当应用程序在后台运行时,从控制台发送的通知使用清单文件中指定的启动器图标。

要解决此问题,您只需在

AndroidManifest
标签中插入以下代码即可替换
Application
中指定的默认图像。您所需要做的就是将 your_favourite_image 替换为您喜欢的通知图标图像。

<meta-data
    android:name="com.google.firebase.messaging.default_notification_icon"
    android:resource="@drawable/your_favourite_image" />

这应该可以解决问题并允许您使用您喜欢的图像进行通知。


0
投票

我用过

.SetSmallIcon(Resource.Drawable.appiconfg)
,没问题。它使用我的应用程序图标,该图标是项目中的 SVG 文件。


0
投票

轻松解决:

  1. 替换资源>图像> dotnet_bot.svg中的图像
  2. 现在,使用smalliconref dotnet_bot
    FirebaseCloudMessagingImplementation.SmallIconRef = Resource.Drawable.dotnet_bot
  3. 示例:


    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;
        }



0
投票

接受的答案让我开始了,但我仍然对一些细节有点不清楚。这是我的具体设置,以防对其他人有帮助:

  1. 我创建了一个名为 icon.png 的文件。您可以随意命名它。
  2. 我将图像放置在 /Platforms/Android/Resources/drawable/icon.png 中 enter image description here
    1. 我实际上不确定应该设置什么构建操作。我用 Build Action:None 尝试过,它对我来说效果很好...... enter image description here
  3. 打开 AndroidManfest.xml,它可能位于 /Platforms/Android/
  4. 将其添加到应用程序标签内(请参阅实际文本): enter image description here
  5. 构建并运行您的应用程序
  6. 为您的应用程序设置背景
  7. 触发推送通知

请注意,我使用的是 iconicon.png,因此您可能需要更改这些名称以匹配您的具体情况。

<meta-data
    android:name="com.google.firebase.messaging.default_notification_icon"
    android:resource="@drawable/icon" />
© www.soinside.com 2019 - 2024. All rights reserved.