이 프로젝트는 Composable Architecture를 사용하여 리팩터링되었으며 최신 코드는 composable-architecture 분기에 있습니다.
SwiftUI를 사용하여 WeChat을 모방했습니다.
비록 카피 프로젝트일 뿐이지만 단순한 UI 수준이 아닌 실제 제작 및 개발 요구 사항에 따라 작성합니다.
이 프로젝트의 목표는 가능한 한 순수한 SwiftUI 프레임워크를 사용하는 것입니다. SwiftUI가 아직 지원하지 않는다면 지금 구현하지 않고 SwiftUI가 지원할 때까지 기다리겠습니다.
Redux는 React 프로젝트에서 널리 사용됩니다. SwiftUI의 선언적 프로그래밍 개념은 React와 매우 유사합니다. 따라서 SwiftUI에서 Redux를 사용하는 것은 완벽합니다. Redux 란 무엇입니까? Redux를 구현하는 방법은 무엇입니까? "Implementing Redux in SwiftUI" 이전에 제가 쓴 글을 읽어보실 수 있습니다.
이 프로젝트는 Redux 아키텍처를 사용하며 관련 파일은 Redux
폴더에 있습니다.
본 프로젝트의 다국어 처리는 Kickstarter iOS의 방식을 참고합니다. bin/strings-script
스크립트와 ExternalResources/locales.json
사용하여 다국어 파일과 Strings
유형을 자동으로 생성합니다. 새 문을 추가해야 하는 경우 locales.json
에 해당 번역을 추가한 다음 make strings
명령을 실행하기만 하면 프로젝트에서 Strings.xxx()
사용하여 현재 언어로 된 문을 얻을 수 있습니다.
이 프로젝트에는 핵심 로직의 정확성을 보장하기 위한 다수의 단위 테스트가 포함되어 있습니다.
SwiftUIRedux: 제가 작성한 Redux 라이브러리입니다. 글쓰기에 대한 아이디어를 얻으려면 "Implementing Redux in SwiftUI" 이전에 제가 쓴 글을 읽어보세요.
Kickstarter-Prelude: 몇 가지 편리한 Swift 유형 확장입니다. Kickstarter의 Kickstarter-Prelude 프로젝트에서 코드를 가져와 Swift 패키지 라이브러리로 만들었습니다.
URLImage: 네트워크 이미지를 표시합니다.
LBJMediaBrowser: 이미지와 비디오를 미리보기 위해 직접 작성한 라이브러리입니다.
본 프로젝트의 사용자 등록 및 로그인, 채팅, 연락처, 개인정보 등은 모두 Google의 Firebase를 통해 구현되어 실제 개발 로직을 최대한 시뮬레이션하려고 노력하고 있습니다.
등록 및 로그인
채팅
담당자
발견하다
나
이 프로젝트는 Google의 Firebase를 사용하므로 중국 본토 사용자는 실행하기 전에 VPN에 연결해야 합니다.
테스트 계정: [email protected] / 11111111.
이 프로젝트에 새로운 기능을 추가하게 된다면 매우 환영할 것입니다. GitHub Issues를 이용해 하고 싶은 기능을 적어주시고, 구현 후 PR을 제출해주세요.
나는 코드광이고 코드의 단순성과 가독성에 큰 관심을 기울입니다. 코드를 작성할 때 내 스타일을 따르세요. 코드에 개선할 수 있는 부분이 있다고 생각하시면 지적해 주세요. 감사해요!