android - FCM 控制台推送有效,但服务器推送无效

标签 android firebase firebase-cloud-messaging

GCM 工作正常,但现在 fcm 不会收到任何通知,如果它是由服务器发送的它只有在从 firebase 控制台发送时才有效我几乎可以肯定问题出在我在应用程序中的数组形式中:

        String messageBody = remoteMessage.getNotification().getBody();

在 php 中:

        $fields = array(
        'registration_ids'  => $this->devices,
        'data'              => array( "message" => $message ),
    );

请问你怎么看

最佳答案

在您的问题中,您正在发送一条数据消息,这是一 strip 有如下有效负载的消息: {"registration_ids": ["token1"], "data": { "key1": "value1"}}

要接收data 有效负载(在示例中:key1:value1),客户端应用程序应使用:

String value1 = remoteMessage.getData().get("key1");

FCM 还支持显示消息
例子: {"registration_ids": ["token1"], "notification": { "body": "hello"}}
当应用程序处于后台时,这些消息会自动显示。 只有当应用程序已经打开并在前台时,它们才会调用 onMessageReceived()。 在第二种情况下,您可以通过以下方式访问原始通知的字段:remoteMessage.getNotification().getBody()

显示消息还可以包含 {"data": { "key1": "value1"}}
如果应用程序在前台,它可以像数据消息一样访问这些值。
如果应用程序在后台,则需要等到用户单击通知并启动 Activity 。
此时您可以通过以下方式访问数据:getIntent().getExtras()

PS:通过 Firebase Web 控制台发送的通知只是显示消息。

关于android - FCM 控制台推送有效,但服务器推送无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37611534/

相关文章:

android - 如何通过 PyFCM 发送只有数据有效负载的 FCM 消息?

android - 致命异常 : com. google.firebase.database.d : Class com. myapp.android.c 缺少没有参数的构造函数

javascript - 渲染从 firebase 检索的异步数据

android - 如何获取 firebase token ?

android - 将 android 项目迁移到 Gradle?

node.js - Firebase 管理员和自定义 token 数据传递到服务器

android - 在没有通知 channel 的情况下使用 Firebase 推送通知

android - 尝试调用 Resources 中的虚拟方法 res = getResources();

android - 自定义对话框与 imageview 到 gridview

安卓分享按钮