Была такая коротенькая заметка вроде бы про Мах, а оказалось, что не про Мах, а про Android. Поскольку ничего не объяснили технически, статья стала выглядеть как натуральный наброс на Мах, хайп ради хайпа. У него (Мах) много недостатков, но давайте отделять мух от котлет.
Предлагается верить словам губернатора, вместо того, чтобы сказать о сути проблемы. И хотя бы упомянуть, что у ТГ имеется ТАКАЯ ЖЕ проблема (обращение к серверам Гугла при пуш-уведомлениях).
Проблема прохождения веб-пуша через Гугл-сервера за границей для Android (и аналогичное для Apple) действительно, есть. Этой проблемы нет в браузерных пушах, хотя, казалось бы, это "одно и то же". Не одно и то же.
...Дополнено. https://aftershock.news/?q=node/1600768 - разъяснение Оперштаба про этот эффект при белых списках. (Отсюда ноги растут.)
Разберём проблему. Спросим у наиболее толкового бесплатного вражеского ИИ Google AI Mode:
Через какие серверы проходит сигнал о push-уведомлении в Android смартфоне?
То, что он ответит, содержит полный разбор проблемы. Дальше можно, фактически, не объяснять, и губернатор Гладков ни при чём, и проблему в Москве не решат. Разве что, забанят все пуши из заграничных сервисов, но тогда они все пропадут.
Сигнал о push-уведомлении на Android проходит через три основных узла: ваш собственный сервер (бэкенд приложения), облачный сервис Google и системную службу на самом смартфоне. (mindbox.ru +1)
Вот подробный путь сигнала:
1. Сервер приложения (App Server)
Все начинается здесь. Когда в приложении происходит событие (например, вам пришло сообщение в мессенджере), ваш сервер формирует запрос. Он содержит:
- Payload: текст сообщения, иконку или данные для приложения.
- Token: уникальный идентификатор конкретного устройства, который приложение получило при регистрации.
2. Облачный сервис (FCM/GCM)
Сервер приложения отправляет этот запрос на серверы Google. Сейчас основным стандартом является Firebase Cloud Messaging (FCM) (ранее назывался Google Cloud Messaging или GCM). (PubNub +1)
- FCM выступает посредником. Он принимает миллионы запросов от разных разработчиков, проверяет их подлинность и ставит в очередь на отправку.
- Если смартфон в данный момент не в сети, сервер FCM хранит уведомление и доставит его, как только устройство подключится к интернету. (Bugfender +2)
3. Google Play Services (на смартфоне)
На самом Android-устройстве работает фоновый процесс Google Play Services. Он поддерживает одно постоянное защищенное соединение с серверами Google.
- Когда сигнал приходит от FCM, именно эта системная служба принимает его.
- Она определяет, какому конкретно приложению предназначается «пуш», и передает ему данные для отображения или обработки.
Исключения (Huawei и другие)
На современных смартфонах Huawei и Honor (без сервисов Google) вместо FCM используются собственные серверы — Huawei Mobile Services (HMS). В этом случае сигнал идет через инфраструктуру Huawei, минуя серверы Google. (wsoft.ru +1)
Всё это подтверждается ссылками на статьи, которые не копипейстятся 1 кликом. Но пробуйте найти их запросом к ИИ.
Из описания можно понять, зачем это сделали. Чтобы пуши не терялись, если смартфон находится не в сети. Гугл добровольно взвалил не только Гугл-плей на себя, но и сервисы уведомлений. Иначе он не мог бы быть конкурентом СМС и Эпплу, которые также имели свои сервисы на тот момент.
В отличие от мобильных пушей, браузерные устроены проще, хотя в браузерном коде поддержка начинается с того же самого кода (не всегда, конечно) вебстраницы.
Пуши в браузере в обычных РС (не мобильных).
Точно так же несложно исследовать, как реализованы пуши в браузерах. Если кратко - за всё отвечает сам браузер и запущенный в нём параллельно страницам Server Worker (отдельный процесс). Здесь сервер сайта (или другого домена, куда Javascript отправит пуш) обязан поддержать запрос на пуш отправкой ответа.
Как видим, различие в том, что сервер для Андроида отправляет ответ на Гугл-сервис (или Эппл), а для браузера - в приложение.
Если пуш-запрос в мобильнике пришёл из браузера - конструкция 2-этажная: приходит ответ в браузер, и обязанности сервера закончены. Далее Андроид-браузер перенаправляет на Гугл-сервис (может быть), а, может быть, сам браузер ограничится своим показом. Но вряд ли - тогда оно не использует более функциональный пуш в Android OS (показ из фонового приложения, показ при неустойчивой связи, когда отправить успело, а принять ответ - нет).
Push-уведомления в браузере устроены на основе трёх компонентов: Service Worker (фоновой скрипт), Push API (подписка) и Notification API (показ уведомления). Система построена на модели Pub/Sub (Publish/Subscribe), которая обеспечивает асинхронную доставку сообщений и масштабируемость. workspace.rukurshub.ru
Принцип работы
Общий принцип работы: habr.com
- Пользователь подписывается на уведомления через веб-приложение.
- Браузер создаёт уникальную подписку с криптографическими ключами.
- Сервер отправляет зашифрованное сообщение через push-сервис на эту подписку.
- Push-сервис доставляет сообщение браузеру пользователя.
- Service Worker получает событие и обрабатывает его.
- Notifications API отображает уведомление пользователю. habr.com
Особенности:
- Push API работает асинхронно и неблокирующе — браузер может получать сообщения даже когда все вкладки закрыты.
- Service Worker работает в отдельном потоке от основного приложения и не имеет доступа к DOM.
- Notifications API требует явного разрешения пользователя перед показом уведомлений. Разрешение может быть отозвано пользователем в любой момент через настройки браузера. habr.com
Вызов
Браузер вызывает событие push в зарегистрированном Service Worker, когда push-сервер браузера доставляет сообщение от сайта. Service Worker расшифровывает полученный payload (который может содержать заголовок, текст, иконку, URL и другие параметры), а затем вызывает метод showNotification() из Notifications API, чтобы отобразить алерт клиенту. kurshub.ru
Важно: большинство приложений обязывают Service Worker показать нотификацию при получении push-события, чтобы предотвратить злоупотребления — например, отслеживание человека или выполнение фоновых операций без его ведома. Если Service Worker получает push, но не показывает оповещение в течение определённого времени, браузер может показать дефолтное сообщение или вовсе заблокировать дальнейшие push от этого сайта. kurshub.ru
Поддержка на сервере
Сервер сайта инициирует отправку нотификации. Он хранит подписки клиентов, формирует содержимое сообщения и отправляет зашифрованный payload на push-сервер приложения. kurshub.ru
Некоторые особенности поддержки:
- Сохранить объект PushSubscription в своей базе данных, связав его с конкретным клиентом. Эта информация позволит в будущем отправлять push-алерты: сервер берёт сохранённый endpoint, формирует зашифрованное сообщение с использованием публичных ключей и отправляет HTTP-запрос на push-сервер браузера. kurshub.ru
- Использовать VAPID-ключи для отправки push-сообщений на стороне сервера (пара публичный/приватный ключ). Приватный ключ нужно хранить в безопасности на сервере, а публичный ключ — использовать в клиентской подписке. workspace.rublog.openreplay.com
- Обеспечить HTTPS-соединение — браузеры блокируют подписку на уведомления с незащищённых соединений. sky.pro
Ограничение: Web Push на iOS работает только для веб-приложений, добавленных на экран «Домой», а не для обычного просмотра сайта в Safari. workspace.ru
Как видим по этому описанию, глазами специалиста, процессы похожие, но есть принципиальные различия. В общем случае, конечно, Гугл-сервис никакой не участвует, даже если запрос из Google Chrome.
Об этом, а не о чём-то другом, шла речь в ответе Гладкова.
Как на самом деле решить вопрос "в Москве"?
Технически, решить вопрос, конечно, можно. Из описания следует, что вместо API мобильных пушей в таких приложениях нужно завести российскую службу пуш-уведомлений. С той лишь разницей, что Андроид не будет оповещать о них своими средствами. Huawei тоже, т.к. он работает на своём китайском протоколе. Пуши происходят на уровне API операционной системы мобильника.
Чтобы российская служба работала на Андроиде - разве что давить на Гугл, чтобы предоставил альтернативный API и подключение сервиса уведомлений в национальных государствах. Или ставить вместо Андроида другую ОС. Или спросить специалистов, а возможно ли сделать другую сборку Андроида? (Скорее всего, да. Написать свою, как делал Huawei, Xiaomi, Samsung, Apple и другие. Это делают и сборщики ОС - одиночки или мелкие компании. На 4PDA.to много примеров.)



Комментарии
Не суть в общем. Отрезание инета от серверов снаружи (в первую очередь гугловских, только во вторую - телеграммовских) блокирует очень многое. Чего охранителям, как правило, не понять, ибо они за любую движуху, родившуюся в головах у начальства.
можно и понять , а зачем ?
Действительно, зачем. Обучил иммитатор интеллекта как надо, и можно у него спрашивать.
можно , а зачем ?
ИИ - это враг охреанителей )
блин, в статье же описано- браузерные пуши идут в обход гугловых серверов- браузер сам держит соединение с сервером сообщений и когда видит потребность- сам генерит пуш. что мешает Маху тоже держать линк до своего сервера сообщений и при необходимости генерить пуш? необходимость выкатывать обновление? а что мешало подготовить эти все меры перед блокировкой связи? некомпетентность?
Макс в браузере, наверное, так сможет
Думаю, это ещё не успели сделать, но в планах есть.
Суши крайне быстрый и удобный канал передачи, да ещё и для неограниченного круга софта. Потому да, будет забанено
Но по сути это совершенно правильная претензия к Маху. Раз он претендует на то, чтобы работать при белых списках - то пусть чинит отсутствие уведомлений. Через сервера Гугла они работают потому что это удобно, а не потому что это единственный возможный выход.
Например, пусть поднимают свои сервера для пуш уведомлений, а приложение к ним обращается. Разработчики Телеграма же смогли, значит и разработчики Маха могут справиться.
Или, конечно же, они могут ответить "Можно, но зачем?" и ничего не делать.
Но разве не видно, что это не к Маху, а к Андроиду?
Это - как клясть Notepad++ оттого что он на Windows запущен.
Для Андроида - это единственно возможный выход. Без пушей ничего не зажужжит в кармане без запущенного активного приложения. А активное очень "жрёт" энергию смартфона.
Андроид не слушает чужие сервера. Это его код ковырять надо, и всем-всем-всем ставить вместо Андроида эту локальную ОС. И даже Сяоми и Хуавей не подойдут. На каждую ОС править код, выпускать национальные копии.
(Обычно предусматривают такие настройки конфигурации без правки ОС или программ. Например, при сборке веб-приложений можно не делать сборку обязательно на https://www.npmjs.com/ . Можно полностью на своём сервере сборки со своей базой приложений. Если у Гугла такого нет, то это было сделано для неперехвата сервисов конкурентами. Хуавею понадобилось всё повторить.)
Не смогли. В чём и юмор ситуации с этим набросом.
Ну не в курсе люди, что пуш уведомления идут через ядро ОС, им проще ругать прикладной софт, что они не смогли.
На том же пресловутом ютубе много было роликов, как ломали ядро ОС, но такие ролики светлоликие предпочитают не замечать и заявляют, что это конспирология.
Демон должен быть активным, и задача написания такого демона должна на "rustore" падать.
Rustore обновление то не может без доп кнопки сделать. Не пускают их к ядру
Если его обязывают ставить но новые мобилы, то пусть и доступ к ядру обяжут давать.
а разве телега свои пуши использует? Судя по тому, что сейчас обычная ситуация "пуши еть, сообщения нет" - точно так же систему гугла
У неё есть заменитель (Telegram WebSockets) для борьбы с политикой гуглосервисов при слишком агрессивной борьбе с экономией энергии на телефоне. Но это НЕ эксплуатация Android Push. Чтобы они работали, необходимо не выключать приложение ТГ. Только тогда его псевдо-пуши работают. Абсолютно так же, как в браузерах на десктопах. Закрыл браузер - не работает. (Хотя, может быть, сделали службу от Chromium против этого.)
Как выяснилось автор за энергопотребление переживает.
Хотя назвал слова губера набросом.
Чудны дела твои, господи (с)😂
Tr2xolod,
наброс не от губернатора, наброс от Вас, по цепочке от некого ЕЖа из Телеграм-канала. ))
Зачем так переворачивать? Первичная причина - Мах, вероятно, не пользуется пуш-уведомлениями по причине того, что они требуют запросы на иностранные сервера через Андроид API. что и говорил Гладков.
В заметке, которую запостил, кроме слов губера нет ничего.
По вашем же словам, в махе можно реализовать эту функцию, но это ест батарейку. Что вы еще пишете непонятно, вы сами все и подтвердили.
О том и вопрос, почему ТОЛЬКО О МАХ??? Любой мессенджер, тот же ТГ будет заблокирован в тех условиях (белых списков). Вы и ваш источник выдернули слова о Мах, чтобы на Мах набросить.
С поеданием батарейки, при этом будет псевдо-пуш, я об этом тоже написал. И посмотрите коммент от людей, что в другой области РФ эти псевдо-пуши реализованы.
Я лишь описал технические возможности.
Или делаем псевдо-пуши с расходом батарейки, или настоящие пуши, но заменяем не Мах, а Андроид.
И вместо того, чтобы решать задачу по сути, Вы занимаетесь репостом набросов на Мах.
Спросите у Гудкова почему он сказал только о махе
В остальном именно мах привязывают к госуслугам намертво, логично же что он должен быть максимально отвязан от врага, что не так в этой логике?
.
Для Андроида - это единственно возможный выход.
ТГ с Вами не согласится.. Используя тот же Андроид, ни разу не кастомный.. )))
Хотя уже радует, что здравый смысл начинает появляться и уже признали зависимости от иностранных сервисов.. ))) И может в сторону того же Китая кивать будут меньше, задумываясь и сравнивая подходы с реализацией, а не только конечный результат...
То, что делает Телеграм в обход Гугло-сервисов - то повышает потребление энергии телефоном. О чём я и говорю, что решения на Андроиде нет.
В фоне Телеграм запускает вебсокет-соединение. Если снять задачу "Telegram" в Андроиде - все псевдо-пуши после этого пропадут. Ровно то же будет и с Мах. Единственное, у него, видимо, сейчас нет такого же псевдо-пуша, требующего запущенного приложения на устройстве.
Было бы странно, если дополнительные действия/телодвижения сохраняли тот же уровень или понижали расход энергии.. ))) Как и мессенджер, почему-то не работающий в фоновом процессе... ))) За все есть своя цена.. Хотите альтернативный и независимый сервис для мессенджера без собственной ОС - извольте чем то пожертвовать..
Никто не спорит, что нормальное адекватное развитие подразумевает формат Китая - детальное изучение всех зависимостей, подготовка собственной инфраструктуры/сервисов, запуск конечного продукта... Ну у нас свой путь и методы... )))
Надо же. Повышает! А "национальное достояние" стало быть не повышает и очень энергоэффективно, но при этом молчит при ракетных и бпла атаках с включенными белыми списками?
Выходит, раскричавшись "Наброс, наброс, наброс" в соседней оригинальной теме, топикстартер слегка погорячился в охранительской горячке?
Уже слышу визг "мах жрет искричество, хулиганы батарейки лишають, у-уууиии" переходящий в ультразвук, как только мах внедрит то-же самое что телега. Запомните этот туит!
Нет.
Хуже:
"Мах постоянно работает на смартфоне, это сделано, чтобы он постоянно за нами следил и отсылал всё данные.
Его даже не выключить! "
Ваша логика странновата. Или мы сидим с повышенным расходом батарейки и предупреждениями о прилетающих неприятностях, или мы сидим с заряженной батарейкой, но иногда от этого умирают люди.- что же выбрать? ну конечно заряженную батарейку! а то вдруг телефон сядет и тогда к нему ... что? уведомление не придет?
Логику думайте дальше - у меня нет времени в короткой статье все нюансы расписывать. Или спросите ИИ.
Этот режим с расходом ещё создать в Андроиде надо: 1) запустить приложение; 2) быть уверенным, что оно работает. Забыл - поплатился неожидаемым прилётом.
Для этого надо всё время заглядывать по кнопке в панель задач. Плюс, как мелкая неприятность - повышенный расход. И тоже действует в том же ключе: забыл выключить вовремя (когда опасности нет) - перерасходовал батарейку.
Нормальный режим Андроида: 0) ничего не надо делать, панель задач пустая или можем, не думая, опустошать. Пуши работают на встроенных сервисах. Но! ... российских. Чего в Андроиде, iOS, Huawei нет. Есть в Poca Mobile.
...Дальше продолжать разжёвывать или теперь всё понятно?
Признать - и наказать!
Свои push возможны как в андроиде, так и в ios. ОС может переодически "будить" приложение, а оно может связываться со своим push-сервером, например, ntfy (https://unifiedpush.org/).
Нативные реализации push в ОС просто будят приложение не каждый раз, а только когда push уже существует и ожидает доставки, в остальное же время приложение спокойно себе спит, не потребляя батарейку.
Так что, при желании, можно без проблем сделать свой, "национальный" пуш-сервис, никаких сложностей в этом нет (за исключением +25% расхода батареи, но если другого выхода нет, то это оправданная цена))
По-хорошему, нашим гос. службам надо требовать от производителей аппаратов, чтобы они поставляли свои устройства с заранее интегрированным в ос unifiedpush-клиентом, работающим в фоне постоянно, без ограничений, тогда бы никаких проблем с пушами не было бы.
Да, так немного больше сэкономит энергии, чем вебсокеты от ТГ.
Но наиболее правильное и полное решение задачи - это как сделано в РОСА Mobile. Push сервер POCA находится в России. Вот и всё решение, и для Маха, и для ТГ и всего остального.
А решение с побудкой - оно настраивается полностью автоматически? Надо ли для таких что-то обязательно включить в настройках Андроида? И с какой версии это появилось?
UPD опс. ТГ не на 100% использует свой вебсокет, а вот так эксплуатирует Гугл или Хуавей:
Как это работает технически
На самом деле, много энергии сэкономит. Я пробовал использовать свой push-клиент, -20-30% батареи.
Периодичность настраивается в коде естественно, приложение само определяет периодичность. По-моему, это всегда было. Внутренние уведомления приложений же всегда существовали, для них firebase и прочее не нужны, как и интернет.
Но только этот механизм не точный, так как ос сама решает, когда запускать приложение, то есть пазузы доставки пушей получаются существенными (в андроид это может быть и 15 минут, если использовать WorkManager, если AlarmManager - то быстрее, но может не сработать).
В iOS для этого есть механизм VoIP Push Kit. Можно использовать и SilentPush, но принудительно закрытое приложение он не разбудит.
Ну, конечно, так и надо делать! Пока допиливаем нормальное решение - пусть быстрее садится.
Единственное нормальное решение - это свой push-клиент в ОС. Ну и свой push-сервер само-собой (но это как раз и не проблема).
Короче, надо нагибать производителей устройств, чтобы добровольно-принудительно его интегрировали в устройство. Иного пути нет.
То есть разработчики ТГ смогли прикрутить использование кроме гугловских также идентификаторы и Push-сервис от Хуавей для работы собственного фонового вебсокета, создав таким образом fallback для push-уведомлений, а для разработчиков МАХа это технически невозможно? ))) Или религия не позволяет использовать работающую альтернативу из КНР, пока нет своего? И потому, не мудрствуя лукаво, ограничились интегрированием сервиса Гугла, от проверенного "партнера", позиционировав свой продукт как полностью национальный и независимый...
Собрать приложение на андроиде с поддержкой HMS - дело 5 минут, естественно версия Маха с поддержкой HMS есть в AppGallety, точно также как версия в PlayMarket собрана с поддержкой GMS.
Но дело тут ни в какой не в религии, а в наличии клиента для доступа к push-серверу в самом аппарате, в виде сервиса ОС. Без такого клиента в самом устройстве push будет работать через пень-колоду и будет жрать батарею, поэтому никакого выбора у разработчиков нет.
Разработчики ПО не могут сделать самостоятельно такой сервис, они вынуждены пользоваться тем, что предоставляет ОС, в принципе.
Насчет «национальный» и «независимый» - все программы для телефонов зависимы от ОС и железа аппарата, поэтому пока нет своей ОС и своего железа - говорить о какой бы то ни было независимости просто бессмысленно.
Перспективный чат детектед! Сим повелеваю - внести запись в реестр самых обсуждаемых за последние 4 часа.
Короче, очередная закладка от уважаемых партнеров.
А вроде в тг что-то похожее с пушами было? Может есть обходные пути какие-то?
Не закладка изначально, как я писал в статье, а чтобы тогда составить равную конкуренцию Эпплу. Может работать как закладка сейчас.
чем людей СМС не устраивает?
Тем, что в сторону Маха не дристанёшь.
Дня три назад ещё писал про смс, но нет, все как в жопу ужаленные с выпученными глазами кидаются на маха. ))
СМС не модно. Оно не нахаляву, нет уродских стикеров и товарищ майор видит что Роза Какина написала Коле Фуфляцкому
Почитайте тут если интересно... Там пытались разжевать, почему.. Никто не будет ленивым заниматься бесконечными пересказами. Статьи буквально рядом...
https://aftershock.news/?q=node/1600707&ts=1774314789#comments
нашел где лучше расписано:
По личному опыту - не более 60 смс/сек.. Чаще - ниже.. Хотя это конечно зависит от оборудования конкретного провайдера... Вообщем, помучавшись с смс-рассылкой и контролем их доставки, полностью перешли в итоге на пуш-уведомления через приложение..
А какая вообще связь между оповещением о воздушных атаках и Максом???
Ни Макс, ни ТГ, ни Вотсам, ни Вайбер, ни какой-то другой мессенджер общего назначения не предназначен для оповещения о воздушных атаках, о пожарах, ЧП/ЧС, ураганах и прочем опасном.
У типичного пользователя любого мессенджера в подписки сидят десятки групп/каналов в которые почти непрерывным потоком идут какие-то сообщения разной степени полезности или бесполезности. На части групп/каналов отключены уведомления, а на части включенные. И если в группе класса ребенка или группы его секции/кружка идет обсуждения мероприятия по окончании четверти или на каникулах, то этот поток забивает все подряд, т.к. уведомления тут включены. Аналогично, если некая местная херня на уровне УК/ТСЖ случилась. А если какой-нибудь новый год, 8 марта/23 февраля или профессиональный праздник, тот тут еще и поток каких-то открыток от близких и дальних людей. Выявить и удержать внимание в этом потоке на сообщениях об угрозе жизни будет весьма сложно.
Поэтому нужно исключительно отдельное и специальное приложение для информировании о воздушных атаках и прочих ЧП/ЧС. Сигнал от этого приложения должен радикально отличаться от сигнала прочих уведомлений. В этом приложении должен быть выбор, определять местоположение по геолокации или путем прямого перечисления регионов и районов/населенных пунктов, по которым нужно информировать. Да, это приложение должно всегда работать в фоновом режиме, и будет чуток подъедать заряд батареи, но его можно сделать так, чтобы особо не грузило ресурсы смартфона, что как раз проще, чем в том же самом Максе/ТГ.
Что-то подобное есть в приложении от МЧС. Там есть выбор региона, но нет выбора района в регионе. Приходят ли туда сообщения о воздушных угрозах - я не знаю, в нашем регионе таких угроз не было.
Страницы