Вернулся к работе над списком чатов:
Да-да, нужно работать над отправкой сообщений, но я нашел места, которые еще совсем сырые и не хотелось бы их забрасывать. Потому вернулся к работе над списком чатов.
- добавил отображение иконок отключения оповещения и звуков для чатов
- доработал механизм обновления списка чатов
- доработал систему черновиков
- доработал поле воода текста и анимации кнопок отправки сообщения, записи голосовых, вложения медиа, изменения размреа поля ввода
Черновики - это неотправленные сообщения. Они не сохраняются на сервере (только локально), отображаются в списке чатов красным цветом с иконкой карандашика.
Кнопку возврата назад разместил в левом нижнем углу (в видео видно). Обычно пишу сообщения одной рукой, да и вообще одной рукой все делаю. Когда нужно переключаться между вкладками, то это вызывает неудобство, приходится звать на помощь вторую руку так как нопка "назад" находится в верхней части экрана. Ну или можно рисковать, тянуться все той же рукой и выронить телефон.
Ошибка №1: сюрпризы платформ.
Работа идет сразу в нескольких направлениях, забегая наперед скажу, что работал над системой подгрузки изображений и медиа. Для оптимизации сетевого трафика, все файлы дико сжимаются и за это отвыечают отдельные библиотеки.
Тут я немного сел в лужу из-за неосведомленности относительно требований, которые предьявляются к мобильным платформам. Когда разрабатывал головоломку Total Reload, то очень многие части системы выносил в отдельные библиотеки. В общем-то это обычная практика, когда разработчики не копилируют весь код в один большой кусок исполняемого файла, а бьют на разные заменяемые модули:
В разных операционных системах динамические библиотеки собираются немного по-разному, но суть примерно одна: они нормально работают и их можно использовать и я их собирал для видеоигры для Windows, Linux, OSX. Претензий к ним не было.
А вот для мобильных платформ, здравствуйте, дело обстоит иначе. Поправьте если не прав. На многих форумах пишут, что из-за проблем с безопасностью (даже для IOS, где разработчик предоставляет вообще все данные чтобы исключить угрозу вредоносного кода), использование динамических библиотек нежелательно или запрещено. Тем не менее собирать их можно, что я и делал пока не обнаружил информацию о том, что из-за этого приложение может не пройти проверку. Однозначного запрета я не нашел, но вот что говорит Google:
Услуги ВПН продавать разрешено, но рекламировать - нельзя. Собственно тут, на мой взгляд, +/- лапоть ситуация, когда можно нарваться на сюрприз. Потому пришлось прилинковать все файлы статически.
Ошибка №2: UTC0 и точность времени
Видимо я был очень уверен в том, что лучше рассчитывать время на сервере относительно локального часового пояса. Не знаю как я дошел до этой дурацкой идеи, возможно головой стукнулся. Это доставило много головной боли и проблем на абсолютно ровном месте. Не делайте так 😂
Но это еще не все. В перове время не утвердил точность времени на сервер и клиенте. В итоге из-за этого начались проблемы связанные с получением последних обновлений с сервера. Этот момент был поправлен достаточно быстро.
Надо заметить, на клиенте время хранится в INTEGER а на сервере в Timestamp-формате базы данных. Нужно учесть этот важный момент, иначе сюрпризов не избежать.
Ошибка №3: context на сервере
Ну, тут все просто, сервер работает и без контекста хорошо. Зачем разбираться что это такое, сделаем сервер без него, а там посмотрим нужен он вообще или нет. Вроде все работает:
А потом прилетает куча проблем с висячими процессами, невозможностью отменить задачу и непонимание почему вообще этот контекст пытаются прикрутить чуть ли не к 99% операций на сервере. Контекст - важная штука, если сюрпризы не нужны, то лучше вникнуть 😂 Иначе все будет очень плохо.
Пожалуй это самые серьезные мои промахи. Ну, кроме криво спроектированной серверной системы рассылки сообщений (уже переделал).
Сейчас дорабатываю окно чатов. Выводится последнее сообщение или черновик. Помимо сообщений отправлять можно будет еще и файлы. Нужно бы научить визуализировать отправленные файлы. Этим займусь в ближайшее время.
--
По вечерам разрабатываю сервис для общения. Кому интересено, можете подписаться куда-нибудь на меня, попробуете его в числе первых.
Постепенно буду продолжать делиться успехами разработки.