[iOS] App Development

[iOS] 기본 개념 정리 #6 : Firebase/Auth 회원가입, 로그인, 로그아웃, 네비게이션바에서 back 버튼 없애기

ddgoori 2021. 11. 5. 17:14

* iOS 개인 프로젝트 시작 전 기본 개념 복귀 차원으로 내용을 정리합니다.

Adding Firebase to your Project

 

  1. Firebase 로그인
  2. 대시보드에서 iOS 추가
  3. 설명대로 진행하면 됨. 단, podfile에서 내가 사용할 firebase를 찾아서 설치하기
    1. Auth: 회원가입 로그인 기능 / Firestore 데이터베이스 설치
  4. 회원가입하고 파이어베이스로 보내서 확인하고 바로 채팅 뷰컨으로 보내기
  5. 로그인 가능할 경우 파이버에스에서 확이낳고 바로 채팅 뷰컨으로 보내기

 

회원가입

 

  1. 파이어베이스 대시보드 - authentification - 사용할 인증 체크온
  2. create new user하기
  3. 레지스터 버튼 누르는 IBAction에 아래 코드 삽입
  4. import Firebase / email과 password는 텍스트필드에 타입할 것이고 그걸 넣어주면 된다.

이메일과 패스워드가 do not fail 하면 내부의 코드를 실행하라는 것, 즉 nil이 아니면 실행하나느 것임

옵셔널 체이닝! 둘 다 nil이 아니어야 아래 코드가 실행됨

 

클로저 내부에는 authResult, error를 사용할 수 있다. error도 옵셔널이기 때문에 옵셔널리 바인드해야한다.

if let e = error  { } 로 에러가 있으면 사용할 수 있게 if let을 사용한다.

else로 에러가 없다면 successfully register한 것이기 때문에 챗 뷰 컨트롤러로 네비게이트 시킨다!

 

여기서 세그웨이를 시키면 되는 것이다. 

세그웨이 아이덴티파이어를 복사한 후에 sender: self (ReigsterViewController에서 ChatViewController로 가는 것이기 때문에) sender는 self로 하는 것이다. 

 

클로저 안에 있으면 현재 class안에 있는 어떤 메소드이던지 self를 붙여줘야 한다.

 

파이어베이스는 이메일과 패스워드 validation 있음

register가 잘되었기 때문에 뷰컨으로 가짐

 

파이어베이스 프로젝트 대시보드에 가보면 유저가 들어가있음

 

 

e.localizedDescription을 통해 지역에 맞는 에러 메시지를 보여줄 수 있다.

 

로그인

 

 

login 버튼을 누르면 파이어베이스에 보내고, 파이어베이스 authentication database에 있는지 확인한 후 성공, 실패를 보내준다.

  1. 위 경로에서 확인
  2. step1, step2는 이미 했기 때문에 3번부터 확인
  3. 아래 코드 뜻: 이 클로저가 끝나면 authResult, error가 만들어진다. 에러는 옵셔널. 
  4. loginPressed IBAction에 가이드 코드를 복붙한다.
  5. import Firebase, 그리고 사용자가 입력한 이메일과 비밀번호를 pass한다. if let으로 이메일과 패스워드 둘다 nil이 아니면 메소드가 작동하도록 옵셔널 바인딩을 사용한다.
  6. weak self 등의 소스는 필요가 없음, outdated된 소스임(필요 없는 것은 지우기)
  7. if let e = error 하는 이유는, error가 옵셔널이기때문에 error가 발생하면 해당 소스코드를 실행하기 위해서임
  8. 만약에 성공하면 perform segue로 세그의 identifier를 이용해 다음 뷰컨으로 보낸다. // class 내부에서 클로저 내부에 메소드를 사용하려면 self를 써야함

로그아웃

 

로그아웃 버튼을 만들고 유저가 누를 시에 최초 화면으로 간다.

  1. ChatViewController에서 라이브러리에 bar button item 추가
  2. 버튼과 같은데 네비게이션 바 위에 있음
  3. 컨 + 뷰컨으로 드래그하여 IBAction을 만듬 => 여기에 아래 코드 작성
  4. 로그아웃에 성공하면? 첫번째 뷰로 가는 코드를 추가해줘야 함
  5. do 블록안에 웰컴 스크린으로 Navigate시키자!
    1.  2레벨로 되어있지만, 한번에 웰컴 스크린으로 가는 법?
    2. 네비게이션컨트롤러에서 pop시킬 수 있다. rootViewController제외하고 모든 stack에 있는 뷰컨을 팝 시켜버림
  6. 채팅 뷰컨 네비게이션바에 백 버튼 없애고싶음
    1. 해당 뷰컨의 viewDidLoad에서 navagationItem.hidesBackButton = true 실행해주면 됨
  7. 타이틀을 원한다면?
    1. viewDidLoad에서 title = "블라블라" 하면 타이틀이 생김