2

大家,我正在使用 firebase 从服务器接收推送通知。应用程序运行时一切正常。我收到通知,我处理它并将它显示在通知托盘上。看起来很完美。这是我的代码。

public class FirebasePushService extends FirebaseMessagingService {
    private static final String TAG = "FireBase main service ";

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        Log.d(TAG, "Got Message: " + remoteMessage.getFrom());
        try {
            if (remoteMessage != null && remoteMessage.getNotification() != null
                    && remoteMessage.getNotification().getBody() != null) {
                String body = remoteMessage.getNotification().getBody();

                Log.d(TAG, "From: " + remoteMessage.getFrom());
                Log.d(TAG, "Notification Message Body: " + body );

            }
        } catch (JSONException e) {
            e.printStackTrace();
        }


    }}

清单代码。

 <service android:name="app.asparagus.com.asparagus.firebase.FirebasePushService">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT" />
            </intent-filter>
        </service>

. 问题是应用程序何时关闭。没有这个类的日志作品,什么都没有。但这是有趣的部分。我可以从服务器看到整个 JSON,它显示在通知托盘上(显示整个 JSON 对象)。真的没有得到我的代码有什么问题。检查图像。1- 成功案例。 在此处输入图像描述

2- 未知问题案例在此处输入图像描述

4

2 回答 2

0

从这个链接,我认为消息应该包含通知和数据有效负载。

或者,也许您可​​以像这样将消息的优先级设置为

{
  "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
  "priority" : "high",
  "notification" : {
    "body" : "This week's edition is now available.",
    "title" : "NewsMagazine.com",
    "icon" : "new"
  },
  "data" : {
    "volume" : "3.21.15",
    "contents" : "http://www.news-magazine.com/world-week/21659772"
  }
}
于 2017-07-25T20:50:06.430 回答
0

抱歉回复晚了,我找到了解决方案,万一其他人有问题。这里来自firebase文档。 消息类型

使用 FCM,您可以向客户端发送两种类型的消息:

通知消息,有时被认为是“显示消息Data messages,由客户端应用程序处理。 通知消息包含一组预定义的用户可见键。相比之下,数据消息仅包含自定义键值对。通知消息可以包含在用户点击通知时传递的可选数据负载。

使用场景
通知消息 FCM 代表客户端应用程序自动将消息显示给最终用户设备。通知消息具有一组预定义的用户可见键和自定义键值对的可选数据负载。

如何发送 在 Cloud Functions 或您的应用服务器等可信环境中,使用 Admin SDK 或 HTTP 和 XMPP API:设置通知密钥。可能有可选的数据负载。始终可折叠。 使用通知编辑器:输入消息文本、标题等,然后发送。通过提供自定义数据添加可选数据负载。始终可折叠。

使用场景

数据消息 客户端应用程序负责处理数据消息。数据消息只有自定义键值对。在 Cloud Functions 或您的应用服务器等可信环境中,使用 Admin SDK 或 HTTP 和 XMPP API:仅设置数据密钥。可以是可折叠的或不可折叠的。

关联

于 2017-08-13T21:58:36.293 回答