DEV - iOS/iOS

[Swift] iOS 프로젝트에 Firebase 연동하기 2 - Realtime Database

베이비코더 2022. 4. 11. 23:19
반응형

이번에는 실제적으로 iOS 프로젝트에서 필요한 기능인 Database 패키지를 추가하고

간단한 테스트 코드를 작성해서 실행해보았다.


1. Firebase - Realtime Database 설정

 

Realtime Database 규칙

Realtime Database를 생성하고 규칙을 읽기 / 쓰기 모두 true로 해준다.

변경하고 나서 나오는 게시 버튼을 꼭 눌러야 한다.

 

2. SDK 추가

 

지난번 게시글에서 CocoaPods를 사용해서 SDK를 추가해봐야겠다고 마음을 먹었었는데,

그냥 자연스럽게 했었던 방법대로 XCode 내에서 Firebase Database SDK를 추가했다.

다음에는 꼭 .. pod 써보기로 약속 ~

 

XCode File -> Add Packages -> URL에 Firebase 입력 -> Add Package -> FirebaseDatabase 체크 -> Add Package

 

3. TEST

 

테스트 하기 위해 간단한 회원가입 코드를 작성했다.

이메일, 비밀번호를 TextField에 입력을 받고 가입하기 버튼을 누르면 Firebase DB에 입력한 값이 저장되는 코드다.

 

import UIKit
import FirebaseDatabase

/*
 회원가입
 */
class JoinUserViewController: UIViewController {
    
    // Firebase
    var firebaseDB: DatabaseReference!
    
    @IBOutlet weak var emailTextField: UITextField!
    @IBOutlet weak var pwTextField: UITextField!
    @IBOutlet weak var confirmPwTextField: UITextField!
    
    @IBOutlet weak var confirmSwitch: UISwitch!
    @IBOutlet weak var joinButton: UIButton!

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // Switch, Button 비활성화
        confirmSwitch.isOn = false
        joinButton.isEnabled = false

    }
    
    /* 개인정보 이용약관 동의 스위치 on off Action */
    @IBAction func confirmSwitchAction(_ sender: Any) {
        if confirmSwitch.isSelected == false {
            confirmSwitch.isSelected = true
            joinButton.isEnabled = true
        } else {
            confirmSwitch.isSelected = false
            joinButton.isEnabled = false
        }
    }
    
    /* 가입하기 Button Action */
    @IBAction func joinButtonAction(_ sender: Any) {
        print("가입하기 click")
        
        /*
         Firebase Test Code
         가입하기 버튼 누르면 데이터 입력하고 화면 나가기.
         */
        let inputEmail: String? = emailTextField.text?.description
        let inputPW: String? = confirmPwTextField.text?.description
        
        firebaseDB = Database.database().reference()
        firebaseDB.child("memberJoin").setValue(["email":inputEmail, "password":inputPW])
        
        self.dismiss(animated: true)
    }
    
    
    /* Cancel Button Action */
    @IBAction func cancelAction(_ sender: Any) {
        self.dismiss(animated: true)
    }
    

}

회원가입 화면

memberJoin 안에 email, password 데이터를 삽입하는데

emailTextField에 입력된 값인 inputEmail은 email에 삽입하고,

confirmPwTextField에 입력된 값인 inputPW를 password에 삽입한다.

 

emailTextField에는 test를 입력하고 confirmPwTextField(비밀번호 확인)에는 1234를 넣어 가입하기 버튼을 눌렀다.

 

DB

입력한 값 대로 Database에 저장된 것을 확인할 수 있다.

 

오류 - Exception NSException FirebaseApp.configure() could not find .... ~

 

처음 코드를 작성하고 빌드했을 때,

AppDelegate 파일에 잘 작성했던 FirebaseApp.configure()를 찾을 수 없다는 오류가 났다.

 

오타가 났었나 싶어서 다시 복붙 했는데 여전했다.

 

열심히 구글링해본 결과 프로젝트를 연결할 때 넣었던 GoogleService-Info.plist 파일을 XCode에서 제대로 추가하지 않아서 발생했던 오류였다.

 

Firebase 연결할 때 다운로드한 GoogleService-Info.plist 파일을 Finder에서 iOS 프로젝트 내에 그대로 옮겼는데,

그 이후에 XCode 프로젝트 우클릭 -> Add Files to "..."를 이용하여 복붙 했던 파일을 정확하게 Add 해주고 오류를 해결했다

반응형