如何在#flutter中更改Android通知图标/状态栏图标的推送通知?

xu3bshqb  于 2023-06-07  发布在  Flutter
关注(0)|答案(3)|浏览(709)

我想用我自己的推送通知图标替换默认图标。
现在应用程序显示图标为白色框。

jvlzgdj9

jvlzgdj91#

Ajay的答案是正确的,但要扩展一下:

注意:在开始之前,请确保您的图标/图像具有透明背景。如果您的图像背景有颜色,则解决方案看起来不起作用。

1.创建mipmap通知图标。您可以使用Roman's Notification Icon Generator轻松完成此操作-单击“通知图标生成器”
1.在左侧面板上,单击“图像”上传您自己的图像或使用剪贴画或提供的文本。
1.完成后,单击右上角的下载按钮下载zip文件。Roman的通知图标生成器的替代方案,请尝试appicon.co
1.在zip文件中,图标文件将位于与项目目录中的mipmap目录同名的各个目录中(例如,“mipmap-hdpi”、“mipmap-mdpi”等)。将图标文件移动到项目中各自的文件夹中。
1.在您的AndroidManifest.xml文件(位于android/app/src/main/AndroidManifest.xml)中,将元数据添加到“application”标签中:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.your.package">

    <application
        android:name="com.your.package.Application"
        android:label="YourAppName"
        android:icon="@mipmap/launcher_icon">

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

1.保存您的文件。您可能需要停止并重新启动或卸载并重新安装您的应用,才能开始显示通知图标。
1.您的图标可能是白色的,所以如果您想更改颜色,您可以在刚刚添加的图标元数据标签下面添加以下元数据标签:

<meta-data
          android:name="com.google.firebase.messaging.default_notification_color"
          android:resource="@android:color/black" />

这会将图标更改为黑色,但您可以在res/values中设置自己的颜色,如下所述:Android System Color Constants
有关元数据标记的信息如下:https://firebase.google.com/docs/cloud-messaging/android/receive

o4hqfura

o4hqfura2#

只需在清单文件中添加一个元数据内部标记。
Reference

<!-- Set custom default icon. This is used when no icon is set for incoming notification messages. -->

<application
    android:name="io.flutter.app.FlutterApplication"
    android:label="When Coin"
    android:icon="@mipmap/ic_launcher">
<meta-data
   android:name="com.google.firebase.messaging.default_notification_icon"
   android:resource="@mipmap/ic_stat_ic_notification" />

注意:在开始之前,请确保您的图标/图像具有透明背景。如果您的图像背景有颜色,则解决方案看起来不起作用。

想要生成mipmap图标,请尝试appicon.co/

tuwxkamq

tuwxkamq3#

一旦你做了上面提到的步骤有时不工作,并显示默认Flutter图标.在这种情况下,需要更改或设置flutter_local_notifications的通知设置如下:

flutterLocalNotificationsPlugin.show(id, title, body,
      payload: payload,
      NotificationDetails(
        android: AndroidNotificationDetails(
          channel.id,
          channel.name,
          channelDescription: channel.description,
          icon: '@mipmap/your_icon_name',
        ),
          )
    );

有关更多信息,请阅读此说明
https://firebase.flutter.dev/docs/messaging/notifications

相关问题