Форум программистов, компьютерный форум CyberForum.ru

GCM notification на выключеный экран - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Ошибка сборки после подключения AdColony http://www.cyberforum.ru/android-dev/thread1782796.html
Подключил рекламу AdColony в свое приложение, хотел затестить на своем мобильнике, но Android Studio выдал такое: Information:Gradle tasks :app:preBuild UP-TO-DATE :app:preDebugBuild UP-TO-DATE :app:checkDebugManifest :app:preReleaseBuild UP-TO-DATE :app:prepareComAndroidSupportAnimatedVectorDrawable2321Library UP-TO-DATE :app:prepareComAndroidSupportAppcompatV72321Library UP-TO-DATE...
Программирование Android PreferenceActivity - что использовать вместо устаревшего метода addPreferencesFromResource Разбираюсь с PreferenceActivity. Определил разметку, и теперь хочу подключить, а метод addPreferencesFromResource(int preferenceResId) уже считается устаревшим. Что вместо него юзать? http://www.cyberforum.ru/android-dev/thread1782787.html
Максимально увеличить один элемент в Gridlayout и сжать до минимума остальные Программирование Android
Здравствуйте! Имеется тестовая разметка: <?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.GridLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" ...
MediaPlayer задать громкость Программирование Android
Как в MediaPlayer задать максимальную громкость? Или системную для уведомлений. AssetFileDescriptor afd = ctx.getResources().getAssets().openFd("isnt_it.mp3"); MediaPlayer player = new MediaPlayer(); player.setVolume(1000000000000.0f, 1000000000000.0f); player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength()); ...
Программирование Android Подключить проект с Github через gradle http://www.cyberforum.ru/android-dev/thread1782712.html
Допустим на гитхабе есть какой то проект или библиотека и я хочу ее импортировать. И вот если этот проект скачивать от туда потом открывать в Android Studio, то возникают некоторые ошибки с gradle настройками этого проекта(то путь к файлу слишком большой, то что нибудь еще). Как избежать этих всех этих проблем наиболее оптимально(чтобы не заморачиваться с настройками этого проекта)? Может через...
Программирование Android После подключения ListViewAnimations не могу собрать проект Добрый день! Решил попробовать применить чужую библиотеку ListViewAnimations https://github.com/nhaarman/ListViewAnimations Дока тут: http://nhaarman.github.io/ListViewAnimations/#getting-started После подключения библиотеки проект не собирается, выдает: Error:Error converting bytecode to dex: Cause: com.android.dex.DexException: Multiple dex files define... подробнее

Показать сообщение отдельно
Pablito
2473 / 1918 / 595
Регистрация: 12.05.2014
Сообщений: 6,746
Завершенные тесты: 1
20.07.2016, 15:44
Короче меня бомбануло и пришлось потратить несколько часов на выяснение.

У меня в наработках давно болтался тестовый проектик с подключенным GCM.
На нем при включенном экране все работает и метод onMessageRevieve вызывается. При выключенном экране - метод не вызывается.
Я сразу сделал вывод что надо копать не в сторону WakeLock-ов, а куда-то дальше.

Студия намекала что порабы сменить GCM на Firebase Messaging.
Перевел проект на FCM, ничего не изменилось. Кстати, стало все намного проще, меньше кода, меньше классов, проще регистрация и т.д.
Метод onMessageReceived теперь принимает RemoteMessage.

Пришлось читать доки внимательно.
Итак, что надо добавить/изменить что бы заработало (уведомление включало экран) на FCM.
1. важно: когда формируется json для передачи сообщения, из него нужно убрать всю ветку notification, просто убрать и все, все данные передавать в секции data. Тогда метод onMessageReceived будет вызываться даже при выключенном экране
2. в методе onMessageReceived до или после показа уведомления вызвать метод типа такого
Java
1
2
3
4
5
    private void wakeUp() {
        PowerManager pm = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE);
        final PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "");
        wl.acquire();
    }
без второго флага экран не включится
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru