На примере обновления фоторедактора WatchTheBirdie вы узнаете как создаются приложения и какие за этим стоят технологии.
В этой статье вы прочитаете:
- Про меня и этот дневник
- Предыстория и планы по обновлению моего фоторедактора
- Что будет в следующих статьях
К каждой статье будет исходный код примеров на Github. Но для этой статьи только пустой проект Xcode для будущих статей.
Про меня и этот дневник
Меня зовут Андрей Зарембо-Годзяцкий, я занимаюсь мобильной разработкой уже больше 10 лет. Я работал в RedMadRobot, Яндекс, OZON, Rambler, Tinkoff Mobile и Банк, Сбер и снова в OZON Банк. Прошел путь от разработчика до руководителя мобильной разработки, архитектора и руководителя продукта.
Если вам нужна консультация по мобильной разработке, напишите мне в Telegram
У меня большой опыт, но я до сих пор чувствую нехватку информации и потребность учиться. Все получается не так, как ожидается, приходится придумывать обходные пути, проявлять фантазию и делать смешанные решения. Я решил записать свой опыт, чтобы помочь тем, кто будут решать схожие задачи.
Я выбрал формат дневника, буду рассказывать что я делаю, почему, зачем и помощью чего. Для вариантов решений расскажу про них и мотивацию выбора. В статьях код будет для иллюстрации конкретных решений, а весь код проекта будет открытым.
Статьи будут выходить раз в неделю в четверг. Объем каждой статьи будет рассчитан на 3-4 минут чтения.
Что я использую в работе
- MacBook Pro 13 M1 c macOS Ventura 13.2.1
- Xcode 14.3.1 c Swift 5
Предыстория проекта
WatchTheBirdie - детский фоторедактор. Мы сделали его вместе с сыном пару лет назад, когда он начал фотографировать. Четырехлетнему ребенку тяжело справляться с системной камерой: слишком много кнопок, нужно уметь читать и нет наклеек. А мне было сложно находить милые фотографии среди сотен размытых и объяснять коллегам цель отправки фото кота.
Мы описали требования к продукту:
- Простой интерфейс.Только нужные и яркие кнопки, никакого MutltiTouch и сложных жестов, все управляется одним пальцем.
- Наклейки. Шапки, солнце, радуга, воздушные шарики, их можно масштабировать, вращать и зеркалить, а фото можно редактировать снова
- Управляют родители. Сохраняют и отправляют фотки только взрослые. Все фото, сделанные детьми хранятся внутри приложения
- iPhone и iPad на iOS 12. Старый iPad стал детским и папин телефон тоже
Я написал ТЗ, заказал дизайн и через несколько месяцев сын стал делать фотки и украшать их наклейками. Сейчас я решил обновить приложение, потому что дети продолжают пользоваться приложением, а в Appstore его скачивают несколько человек в неделю.
Сейчас фоторедактор полностью бесплатен и скачать его можно в Apple AppStore
Планы по обновлению
- Переписать интерфейс с UIKit на SwiftUI. Переписать интерфейс с помощью новых технологий, исправить ошибки
- Добавить AI на основе CoreML. Добавить оценку фото с помощью искусственного интеллекта, фильтры для изображений и управление жестами для съемки селфи с задержкой
- ASO и маркетинг. Оптимизировать страницу в магазине приложений, научиться зарабатывать
- Наклейки. Добавить ещё наклеек и эффектов
Что будет в следующих статьях
В дневнике будут не только статьи про решение конкретных задач моего проекта, но и общие статьи о разработке и инструментах.
Что я планирую по фоторедактору:
- О проекте. Эта статья. Про сам проект и что я буду делать дальше
- Про Кнопки. Про обновление кнопок на SwiftUI, Анимацию, состояния и сокрытие кнопок при скролле
- Про панели инструментов. Как создать панели для кнопок, с фоном и узором поверх, добавить туда кнопки
- Родительский режим. Как добавить отдельный режим приложения, влияющий на интерфейс и функциональность приложения.
- Галерея. Как реализовать галерею фотографий с тремя режимами просмотра и анимироваными переходами между ними
- Просмотр фото. Сделать просмотр фото на SwiftUI не так-то легко и поможет мост в UIKit.
- Навигация. Как реализовать навигацию по приложению
- Редактирование галереи. Как реализовать редактирование галереи
- Обрезка фото и поворот. Как сделать обрезку фоток и поворот на SwiftUI c помощью UIKit
- Управление наклейками. Как просматривать ленту наклеек и добавлять их на фото, как редактировать
- Запрос разрешений. Как сделать так, чтобы можно было запрашивать разрешения в едином простом формате и тестировать состояние, когда не дали доступ
- Картинка с камеры. Как получить картинку с камеры и как накладывать фильтры
- Фильтры. Как добавить фильтры
- Качество фотографий c CoreML. Как реализовать оценку качество фотографий на модели
- Собственные фильтры c CoreML. Как реализовать собственные фильтры для
- Управление жестами с CoreML. Как добавить распознавание жестов на CoreML
- ASO и монетизация. Оптимизировать страницу в магазине приложений, научиться зарабатывать
Помимо дневника я планирую рассказать и про общие темы:
- Форматы изображений в Xcode. Какие бывают изображения и как используются
- SwiftUI Preview Provider. Как работает Preview Provider и как его эффективно использовать
- Swift Combine. Функциональное(реактивное) программирование, где оно помогает, а где лучше не использовать
- DI, что это и зачем. Про внедрение зависимостей по-простому
- SF Symbols возможности. Как использовать SF Symbols и что они умеют
- SwiftUI State. Как SwiftUI работает с состоянием компонентов, когда и как его обновляет.
- Как поднять и настроить свой VPS. Как работать с VPS, использовать Docker
- Git. Про Git и как им пользоваться
Оставляйте в комментариях интересующие вас темы, если я смогу про них рассказать - обязательно добавлю в план.