当前位置: 首页 > 知识库问答 >
问题:

未触发Firebase云消息onMessageReceived

阙辰龙
2023-03-14

按照Firebase开发文档中的说明,我已经实现了一个扩展Firebase MessagingService的服务,并覆盖了onMessageRec的回调。我已经将一条Log消息放在onMessageRec的方法的第一行中。

应用程序在后台运行我没有在logcat中看到日志,但我看到系统中发布了一个通知。

应用程序在前台我既没有看到日志也没有通知在系统托盘

知道这是怎么回事吗?

清单

   <service
        android:name=".fcm.MovieMessagingService">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT"/>
        </intent-filter>
    </service>

服务等级

public class MovieMessagingService extends FirebaseMessagingService {

    private static final String LOG_TAG = MovieMessagingService.class.getSimpleName();

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {


        Log.d(LOG_TAG, "From: " + remoteMessage.getFrom());

    }

    /**
     * Create and show a simple notification containing the received FCM message.
     *
     * @param messageBody FCM message body received.
     */
    private void sendNotification(String messageBody) {
        Log.d(LOG_TAG, "Presenting Notification with message body: " + messageBody);
//more code
    }
}

共有2个答案

贺子昂
2023-03-14

下面是一个如何接收消息以及如何处理不同类型消息的代码示例。下面是代码的源代码。

public class MyFirebaseMessagingService extends FirebaseMessagingService {

private static final String TAG = "MyFirebaseMsgService";

/**
 * Called when message is received.
 *
 * @param remoteMessage Object representing the message received from Firebase Cloud Messaging.
 */
// [START receive_message]
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    // [START_EXCLUDE]
    // There are two types of messages data messages and notification messages. Data messages are handled
    // here in onMessageReceived whether the app is in the foreground or background. Data messages are the type
    // traditionally used with GCM. Notification messages are only received here in onMessageReceived when the app
    // is in the foreground. When the app is in the background an automatically generated notification is displayed.
    // When the user taps on the notification they are returned to the app. Messages containing both notification
    // and data payloads are treated as notification messages. The Firebase console always sends notification
    // messages. For more see: https://firebase.google.com/docs/cloud-messaging/concept-options
    // [END_EXCLUDE]

    Log.d(TAG, "From: " + remoteMessage.getFrom());

    // Check if message contains a data payload.
    if (remoteMessage.getData().size() > 0) {
        Log.d(TAG, "Message data payload: " + remoteMessage.getData());
    }

    // Check if message contains a notification payload.
    if (remoteMessage.getNotification() != null) {
        Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
    }

}
衡玄裳
2023-03-14

实际上,应用程序在接收包括通知和数据有效载荷的消息时的行为取决于应用程序是在后台还是前台,如:

在后台时,应用会在通知托盘中接收通知负载,并且仅在用户点击通知时处理数据负载。

在前台时,应用会接收一个消息对象,该对象同时附加了两个有效载荷。

因此,总结是当应用程序在后台时,您可以在系统托盘中看到通知,在点击通知之前无法看到任何日志,但您将只看到打开的活动日志,而不是服务日志,因为它已经执行。

当应用程序位于前台时,您可以在logcat中看到登录,但在系统托盘中看不到任何通知,因为您的应用程序已处于打开状态,您将只收到数据有效负载。

 类似资料:
  • null 当我确实从Firebase云消息发送给自己一条测试消息时,它确实工作正常,并且成功地向每个设备发送了一个推送通知。 例如,以下是 null

  • FCM服务未向我的iOS应用程序发送消息。 > App CAN成功接收APNs令牌和实例ID令牌 App CAN使用推送通知实用程序利用. p8令牌在后台成功接收来自APN的推送 #2中使用的相同APNs密钥上传到Firebase控制台 应用程序无法接收Firebase控制台中Notification Composer发送的消息,也无法使用CURL请求接收消息。 应用程序在通过FCM发送时不显示任

  • null 我遵循Xamarin的文档实现了这个功能。 然后一步一步地执行,直到下面的部分: 后台通知 我点击了Log Token按钮并收到了令牌。 null Firebase控制台显示消息为“完成”。 我错过了什么来解决这个问题?

  • 我在使用 Firebase 云消息通知时遇到问题。当我想发送好友请求时,其他客户端没有收到通知。Firebase Functions日志说: 以下是JavaScript代码:

  • 在我的Android应用程序中,我收到使用Firebase发送的消息,问题不是所有消息都到达,有时消息到达非常慢。 在我的服务器端,我跟踪我发送到FCM的消息,我总是收到成功:来自FCM的1个响应,仍然有我在Android应用程序中没有收到的消息。 我认为FCM消息日志在上面描述的情况下会有很大的帮助,但我不确定是否存在此选项。 有办法浏览Firebase消息日志吗?

  • 有人知道一种从firebase控制台发送click_action的方法吗? 我只想发送click_action按钮来使用通知,即使应用程序关闭或在后台。