Записки разработчицы
1.97K subscribers
390 photos
24 videos
4 files
1.1K links
Разговоры об IT, о разработке. О мобилках нативных и кроссплатформенных.
Личный аккаунт @azharkova
Download Telegram
Прямо сейчас Евгений Сатуров показывает интересный воркшоп, как совместить KMP и Flutter.
По моему мнению, любое имеет право на существование. По крайней мере, когда делаешь связку, понимаешь, как можно переносить один и тот же код между платформами. KMP позволяет шарить бизнес-логику, но требует нативной реализации UI. Flutter позволяет делать и бизнес-логику, и UI. Платформенный функционал делается через каналы. В KMP можно реализовывать нативно.
Forwarded from Konstantin Tskhovrebov
Всем привет!
Сегодня идет бесплатная онлайн конференция DevParty, где от утра Владивостока до вечера в Калининграде нон-стоп выступают разные интересные спикеры.
https://gdg-devparty.ru/
Я тоже там буду😉
С 14:00 до 15:00 я расскажу сжатую версию доклада с мобиус про то, как запустил GitFox на иос и в браузере. Все самое главное осталось в докладе, урезал только бонусы и JB инсайды, ну и рассказывать буду на 1.25х 😅
Предлагаю всем, кто хочет услышать рассказ про перевод типичного андроид проекта двух-трех годичной давности на мультиплатформу (RxJava, Gson, Retrofit и тд), присоединятся!
Ютуб стрим (надеюсь к 14 будет он же, но всегда можно найти актуальный на сайте выше): https://www.youtube.com/watch?v=Xe3Ug3fCO3c
Новый API ActivityResult - нет лишних методов, меняем на лямбду. Запуск, как и у всего корутинового, через launch
Еще одна возможность: использование контракта для создания собственного интента
Очень интересное изменение в LiveData.
DSL для задания графа навигации.
Честно говоря, мне больше по душе использование навигации без графа. Если у вас аджайл проект, где часто преобладает творческая сторона заказчика, то графы часто теряют смысл.

Но в сама по себе штука интересная
#wwdc WWDC заканчивается. Очень много информации, которую надо переварить, очень много выводов надо сделать.
30 июня EPAM устраивают небольшую сессию на 1 час с обсуждением новинок этой недели:
https://events.epam.com/events/mobile-webinar-ios
#wwdc #swiftui Apple представили обновление ViewState, в соответствии с новым пониманием архитектуры для SwiftUI приложения:
1. Да, теперь это не MVVM, а MVI. Речь идет о поддержке непрерывного обновления View в зависимости от изменяемых данных, запрос которых рекомендуется делать в зависимости от цикла View
2. Появился новый @PropertyWrapper - @StateObject. Это статичная модель @ObservableObject, т.е неизменяемая. Почему и где нужно. @ObservableObject - пересоздается при пересоздании View. Да, Apple признали, что это тяжелая операция. Модель - это класс, он оказывается в heap, а это потенциальные leak of memory.
@StateObject - статичная вещь. Либо вы ее создаете при инициализации View, либо передаете из родительского View. Например, через @EnvironmentObject
3. Новые методы для триггера изменений в ObservedObject. Теперь это не только onReceive, но и onChange, onOpenURL, onContinueUserActivity. Похоже на Deep Linking
4. Новое понимание хранилища. Появляется @AppStorage - глобальное хранилище на основе UserDefaults, доступное из любой точки приложения. И @SceneStorage - аналогичное хранилище со скоупом внутри сцены и доступное только внутри View. С одной стороны, это позволяет организовать байндинг с сохраненными параметрам быстро и просто без посредников. Также предлагается использовать такой подход для хранения стейтов - очень похоже на Bundle. С другой, само прямое обращение к хранилищу из View является нарушением архитектурной парадигмы.
5. Насчет навигации не изменилось ничего. Либо оно еще в работе, либо Apple ждет от нас решений, где мы, оперируя новыми Storage, StateObject и новыми методами lifecycle, создадим что-то удобоваримое, чтобы им было что представить в следующем году и сказать нам всем одно единственное: "Спасибо".

Да, если вы не в курсе, они открыто говорят, что "вдохновились решениями неравнодушных разработчиков" для SwiftUI. Это "What's new in SwiftUI"

На следующей неделе будет статья про то, как эти изменения можно использовать в бою
Итак, немного по докладу по Server-Driven UI. Никита представил не безинтересный подход, при котором UI создается из json, гененируемого на бекенде и распарсиваемого определенным образом на клиенте МП. С одной стороны, это позволяет добиться гибкости и идентичности на разных платформах. По сути, мы делаем UI по принципу веб-страницы, но не в вебе. С другой, есть определенные проблемы и нюансы, которые надо предусмотреть:
1. Трудности с оффлайн-модом и сетевыми перебоями. Вжух - и у тебя даже нет каркаса приложения.
2. Сохранение стейта между экранами.
3. Миграция между версиями (в т.ч парсинга)
4. Разные платформенные особенности.
5. Новые кастомы

Все это потребует дополнительного кодинга на клиенте МП

Вообще решение подойдет для случая, когда ваш клиент (ака заказчик) хочет гибко менять UI по своему желанию. И менять вам нужно постоянно.
Либо если вы делаете много-много однотипных решений. Например, клиенты банков (о них говорит и Никита) или магазинов. Там просто запретить оффлайн-мод.
"Мы использовали MVI, хранили все в стейте, и это было немножко больно"(с)
Плюс подхода: можно тащить дизайн прям из Sketch или Figma.
Сегодня ожидается доклад о фичах, которые не так широко известны, но весьма интересны
Также можно задать вопрос Кириллу Розову (Android Brodcast) через эту форму:
https://forms.gle/JHpo2E7bitQvJwAXA
Тот неловкий момент, когда не знаешь, кто у кого позаимствовал, Apple у Google или Google у Apple. Да, в SwiftUI есть свои SceneStorage и AppStorage