我正在使用Firebase,并测试在应用程序处于后台时从服务器向应用程序发送通知.通知发送成功后,它甚至会出现在设备的通知中心上,但是当通知出现时,或者即使我点击它,我的FCMessagingService中的onMessageReceived方法也不会被调用.

当我在我的应用程序处于前台时对其进行测试时,调用了onMessageReceived方法,一切工作正常.该问题发生在应用程序在后台运行时.

这是有意为之的行为,还是有什么我可以纠正的方法?

以下是我的FBMessagingService:

import android.util.Log;

import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;

public class FBMessagingService extends FirebaseMessagingService {

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        Log.i("PVL", "MESSAGE RECEIVED!!");
        if (remoteMessage.getNotification().getBody() != null) {
            Log.i("PVL", "RECEIVED MESSAGE: " + remoteMessage.getNotification().getBody());
        } else {
            Log.i("PVL", "RECEIVED MESSAGE: " + remoteMessage.getData().get("message"));
        }
    }
}

推荐答案

这可以正常工作,只有当您的应用程序处于前台时,通知消息才会传递到onMessageReceived回调.如果您的应用程序在后台或已关闭,则通知中心会显示一条通知消息,并显示用户点击通知后启动的任何data from that message is passed to the intent个通知消息.

您可以指定CLICK_ACTION以指示用户点击通知时应启动的意图.如果未指定click_action,则使用主活动.

启动意图后,您可以使用

getIntent().getExtras();

以检索将包括随通知消息一起发送的任何数据的集合.

有关通知消息的更多信息,请参阅docs.

Android相关问答推荐

如何将文本相对于喷气背包中的图标垂直居中?

带有kSP而不是kapt的Hilt

Android配置设置. gradle不同应用风格

BroadCastReceiver的onReceive方法中的Intent上的Extras为空

触发PurchasesUpdatedListener回调时,billingClient.launchBillingFlow之前设置的成员变量丢失

从不可组合回调打开可组合屏幕

如何将 Room Persistence 依赖项正确添加到我的 Jetack Compose Android 应用程序

仅当先前输入为 yes 时,Android 才会要求下一个输入

Jetpack Compose 中的用户在线指示器

Android AGP 8 + Gradle 8 + Kotlin 1.8 导致 Kapt 出错

如何从 firebase 实时数据库中检索最后一个值

发布 MAUI 应用程序时出现遇到重复程序集错误

如何将一个没有 GRADLE 的古老 Android 项目导入到今天的 Android Studio 中?

AirDroid Business 如何能够从屏幕截图中排除覆盖?

每次在 Jetpack Compose 中调用导航

LazyColumn 单选中的状态提升. Jetpack compose

在compose中,为什么修改List元素的属性,LazyColumn不刷新

firebase-messaging和firebase-inappmessaging-display之间有什么区别?

从expose 的 dropdownMenu 可组合、jetpack 组合中 Select 选项时,不会触发文本字段的 onValueChange

EAS 构建失败,错误代码为 1,但 Expo Build 成功,我需要 EAS 构建来删除未使用的包,如 com.segment.analytics.android:analytics