如何使用 FCM(Firebase 云消息传递)制作紧凑通知?

Posted

技术标签:

【中文标题】如何使用 FCM(Firebase 云消息传递)制作紧凑通知?【英文标题】:How to make a compact notification with FCM (Firebase Cloud Messaging)? 【发布时间】:2019-12-16 10:28:22 【问题描述】:

由于 FCM 不允许我发送 URL 类型“图标”,我试图在 FCM 类型“数据”的消息到达后立即应用本地通知。但是关闭应用程序时不会处理“数据”类型的消息,因此我不得不重用“通知”类型的消息。由于“图标”选项不适用于我正在考虑使用“图像”的 URL,但我只需要充当图标的小图标。有什么方法可以压缩消息,使其隐藏大图像而只显示小图像?

类似于下图中的第二条消息,这个隐藏的大图接收另一条消息。

example image

REST中通知的JSON结构如下:


    "to": "fVJq6D9...................................",
    "notification": 
        "title": "Title Message 2",
        "body": "Body Message 2",
        "image": "http://www.iconarchive.com/download/i65798/hopstarter/bioman/Bioman-Avatar-1-Red.ico"
    

对于应用程序的构建,我正在使用 Flutter。

【问题讨论】:

【参考方案1】:

目前这是不可能的,因为您要动态设置的图标是 setSmallIcon() 设置的小图标,它需要本地存储资源的 id 定义:

    /**
     * Set the small icon to use in the notification layouts.  Different classes of devices
     * may return different sizes.  See the UX guidelines for more information on how to
     * design these icons.
     *
     * @param icon A resource ID in the application's package of the drawable to use.
     */
    public Builder setSmallIcon(int icon) 
        mNotification.icon = icon;
        return this;
    

您无法获取服务器获取的图像的 id。相反,您可以尝试根据情况创建不同的通知,并在代码中设置相应的小图标。

【讨论】:

它是一个消息应用程序,所以图标会对应一个联系人的头像。我认为将每个联系人的照片存储在手机上并不是最佳选择,因此我想通过 URL 获取它们。当应用程序处于前台时可以毫无问题地创建个性化通知,或者通过 FCM 接收它们并使用此插件 pub.dev/packages/flutter_local_notifications 创建它们来最小化它们,但如果它关闭,则不会收到数据,正如文档中已经警告的那样:(

以上是关于如何使用 FCM(Firebase 云消息传递)制作紧凑通知?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Firebase 云消息传递 (FCM) 中使用深度链接

如何向 FCM(Firebase 云消息传递)令牌的特定用户发送消息?

如何在 Xamarin.iOS 中使用 FCM(Firebase 云消息传递)发送 iOS 推送通知

Firebase Admin SDK、FCM 云消息传递

使用 PhoneGap 和 Firebase 云消息传递 (FCM) 的简单推送通知 Android 应用程序

如何将 FCM(firebase 云消息传递)与 react-native 集成