Губернатор Белгородской области Вячеслав Гладков неожиданно сформулировал важную техническую проблему мессенджера Max: приложение не может отправлять push-уведомления об ударах и воздушной опасности — потому что любой механизм их доставки «завязан на иностранное ПО, что противоречит текущим подходам».
Для приграничного региона, живущего под регулярными обстрелами, это буквально может быть вопросом жизни и смерти, в зависимости от того, получит ли человек уведомление и призыв укрыться, или нет.
А почему возникала такая проблема и как вообще работают push-уведомления?
Когда приложение хочет «достучаться» до телефона, оно не звонит напрямую — батарея и ОС не позволяют держать сотни постоянных соединений. Вместо этого существуют централизованные брокеры: APNs у Apple и FCM у Google для Android. Сервер приложения отправляет сообщение в один из этих брокеров, тот доставляет его на устройство через одно постоянное системное соединение, которое ОС поддерживает сама.
Это значит, что любое приложение на iOS и Android — хочет оно того или нет — опирается на американскую инфраструктуру, когда хочет «разбудить» экран пользователя.
При этом Telegram умеет обходиться своим независимым сервисом.
▪️Telegram давно выстроил альтернативный канал: постоянное фоновое соединение с собственными серверами по протоколу MTProto. Когда приходит сообщение, клиент узнаёт об этом напрямую, без посредника в виде Google. Поэтому если заблокировать IP-адреса Google, уведомления от Telegram во многих случаях продолжают приходить.
▪️Но работает это не везде. На агрессивных прошивках Android с жёстким управлением фоновыми процессами ОС «убивает» постоянное соединение ради экономии батареи — и без FCM Telegram тоже начинает «молчать». Но сама архитектура такой независимости у Telegram выстроена — и выстраивалась годами.
▪️К сожалению, для Apple iOS это тоже не работает: Telegram на iPhone принципиально завязан на Apple Push Notification service (APNs), и полностью обойтись без него он не может. Это тоже учитывается в архитектуре приложения.
А что с «пушами» в Max?
▪️Пресс‑служба Max ранее сама признавалась, что приложение отправляет запросы на серверы Apple и Google для проверки доставки push‑уведомлений. То есть, чтобы уведомление «всплыло» на экране, цепочка в любом случае завязана на иностранные облака Apple/Google — полностью «суверенного» механизма пушей для смартфонов даже у Telegram не существует.
▪️Но, видимо, любые дополнительные вызовы на зарубежные сервера воспринимаются как риск для нацмессенджера, и именно это блокирует внедрение экстренных пуш‑схем в Max.
В целом на фоне повсеместного продвижения нацмессенджера и многочисленных заявлений чиновников к сервису очевидно возникли завышенные ожидания. Поэтому каждый раз подобные нюансы будут вызывать у населения вопросы в духе: «а почему вы не подумали об этом еще вчера?» или возникнут неприятные сравнения с конкурентами. При этом и на примере Telegram видно, что их собственные решения тоже несовершенны и требуют постоянных доработок, что понятно в отношении любого приложения.
Поэтому, для начала, чтобы как минимум увеличить степень независимости MAX, нужен собственный сервис фоновой доставки уведомлений — аналог того, что Telegram сделал с MTProto. Постоянное соединение с российскими серверами, работающее независимо от Google и Apple, которое ОС не сможет просто так убить в фоне.
Это технически решаемая, но не быстрая задача. Нужны: устойчивая серверная инфраструктура, собственный протокол или адаптация открытых решений, договорённости с производителями Android-прошивок (прежде всего с Huawei, которые давно живут без Google), и — главное — время на отладку под десятки тысяч разных устройств.