Flutter使用awesome_notifications无法显示带图片通知如何解决
带图片通知无法展示的修复方案
去掉bigPicture就能正常弹出通知,说明基础通知权限、渠道配置本身没有问题,故障点集中在网络图片加载环节,按以下步骤逐一排查调整即可:
- 补全必要权限配置
安卓端打开android/app/src/main/AndroidManifest.xml,在<manifest>根节点下(和<application>标签平级)确认已添加网络权限:
安卓13及以上版本需要额外确认已经申请了通知推送权限,不过你去掉图片能正常弹通知,这一步大概率已经配置完成。iOS端需要在<uses-permission android:name="android.permission.INTERNET" />Info.plist中确认开启了HTTPS资源访问权限,避免网络图片被系统拦截。 - 修正初始化配置
初始化awesome_notifications时,要开启调试日志方便排查问题,同时确保创建的通知渠道优先级足够支持大图片展示:await AwesomeNotifications().initialize( 'resource://drawable/res_app_icon', // 替换为你自己的应用默认图标 [ NotificationChannel( channelKey: 'basic_channel', channelName: '消息通知', channelDescription: '用于接收聊天类消息', importance: NotificationImportance.High, defaultPrivacy: NotificationPrivacy.Private, ) ], debug: true, // 调试阶段打开,原生侧会打印图片加载、通知创建的详细错误日志 ); - 排查图片资源问题
你当前用的测试图片存储在维基媒体服务器,国内网络环境下大概率访问超时,而awesome_notifications加载网络图片失败时会直接终止通知创建流程,就会出现完全弹不出通知的情况。另外安卓系统对通知大图片有大小限制,单张图片体积不要超过2MB,分辨率不要超过4K,否则也会加载失败。
测试阶段先换一个国内可正常访问、体积在1MB以内的HTTPS图片地址验证功能。 - 匹配布局与字段配置
你当前使用的NotificationLayout.Messaging是聊天消息布局,如果要展示消息附带的大图,建议先切换成NotificationLayout.BigPicture布局验证图片加载能力,确认图片能正常展示后再切回Messaging布局;切回时注意给largeIcon字段配置发送者头像地址,避免布局参数缺失导致渲染失败。
修正后的测试代码参考:
await AwesomeNotifications().createNotification( content: NotificationContent( id: UniqueKey().hashCode, groupKey: message.data["senderUid"], channelKey: 'basic_channel', title: message.data["title"], body: message.data["body"], summary: message.data["body"], bigPicture: "替换为可正常访问的小体积HTTPS图片地址", largeIcon: "替换为发送者头像地址", notificationLayout: NotificationLayout.BigPicture, // 测试通过后再改回Messaging ), );
如果还是无法弹出,直接看安卓端logcat或者iOS端控制台日志,debug模式下会明确打印具体错误原因,是网络超时、图片过大还是参数不匹配一眼就能看到。
内容的提问来源于stack exchange,提问作者PeakGen
相关产品推荐
相关产品推荐

