Не получает сообщения FCM, когда приложение убито и в режиме оптимизированной батареи |OnePlus 5t | OnePlus 6 |Ошибка широковещательного обратного вызова: результат = ОТМЕНЕН - PullRequest
0 голосов
/ 10 сентября 2018

Я пытаюсь отправить сообщения FCM на свое устройство.Я получаю их правильно, когда приложение находится в фоновом режиме или на переднем плане.Однако, когда мое приложение убито, то есть, когда оно удалено из недавних приложений, я не получаю уведомления, если оно находится в стандартном «Оптимизированном» режиме использования батареи.Когда я устанавливаю режим батареи моего приложения на «Не оптимизирован», я получаю уведомления правильно, даже когда приложение убито.

И да, я пытался отправлять сообщения FCM и уведомления FCM с «Высоким» приоритетом, но вход в систему включенПолучение meassge показывает это:

Error broadcast intent callback: result=CANCELLED forIntent { act=com.google.android.c2dm.intent.RECEIVE pkg=com.flagg327.guicomaipu (has extras) }

Все другие приложения (WhatsApp, Facebook и т. д.) на моем устройстве находятся в режиме «Оптимизировано», но они получают push-уведомления, даже когда они убиты.

Я пытался установить подписанную версию моего приложения apk, но до сих пор нет ответа в фоновом режиме

Сейчас я реализовал базовую функциональность

@Override
protected void onStart() {
    super.onStart();  
packageName = getApplication().getPackageName();
intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
pm = (PowerManager) 
getApplication().getSystemService(Context.POWER_SERVICE);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && 
!pm.isIgnoringBatteryOptimizations(packageName)) {

intent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS);
    getApplication().startActivity(intent);
        }
        }

Это в основном приводит пользователя к настройкам и вынуждает егоотключить оптимизацию, но это плохой подход, как мы можем программно решить эту проблему.

Я использую OnePlus 5T (Android 8.1.0).Может кто-нибудь объяснить, почему это происходит именно в моем приложении? И как добавить мое приложение в белый список

это можно реализовать вот мой код для полезной нагрузки данных

JSONObject root = new JSONObject();

                    JSONObject data = new JSONObject();

                    data.put("type", type);
                    data.put("message", message);
                    data.put("id", pNumber);
                    data.put("count",count);
                    JSONObject android = new JSONObject();
                    android.put("priority","high");
                    root.put("android",android);
                    root.put("data", data);
                    root.put("to", "/topics/"+recipients);



                    String result = postToFCM(root.toString());

Любая помощь будет оценена ...

1 Ответ

0 голосов
/ 10 сентября 2018

Вот решение вашей проблемы.

  1. Перейдите в настройки вашего телефона.

  2. Нажмите «Приложения», а затем «Список приложений».

  3. Прокрутите вниз, чтобы найти your app и нажмите на него.

  4. Нажмите на уведомления и убедитесь, что он включен.

  5. На том же экране нажмите на батарею.

  6. Нажмите на оптимизацию батареи.

  7. Прокрутите вниз, чтобы найти your app и нажмите на него.

  8. Выберите Не оптимизировать и нажмите Готово.

...