Телеграм и Скайп пишут "онлайн", когда человек онлайн.
Вы ошибаетесь, телеграм пишет "онлайн"
только когда клиент взаимодействует с приложением (читает каналы, пишет и т.д.). По той простой причине, что в Android и iOS (и во всех прочих мобильных операционных системах) постоянное висение процесса в памяти и удерживание сокета открытым приводит к более быстрому разряду батареи. Так делает, например, Conversations (у него нет иного выбора, потому что XEP с push-ами поддерживают буквально полтора сервера, а без пушей нужно держать сокет, чтобы принять входящее) и Android периодически предупреждает, что приложение не экономит энергию. А если приложение действует, как положено, то бишь не держит соединение с сервером, пока приложение неактивно, то не существует способа понять, включён вообще телефон у собеседника или нет (т.е, когда вы пишете собеседнику в Телеграм, вы не можете быть уверены, что он это прочтёт в ближайшее время). Поэтому, клиент отправляет "офлайн", как только прекращается активность. Десктопный клиент, насколько я понимаю, ведёт себя аналогично.
Ага, я уже слышал когда-то "мессенджеры никому не нужны, все общаются в социалках".
Суровая реальность такова, что около 60% заходов в Википедию (берём статистику с самого популярного ресурса в мире) совершается с мобильных устройств (и даже тамошнее сообщество начинает понимать, что мобильную версию надо делать удобнее, хотя отдельные личности продолжают писать статьи с расчётом на то, что у читателя есть курсор мыши, за что лично я каждый раз шлю им лучи ненависти, когда сталкиваюсь со словом, расшифровка которого всплывает исключительно при наведении курсора, которого у меня на смартфоне нет).
Кстати, 35% пользователей Рунета вообще не имеют компьютера. Я понимаю, что среди пользователей ПК со стажем принято смотреть на мобильных юзеров
как на говно как на глупеньких братьев меньших наших - хомячков, но этот снобизм постепенно отомрёт, вероятно, когда доля ПК снизится настолько, что уже ПК-пользователи будут восприниматься как маргиналы.
Пошла деградация. Думаю у ICQ клиентуры еще поубавится с таким подходом.
Телеграм хоронят аж с момента его создания, а он вполне жив, причём поведение ICQ взято именно у Tелеграма. Но Телеграм хороший, а ICQ плохая, парадокс. А разгадка проста - пользователи ICQ привыкли вот так.
Всё это лирика, а на практике-то непонятно, что делать. Городить костыль "показывать контакт после ухода в оффлайн ещё N минут в онлайне"? Но у нас нет никакой возможности узнать клиент контакта. Таким образом, этот костыль затронет всех пользователей, даже тех, у кого все контакты тоже на Миранде. И в попытке сделать хорошо одним пользователям, мы огребём совершенно справедливо от других, которые скажут "зачем это я вижу другую Миранду в онлайне, когда она уже точно выключена?". Напоминает ситуацию с OMEMO в Jabber, который мы сделали в соответствии с XEP, а разработчик этого стандарта в свой клиент Conversations внёс дополнения, не предусмотренные стандартом. Итог: наша реализация несовместима с Conversations, но почему мы должны подстраиваться под самодурство какого-то стороннего разработчика? Это его косяк, а не наш.