Этот проект был реорганизован с использованием Composable Architecture, а последняя версия кода находится в ветке composable-architecture.
WeChat имитировал использование SwiftUI.
Хотя это всего лишь копия проекта, я все же пишу его в соответствии с реальными требованиями производства и разработки, а не только на простом уровне пользовательского интерфейса.
Цель этого проекта — максимально использовать чистый фреймворк SwiftUI. Если SwiftUI еще не поддерживает его, мы не будем реализовывать его сейчас и подождем, пока SwiftUI его поддержит.
Redux широко используется в проектах React. Концепция декларативного программирования в SwiftUI очень похожа на React. Поэтому использование Redux в SwiftUI идеально. Что такое Редукс? Как реализовать Redux? Вы можете прочитать статью, которую я написал ранее «Реализация Redux в SwiftUI».
В этом проекте используется архитектура Redux, а соответствующие файлы находятся в папке Redux
.
Многоязычная обработка этого проекта относится к методу Kickstarter iOS. Используйте сценарий bin/strings-script
и ExternalResources/locales.json
для автоматического создания многоязычных файлов и типов Strings
. Когда вам нужно добавить новый оператор, вам нужно всего лишь добавить соответствующий перевод в locales.json
, а затем выполнить команду make strings
. Вы можете использовать Strings.xxx()
в проекте, чтобы получить оператор на текущем языке.
Этот проект содержит большое количество модульных тестов для обеспечения точности ключевой логики.
SwiftUIRedux: библиотека Redux, написанная мной. Идеи по написанию вы можете прочитать в статье, которую я написал ранее «Реализация Redux в SwiftUI».
Kickstarter-Prelude: несколько удобных расширений типа Swift. Я взял код из проекта Kickstarter-Prelude на Kickstarter и превратил его в библиотеку Swift Package.
URLImage: отображение сетевых изображений.
LBJMediaBrowser: Библиотека, которую я написал сам для предварительного просмотра изображений и видео.
Регистрация пользователя и вход в систему, чат, контакты и личная информация в этом проекте реализованы через Google Firebase, пытаясь максимально имитировать реальную логику разработки.
Зарегистрируйтесь и войдите в систему
чат
Контактное лицо
Обнаружить
я
Поскольку в этом проекте используется Firebase Google, пользователи в материковом Китае должны подключиться к VPN, прежде чем запускать его.
Тестовый аккаунт: [email protected] / 11111111.
Если вы будете рады добавить новые функции в этот проект, я буду очень рад этому. Пожалуйста, используйте GitHub Issues, чтобы записать функции, которые вы хотите выполнить, а затем отправьте PR после реализации.
Я фанат кода и уделяю большое внимание простоте и читабельности кода. Пожалуйста, следуйте моему стилю при написании кода. Если вы считаете, что в коде есть области, которые можно улучшить, укажите на это. Спасибо!