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

应用程序在前台时未调用Firebase onMessageReceived

牟波
2023-03-14

我清楚地阅读了很多关于firebase推送通知行为的文档。当我的应用程序位于后台时,我可以在系统托盘上看到通知,但当应用程序位于前台时,不会触发“收到消息时”的回调。我可以看到我的应用程序上收到消息的日志。我试着用数据负载和没有数据负载的应用服务器进行通话。我的应用服务器正在使用php脚本来触发fcm API。下面是我正在使用的php脚本

  $url = 'https://fcm.googleapis.com/fcm/send';
  $fields = array(
            'registration_ids' => $registatoin_ids,
     'notification' => array( "title"=>$title, "body" => $notification_message ,"click_action"  => $click_action,'color' => "#74BCEE",'icon' => "school_logo"));
      $headers = array(
            'Authorization: key='xxxxxxxxx',
            'Content-Type: application/json'
        );

        // Open connection
        $ch = curl_init();

        //echo "here";exit;
        // Set the url, number of POST vars, POST data
        curl_setopt($ch, CURLOPT_URL, $url);

        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        // Disabling SSL Certificate support temporarly
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));

        // Execute post
        $result = curl_exec($ch);
        if ($result === FALSE) {
            //die('Curl failed: ' . curl_error($ch));
            curl_close($ch);
            return;

        }
        print_r($result);

以下是我在我的Android应用程序中使用的服务

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

<service
    android:name="service.MyFirebaseInstanceIdService">
    <intent-filter>
        <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
    </intent-filter>
</service>

共有1个答案

郗缪文
2023-03-14

我也有同样的问题。我的问题是

 类似资料:
  • 我正在使用Firebase,并测试在应用程序处于后台时从服务器向应用程序发送通知。通知发送成功,它甚至出现在设备的通知中心上,但是当通知出现或者即使我单击它,我的FCMessagingService中的onMessageReceived方法也从未被调用。 当我在应用程序处于前台时进行测试时,调用了onMessageReceived方法,所有工作都很好。该问题发生在应用程序在后台运行时。 这是有意为

  • 我试图完成的是解析来自Remotemessage的传入数据,并根据自定义标记对其进行不同的处理。例如,如果数据映射包含一个名为“my_custom_tag”的字段,我希望完全覆盖弹出的标准firebase消息并编写一个自定义消息。 问题是,当应用程序在后台运行时,我放入onMessageReceived的任何代码都不会被触发。当应用程序在前台运行时,它工作得很好,但如果应用程序在后台,它将不会检测

  • 我使用firebase在iOS中实现推送通知,目标为C。我有方法,根据其描述,当应用程序处于后台且用户点击通知时,以及当应用程序处于前台时,都应该触发该方法。问题是它只能在后台工作(或者当应用程序没有运行时)。我是不是忘了什么?

  • 问题内容: 我有一个View Controller,其中我的值为0(标签),而当我从另一个视图控制器中打开该View Controller时,我已设置为将label的值设置为20。它可以正常工作,但是当我关闭我的应用程序并再次打开我的应用程序时,该值不会更改,因为,并且没有任何调用。打开我的应用程序时该怎么打电话。我需要做些什么吗? 问题答案: 我对事件的确切顺序感到好奇,所以我对应用程序进行了如

  • 根据文件: 如果希望前台应用程序接收通知消息或数据消息,则需要编写代码来处理onMessageReceived回调。 null 我是不是漏掉了什么?不应该是同一个服务处理应用程序的两个应用程序状态来接收消息吗?我不想在app已经打开时显示系统栏通知,但我确实想改变UI中的一些元素,以指示用户他们在聊天中有新消息。 代码如下: 服务:

  • 我遵循本教程在我的android设备上接收推送通知。 我可以从Firebase控制台发送推送通知-我还可以在logcat中看到Firebase事件,但我的永远不会被触发。我的应用程序在前台运行。 以下是我发送通知后logcat中的输出: MyFirebaseMessageService.java FirebaseIDService.java AndroidManifest.xml: build.g