The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск Gotify 2.0, сервиса для доставки push-уведомлений, opennews (??), 10-Мрт-19, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


4. "Выпуск Gotify 2.0, сервиса для доставки push-уведомлений"  +/
Сообщение от Аноним (4), 10-Мрт-19, 11:53 
Про батарейку тут уже говорили? Google Services хоть и бэкдор, но сделан таким образом, что батарейку не жрёт особо.
Ответить | Правка | Наверх | Cообщить модератору

16. "Выпуск Gotify 2.0, сервиса для доставки push-уведомлений"  +5 +/
Сообщение от Crazy Alex (ok), 10-Мрт-19, 14:18 
Вообще-то жрёт очень основательно (у меня без него смартфон 4 дня держался, с ним - три). Но да, гугл имел возможность использовать то, что не дал больше никому - управление пробуждением устройства,
Ответить | Правка | Наверх | Cообщить модератору

43. "Выпуск Gotify 2.0, сервиса для доставки push-уведомлений"  +1 +/
Сообщение от Аноним (43), 11-Мрт-19, 03:45 
Вообще-то у GCM нет никаких "эксклюзивных" возможностей. Насколько я помню, тот же самый функционал работает и в других приложениях (во всяком случае, работал во времена Android 4) — показываешь foreground-уведомление, открываешь сокет и начинаешь слушать. Как только в сокет что-то приходит — берёшь wake lock. Плюс в новых версиях нужно добавить приложение в исключения Doze.

"Спящий" режим это просто один из уровней энергопотребления в процессоре, соответственно никто не мешает читать в нём из сокета, и когда что-нибудь придёт — выходить из него взятием wake lock. Насколько я понимаю, Doze реализован через что-то вроде cgroups, и в нём приложение действительно "замораживается", так что без добавления процесса в исключения пользователем не обойтись.

Естественно, вся эта махинация связана с привлечением внимания пользователя, и объяснением ему, зачем твоему приложению перманентно висеть в трее и жрать батарейку. Троянско-шпионскому мусору, который в фоне шлёт логи твоих действий на сервер и делает скриншоты по команде с базы, выгоднее идти на поводу у Гугла. Но техническая возможность как таковая есть, и её пока никто не отнимал.

Ответить | Правка | Наверх | Cообщить модератору

47. "Выпуск Gotify 2.0, сервиса для доставки push-уведомлений"  +/
Сообщение от Crazy Alex (ok), 11-Мрт-19, 12:43 
В четвёрке так и было. Гугл закрутил гайки в шестом, если не вру, убрав возможность разбудить устройство для всего, кроме системных приложений. Хотя о деталях могу врать. Может, добавление исключений к Doze  это и исправило, не знаю.
Ответить | Правка | Наверх | Cообщить модератору

48. "Выпуск Gotify 2.0, сервиса для доставки push-уведомлений"  +/
Сообщение от FedeXemail (ok), 11-Мрт-19, 18:35 
>если не вру, убрав возможность разбудить устройство для всего, кроме системных приложений

таки врете. Google Services с Firebase Cloud Messages как раз и могут хоть даже на 9м андрюше разбудить устройство и передать управление приложению. Без добавления оного в белый список дозы. А вот решение из заглавия темы явно будет требовать добавить прогу в белый список дозы иначе никто  ему слушать вебсокеты и никого пробуждать не даст.

Ответить | Правка | Наверх | Cообщить модератору

50. "Выпуск Gotify 2.0, сервиса для доставки push-уведомлений"  +/
Сообщение от Анонимный Алкоголик (??), 19-Мрт-19, 08:09 
>не дал больше никому - управление пробуждением устройства,

Не совсем. Управление подключением к сети, незаметной посылкой запросов, получением чего-то там... Всё совершенно не беспокоя "пользователя". Ага...

Ответить | Правка | К родителю #16 | Наверх | Cообщить модератору

44. "Выпуск Gotify 2.0, сервиса для доставки push-уведомлений"  +2 +/
Сообщение от Аноним (43), 11-Мрт-19, 04:06 
Смысл фреймворка сообщений Play Services не в том, чтобы *просто* не жрать батарейку, — любое другое приложение, будучи правильно написанным, может делать то же, что и GCM. Его смысл в том, чтобы принимать сообщения с минимальными возможными затратами ресурсов. Вместо 20 процессов, читающих из сокета в фоне, в системе будет один такой процесс (ну плюс пара отщепенцев, держащих foreground-уведомления, вроде скайпа).

Прикол в том, что само отображение уведомления в трее не предотвращает сон, — оно нужно только чтобы система не прибила показывающий уведомление процесс. Когда устройство уходит в сон, процессор просто переходит в минимальный режим энергопотребления. При этом приложения продолжают выполнять код (но ооооочень медленно), и с помощью общедоступного API могут вывести девайс из сна (например, в случае прихода сообщения из сети).

Второй трюк здесь в том, чтобы не использовать keep-alive сообщения (ни TCP keeap-alive, ни протокольный PING). Если что-то отправлять или получать по сети, сетевой адаптер не сможет перейти в режим пониженного энергопотребления, и любая выгода от ухода в сон основного процессора будет сведена на нет. GCM просто открывает соединение и изредка проверяет, что какой-нибудь NAT-сервер по дороге его не прибил.

Всё это описано в официальной гугловской документации по снижению энергопотребления, и отдельные приложения, например некоторые почтовые и Jabber-клиенты, успешно используют эту информацию чтобы сидеть в фоне, не сжирая всю батарейку. Естественно, нужно чтобы сервер с тобой кооперировал: не слал всякий мусор и keep-alive в фоне, объединял соседние сообщения, не будил девайс каждые 2 секунды нормальной активностью.

Ответить | Правка | К родителю #4 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру