Я не могу получать уведомления, когда экран заблокирован - PullRequest
0 голосов
/ 14 июня 2019

Я работаю с Firebase, чтобы отправить Push-уведомление. Когда у меня свернуто приложение, заблокирован экран и сеть передачи данных в сети 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");
    }
}

Я ожидаю получить уведомление, пока экран заблокирован. º

1 Ответ

0 голосов
/ 14 июня 2019

Начиная с Android 8.0, они устанавливают фоновое ограничение на выполнение , и, следовательно, вы не получаете push-уведомление, когда ваше приложение находится в фоновом режиме.

Я хотел бы предложить реализовать JobScheduler, который будет подключаться к вашему серверу, чтобы увидеть, есть ли какие-либо ожидающие уведомления, и создать соответствующее уведомление.Вот пример проекта о том, как вы можете реализовать свой JobScheduler .

Однако Android заботится о push-уведомлениях, и я думаю, что вы получите уведомление через 3-5 минут (не сразу, когда служба находится на переднем плане).

...