어떤 플랫폼에서든 유저의 진행상황이 공유되는 일기장을 만들고 싶어 내부 저장소보다는 외부 저장소를 만들고자 했습니다.
그래서 iOS의 장점을 살리고자 iCloud를 사용해보고 싶었으나 이를 사용하기 위해서는 cloudKit이라는 애플의 API가 필요한데 이를 사용하기 위해서는 Apple Development Program 계약이 필요합니다. 이 계약의 가격은 무려 12만원 상당입니다.;;
물론 비영리 단체 또는 교육기관은 수익을 창출하지 않는다는 전재 하에 무료라지만 교육기관으로 등록하는건 찾아봐도 없고 개인 개발자이므로 택도 없었습니다.
때문에 Firebase를 사용하기로 했습니다. Firebase는 일부 서비스에 한해 무료입니다.
(가격 정책: https://firebase.google.com/pricing/?gclid=CjwKCAiA-_L9BRBQEiwA-bm5fpCPMi2xOC-UgxPZ8BAU09l9k5LGv-lWaaVKufL-ncqs6FhpH94RwBoCRngQAvD_BwE)
어떤 플렛폼에서나 가능하도록 하기 위해서는 사용자마다 식별이 가능해야합니다. 때문에 로그인/회원가입이 필요하고 Firebase는 Firebase Auth라는 서비스가 있습니다.
https://console.firebase.google.com/u/0/
위 링크를 통해 Firebase 프로젝트를 생성할 수 있습니다.
저는 앱추가를 통해 iOS 프로젝트에 Firebase를 설치했습니다.
단계별로 알려주는데 상당히 친절하게 묘사가 되어있었습니다.
iOS 앱에 firebase 추가 단계에서 저는 pod로 설치했는데
터미널에서 (프로젝트 파일 위치) pod init
을 하면 podfile이 생성됩니다.
내가 원하는 서비스를 pod <서비스 이름>
으로 작성하고 터미널에서 pod install
명령을 하면 이 서비스와 관련된 종속성까지 전부 설치됩니다.
하라는 대로 하니까 에러없이 설치되었습니다.
이제 firebase를 이용할 시간입니다.
로그인 관련 ViewModel인 AuthViewModel을 작성했습니다. 로그인 또는 회원가입 관련 메커니즘은 이 파일에서 작성할 것입니다.
import FirebaseAuth
class AuthViewModel : NSObject {
var currentUser: String?
func logIn(email:String, password:String) -> Bool {
Auth.auth().signIn(withEmail: email, password: password) { (user, error) in
if user != nil {
self.currentUser = user?.description
print("Log In Success!")
}
else{
print("Log In Failed. \(error.debugDescription)")
}
}
return true
}
}
Auth.auth().signIn(withEmail: email, password: password) { (user, error) in ...
VC 또한 작성했습니다. LogInVC는 AuthViewModel을 구성하고 있습니다.
import UIKit
class LogInViewController : UIViewController {
@IBOutlet weak var emailTextBar: UITextField!
@IBOutlet weak var passwordTextBar: UITextField!
@IBOutlet weak var statusBar: UILabel!
let authViewModel = AuthViewModel()
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func logInButtonClicked(_ sender: Any) {
let email:String = emailTextBar.text!
let password:String = passwordTextBar.text!
authViewModel.logIn(email:email, password:password)
}
}
아직 회원가입 기능이 없으므로 firebase console에서 아이디 정보를 직접 입력했습니다.
그리고 시뮬레이터에서 로그인.
콘솔.
다음 글은 당연하게도 회원가입입니다.