首页 > 解决方案 > 锁屏时收不到通知

问题描述

我正在使用 Firebase 发送推送通知。当我将应用程序最小化并且屏幕锁定和数据网络在 3G 上,并且电池电量为 90% 时,我无法收到通知。我需要在屏幕锁定时接收通知。

我当时在日志中记录了这一点以锁定屏幕。

2019-06-13 16:40:35.901 2372-9542/? D/MC_BatteryStatsData: operate removing wakelock wake:com.exampleapp/.FCMListenerService

这适用于 Moto C Android 版本 7。

我试图将此权限添加到清单文件中。

<uses-permission android:name="android.permission.WAKE_LOCK"/>

禁用电池保护程序。它在菜单中Settings -> Battery

这是我的FCMInstanceIDListenerService.java

public class FCMInstanceIDListenerService extends FirebaseInstanceIdService {

    private static final String TAG = "MyInstanceIDLS";

    @Override
    public void onTokenRefresh() {
        String refreshedToken = FirebaseInstanceId.getInstance().getToken();
        MetodosRepo.setPreference(getBaseContext(), Globals.DEVICE_TOKEN, refreshedToken);
    }

}

FMCListenerService.java

public class FCMListenerService extends FirebaseMessagingService {

    @Override
    public void onMessageReceived(RemoteMessage message) {
        Log.e(_TAG, "onMessageReceived");
    }
}

我希望在屏幕锁定时收到通知。º

标签: javaandroidpush-notificationfirebase-cloud-messagingandroid-wake-lock

解决方案


从 Android 8.0 开始,他们设置了后台执行限制,因此当您的应用程序在后台时,您不会收到推送通知。

我想建议实现一个JobScheduler将连接到您的服务器以查看是否有任何待处理通知并相应地创建通知警报的方法。这是一个关于如何实现 JobScheduler的示例项目。

但是,Android 会处理推送通知,我认为您会在 3-5 分钟后收到通知(当服务处于前台时几乎不会立即收到通知)。


推荐阅读