Flutter中FCM的自定义通知通道

Posted

技术标签:

【中文标题】Flutter中FCM的自定义通知通道【英文标题】:Custom notification channel for FCM in flutter 【发布时间】:2020-08-26 02:57:12 【问题描述】:

我正在尝试自定义 firebase_messaging 的通知声音。在前台,我正在实施 flutter_local_notifications 包以在我设置了自定义声音和振动的地方提供通知。但在后台的情况下,通知由默认通知通道处理。有什么方法可以创建通知通道或使用我刚刚使用 flutter_local_notifications 包创建的通知通道?

【问题讨论】:

【参考方案1】:

如果您在 Firebase 控制台中查看,在发送通知时,您可以在“其他选项”中指定一个频道 ID,在那里您可以使用 flutter_local_notifications 写入您已经创建的频道。

希望这会有所帮助!

【讨论】:

【参考方案2】:

对于那些因为在您的应用处于后台时您的 FCM 消息未按您喜欢的方式运行而到达这里的人:

如果您想要在应用程序处于后台时发出“提醒”通知并且您希望有自己的自定义声音伴随它,您可能需要创建一个通知通道。 FCM 使用的默认通知通道未启用“屏幕弹出”设置,而是使用默认系统声音。您可以通过转到设备上的应用设置来查看此信息。

OP 正在使用 flutter_local_notifications 包,它几乎是 Flutter 中通知处理的“首选”包。您可以通过createNotificationChannel 方法创建自己的通知通道并分配您想要的参数(包括声音和优先级)。这是让您的通知按照您的意愿行事的快捷方式。

如果您想在没有 flutter_local_notifications 包的情况下创建自己的通知通道,那么您将必须修改您的 MainActivity.kt(或 Java)文件的本机形式。它并不过分复杂,但它比仅仅使用 flutter_local_notifications 包更底层。 This Medium post 描述了如何做到这一点(对于 android)。

【讨论】:

ios 有什么想法吗? @Shalabyer 这个 Q/A 应该对此有所帮助——这就是我设置我的方式:***.com/questions/54002617/… 感谢您的回复,我一定会尝试的。 我刚刚修改了 Q/A,在我看来它只能在前台工作,因为在他没有创建通知渠道的答案中,我们需要一个通知渠道来制作背景中的自定义声音我说对了吗? @Shalabyer 您没有像在 Android 上那样在 iOS 上创建通知通道——您是否按照 Q/A 中的说明将资产添加到捆绑包中?您可能需要修改您的 JSON 有效负载,我经过反复试验才得到它,不幸的是我现在没有它可以提供给您。也许这个 Q/A 会指导你? ***.com/questions/41562823/…

以上是关于Flutter中FCM的自定义通知通道的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 FCM 在 ios 推送通知中播放自定义通知声音

有没有办法拦截和禁用默认的后台 FCM 通知并在 firebase 消息传递服务工作者中显示自定义通知

如何在 Laravel 5.3 中添加自定义通知通道

当应用程序处于后台时,Flutter Cloud Messaging 自定义通知声音不起作用

使用 firebase_messaging 自定义通知(Android 和 IOS)

在 Android 中自定义通知区域