TikTok Clone (1)
틱톡 클론 앱 과정을 정리해본다.
아마 모르는 개념 위주로만 정리할듯.
UIDesgin
사진으로 대체한다.
AppDelegate 설정
1
2
3
4
5
6
7
8
9
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
UINavigationBar.appearance().tintColor = UIColor(red: 0/255, green: 0/255, blue: 0/255, alpha: 1)
let backImg = UIImage(systemName: "chevron.backward")
UINavigationBar.appearance().backIndicatorImage = backImg
UINavigationBar.appearance().backIndicatorTransitionMaskImage = backImg
UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment(.init(horizontal: -1000, vertical: 0), for: .default)
return true
}
이렇게 해서 backButton을 설정 해준다.
Sign In VC 설정
1. NavigationTitle 설정
1
2
3
4
func setupNavigationBar() {
navigationItem.title = "Create new account"
navigationController?.navigationBar.prefersLargeTitles = true
}
이렇게 해주면 위에 타이틀이 생긴다.
2. TextField, ContainerView 설정
1
2
3
4
5
6
7
func setupUsernameTextfield() {
usernameContainerView.layer.borderWidth = 1
usernameContainerView.layer.borderColor = CGColor(red: 217/255, green: 217/255, blue: 217/255, alpha: 0.8)
usernameContainerView.layer.cornerRadius = 20
usernameContainerView.clipsToBounds = true
usernameTextfield.borderStyle = .none
}
현재 디자인이 TextField가 UIview안에 들어있는데, 그 uiview를 ContainerView라고 이름을 지었고, 그것을 설정해준다.
Sign up도 동일
Firebase 설정.
Auth, Database, Storage(swift도 혹시몰라 설치) 이렇게 설치를 해주었다.
Sign Up VC에서
import FirebaseAuth
를 해주고
sign up 버튼을 클릭하여 회원가입을 하기 위해
버튼에 다음과 같이 작성해본다.
1
2
3
4
5
6
7
8
9
10
11
@IBAction func signUpDidTapped(_ sender: Any) {
Auth.auth().createUser(withEmail: "test1@gmail.com", password: "123456") { authDataResut, error in
if error != nil {
print(error?.localizedDescription)
return
}
if let authData = authDataResut {
print(authData.user.email)
}
}
}
현재는 Firebase 에서 로그인 방식을 email / password로 해둔상태이다.
버튼을 눌러보면
1
Optional("test1@gmail.com")
이 출력되고,
이렇게 Firebase, Auth에도 등록이 된걸 알 수 있다.
Realtime Database 설정.
이전과 동일하게 테스트모드로 만들어 주면 된다.
유저정보를 데이터 베이스에 저장하는 코드를 작성한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if let authData = authDataResut {
print(authData.user.email)
let dict: Dictionary<String, Any> = [
"uid": authData.user.uid,
"email": authData.user.email,
"profileImageUrl": "",
"status": ""
]
Database.database().reference().child("users").child(authData.user.uid).updateChildValues(dict) { error, ref in
if error != nil {
print("Done")
}
}
}
dict라는 dictionary를 만드는데 uid, email, profileImageUrl, status의 정보를 가지는 배열이다.
그리고 Database.database().reference().child("users").child(authData.user.uid).updateChildValues(dict)
이건
users라는 table에서, 또 거기서 유저의 uid table을 만들고 거기에 유져의 데이터가 담기는 방식이다.
그러면 이렇게 정보가 담기게 된다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.