我可以使用 FCM 云将数据从数据库发送到我的 Android 应用程序吗?

Posted

技术标签:

【中文标题】我可以使用 FCM 云将数据从数据库发送到我的 Android 应用程序吗?【英文标题】:Can I send data from the database to my Android app using FCM cloud [closed] 【发布时间】:2019-03-30 06:59:01 【问题描述】:

我有一个允许用户写帖子和评论帖子的应用程序。当他的帖子有新评论时,我想使用 firebase cloud FCM 发送帖子作者通知。我将使用 FCM 云向用户编写器显示通知。但在那之后,当用户单击此通知时,我需要一个活动打开,帖子中出现 cmets 。为此,我需要向用户发送数据库中的帖子子项,以便在单击通知时打开。我的问题是我不知道是否可以从数据库发送数据?如果可以做到,我需要知道怎么做?

【问题讨论】:

您可以在 FCM 消息中发送数据,但更好的实施方式是在加载活动时让应用从您的服务器获取任何新消息 正如@tyczj 所说,你可以同时做到这两点。如果您发送几个 ID,则执行您的方法会起作用,但 FCM 的有效负载限制为 4KB。 @Zaki 如何发送数据 【参考方案1】:

我假设您正在使用云功能使用令牌向用户的设备发送通知。 您可以将数据发送到收件人活动,如下所示。在这里,您需要发送您的 postID。 现在您的有效载荷将如下所示:

const payload = 
        notification: 
        title: you_notification_title,
        body: text,
        icon : "ic_notification_small",
        sound : "default",
        click_action: "NEW_MESSAGE",
        "content_available": "true",
        badge : "1"
    , 
       data: 
            postID: "your_postID",
        
    ;

这里click_action 是关键。当用户单击通知时,将启动 android Manifest.xml 中标记为“NEW_MESSAGE”的活动。所以为了在点击通知时启动一个活动,它应该在清单中定义如下:

<activity
        android:name=".Your_Activity">
        <intent-filter>
            <action android:name="NEW_MESSAGE" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

现在,当您的用户点击通知时,他们将被带到Your_Activity

在您的Your_Activity 中,您可以像这样从通知中获取数据:

String postID= remoteMessage.getData().get(“postID”);

使用此 postID,您需要从 firebase 获取该帖子的相应数据。

【讨论】:

我需要知道如何将帖子 ID 发送到 NEW_MESSAGE 活动,它与数据库中的新评论一起存储如果你告诉我如何将评论子项的这个 ID 发送到 NEW_MESSAGE 活动我会接受你的回答 请查看我更新的答案。 我现在会尝试这样做 @KarthicSrinivasan 你还没有解释如何获取帖子 ID 请检查我回答的最后一部分。您可以像这样在登陆活动中获取 postID: String postID= remoteMessage.getData().get(“postID”)

以上是关于我可以使用 FCM 云将数据从数据库发送到我的 Android 应用程序吗?的主要内容,如果未能解决你的问题,请参考以下文章

FCM - 从 Java 向我的 android 设备发送通知

如何将 FCM 令牌发送到我的 php 服务器

如何将数据从 FCM 的 onMessageReceived() 发送到 Fragment?

如何使用 FCM 向我的数据库中的用户发送推送通知?安卓

将 BigQuery 结果与 FCM 结合使用

如何显示随服务器发送的FCM Firebase通知