콘솔로 이동

Firebase.com에서 iOS 앱 업그레이드

이 문서에서는 기존 Firebase.com 앱에서 새 Firebase Console 및 API로 업그레이드하는 과정을 안내합니다.

총 4가지 단계가 있습니다.

  1. 새 Firebase Console로 프로젝트 업그레이드
  2. 새 Firebase SDK 설치
  3. 데이터베이스 코드 업데이트
  4. 인증 코드 업데이트

언제든지 프로젝트를 새 firebase.google.com 콘솔로 업그레이드할 수 있으며 애플리케이션은 계속 작동합니다. 애플리케이션에서 새 Firebase 기능의 일부를 사용할 준비가 되면 코드를 업데이트할 수 있습니다.

새 Firebase Console로 프로젝트 가져오기

  • Firebase Console로 이동하고 '현재 Firebase.com의 프로젝트'에서 프로젝트를 찾습니다.
  • 업그레이드하려는 프로젝트에서 가져오기를 클릭합니다.
    • 프로젝트가 firebase.com에서 유료 요금제를 사용하는 경우 새 콘솔에서 프로젝트에 대한 결제를 설정해야 합니다. 결제 정보는 자동으로 이전되지 않습니다.
    • 결제 계정을 선택하거나 만듭니다. 가져오기를 완료하면 이 계정이 프로젝트에 대한 모든 청구를 담당합니다.
  • 실시간 데이터베이스 및 호스팅 콘텐츠가 즉시 자동으로 Firebase Console로 가져오기 처리됩니다.
  • 사용자 데이터는 자동으로 새로운 인증 백엔드로 이전됩니다. 백그라운드에서 이전되므로 사용자는 데이터가 이전되는 동안 앱을 계속 사용할 수 있습니다. 사용자 가입 및 로그인은 영향을 받지 않습니다. 시스템에서 사용자 계정을 이전하는 동안 Firebase Console의 인증 탭에 스피너가 표시됩니다.
  • Firebase.com 앱의 활성 프로모션 코드가 있는 경우 문의하세요.

새 Firebase SDK 설치

애플리케이션의 코드를 즉시 업데이트할 필요는 없습니다. 기존 데이터베이스 및 인증 코드는 업그레이드된 프로젝트에 대해 계속 사용할 수 있습니다. 하지만 애플리케이션에서 새 Firebase 기능의 일부를 사용할 준비가 되면 새 Firebase SDK를 설치할 수 있습니다.

새 SDK를 사용하기 시작하면 Firebase용 Google 애널리틱스는 자동으로 사용됩니다. 애널리틱스 데이터는 기본적으로 다른 Firebase 기능 및 Google 제품을 개선합니다. 언제든지 설정에서 애널리틱스 데이터가 공유되는 방식을 관리할 수 있습니다. 자세히 알아보기

앱 구성

이제 Firebase 콘솔에서 다운로드할 수 있는 GoogleService-Info.plist 파일을 사용하여 앱을 구성할 수 있습니다. 프로젝트에 구성을 쉽게 추가하려면 다운로드한 GoogleService-Info.plist를 XCode 프로젝트로 드래그합니다. '필요한 경우 항목 복사'를 선택하여 프로젝트 디렉토리에 추가합니다.

GoogleService-Info.plist 파일은 FIRApp 클래스에서 처리됩니다. AppDelegate 클래스의 application:didFinishLaunchingWithOptions: 메소드에 다음 호출을 추가합니다.

Objective-C

[FIRApp configure];

Swift

FIRApp.configure()

데이터베이스 코드 업데이트

CocoaPods 종속 항목 업데이트

가장 쉽게 시작하는 방법은 CocoaPods 종속 항목을 변경하는 것입니다. 3.x 버전에서 Firebase 포드에는 각 API에 다음과 같이 별도의 하위 설정이 있습니다.

이전

pod 'Firebase', '>= 2.5.1'
이후

pod 'Firebase/Core'
pod 'Firebase/Database'

pod update를 실행하여 새 포드를 얻습니다. 앱에서는 API 이름이 변경된 위치에 컴파일 오류 또는 경고가 많이 있을 것입니다. 이 가이드의 나머지 부분에서는 이러한 문제를 해결하는 방법을 설명합니다.

Objective-C를 사용하는 경우 먼저 #import 줄을 바꿉니다. Swift를 사용하는 경우 변경 사항이 없습니다.

이전

#import <Firebase/Firebase.h>
이후

@import Firebase

데이터베이스 참조 가져오기

3.x SDK에서 Firebase 참조는 FIRDatabaseReference로 대체되고 FIRDatabase 클래스를 사용하여 데이터베이스로 초기 참조를 가져옵니다. 따라서 FIRApp을 구성한 후에 다음과 같이 코드에 데이터베이스 참조를 가져올 수 있습니다.

이전

Objective-C


Firebase *rootRef = [[Firebase alloc] initWithUrl:@"https://<YOUR-FIREBASE-APP>.firebaseio.com"];

Swift


var rootRef = Firebase(url:"https://<YOUR-FIREBASE-APP>.firebaseio.com")
이후

Objective-C


FIRDatabaseReference *rootRef= [[FIRDatabase database] reference];

Swift


var rootRef = FIRDatabase.database().reference()

데이터베이스 URL은 GoogleService-Info.plist 파일에서 자동으로 정해지므로 지정할 필요가 없습니다.

디스크 지속성 사용

앱에서 디스크 지속성을 사용 중이면 이제 FIRDatabase 객체를 통해서도 사용할 수 있습니다.

이전

Objective-C


[Firebase defaultConfig].persistenceEnabled = YES;

Swift


Firebase.defaultConfig().persistenceEnabled = true
이후

Objective-C


[FIRDatabase database].persistenceEnabled = YES;

Swift


FIRDatabase.database().persistenceEnabled = true

2.x SDK와 마찬가지로 데이터베이스에 대한 다른 호출이 실행되기 전에 디스크 지속성을 사용해야 합니다.

클래스/메소드 참조 업데이트

여러 데이터베이스 유형은 다른 API와 맞추기 위해 3.x SDK에서 이름이 변경되었습니다. 이 표에는 수행해야 할 일반적인 몇 가지 변경 내용이 있습니다.

이전 이후
Firebase FIRDatabaseReference
FDataSnapshot FIRDataSnapshot
FirebaseHandle FIRDatabaseHandle
FEventType FIRDataEventType
FQuery FIRDatabaseQuery
FMutableData FIRMutableData
FTransactionResult FIRTransactionResult
FConfig FIRDatabase
FirebaseApp FIRDatabase
kFirebaseServerValueTimestamp [FIRServerValue timestamp]

찾는 클래스나 메소드가 없으면 데이터베이스 참조 문서를 살펴봅니다.

인증 코드 업데이트

이제 FIRAuth 클래스에서 Firebase 인증 기능을 사용할 수 있으므로 인증 작업은 Firebase 참조를 통하지 않고 FIRAuth 인스턴스에서 수행됩니다.

CocoaPods 종속 항목 업데이트

인증이 이제 자체 모듈에 있으므로 다음과 같이 Podfile에 종속 항목을 먼저 추가해야 합니다

pod 'Firebase/Auth'

종속 항목을 추가한 후에 pod update를 다시 실행해야 합니다.

사용자 로그인

인증 메소드는 이전과 비슷하게 실행하지만 새 이름으로 FIRAuth 개체에 메소드로서 존재하며 예를 들어 FAuthData는 이제 FIRUser로 대체됩니다.

이전

Objective-C


[ref authAnonymouslyWithCompletionBlock:^(NSError *error, FAuthData *authData) {
    if (error) {
        NSLog(@"Sign in failed: %@", error.localizedDescription);
    } else {
        NSLog(@"Signed in with uid: %@", authData.uid);
    }
}];

Swift


ref.authAnonymouslyWithCompletionBlock { error, authData in
    if let error = error {
        print("Sign in failed:", error.localizedDescription)
    } else {
        print("Signed in with uid:", authData.uid)
    }
}
이후

Objective-C


[[FIRAuth auth] signInAnonymouslyWithCompletion:^(FIRUser *_Nullable user,
                                                  NSError *_Nullable error) {
    if (error) {
        NSLog(@"Sign in failed: %@", error.localizedDescription);
    } else {
        NSLog(@"Signed in with uid: %@", user.uid);
    }
}];

Swift


FIRAuth.auth()!.signInAnonymouslyWithCompletion() { (user, error) in
    if let error = error {
        print("Sign in failed:", error.localizedDescription)
    } else {
        print ("Signed in with uid:", user!.uid)
    }
}

다른 인증 제공업체의 문서는 FIRAuth 클래스 또는 Firebase 인증 가이드를 참조하세요.

맞춤 토큰으로 사용자 로그인 처리

클라이언트 측에서 커스텀 토큰으로 인증하는 방법도 이전과 비슷합니다. 2.x API 및 새 API에서 커스텀 토큰으로 로그인하는 방법은 다음과 같습니다.

이전

Objective-C


[ref authWithCustomToken:AUTH_TOKEN
     withCompletionBlock:^(NSError *error, FAuthData *authData) {
    if (error) {
        NSLog(@"Login Failed! %@", error);
    } else {
        NSLog(@"Login succeeded! %@", authData);
    }
}];

Swift


ref.authWithCustomToken(AUTH_TOKEN, withCompletionBlock: { error, authData in
    if error != nil {
        println("Login failed! \(error)")
    } else {
        println("Login succeeded! \(authData)")
    }
})
이후

Objective-C


[[FIRAuth auth] signInWithCustomToken:customToken
                           completion:^(FIRUser *_Nullable user,
                                        NSError *_Nullable error) {
                             // ...
                           }];

Swift


FIRAuth.auth()?.signIn(withCustomToken: customToken ?? "") { (user, error) in
  // ...
}

서버에서 생성하는 맞춤 토큰에 새로운 형식이 사용됩니다. Node.js 및 자바용 Firebase Admin SDK를 사용하여 새 API와 호환되는 커스텀 토큰을 생성하거나 타사 JWT 라이브러리를 사용하여 커스텀 토큰을 생성할 수 있습니다.

2.x API의 헬퍼 라이브러리가 생성하는 토큰은 기본적으로 24시간 후에 만료되지만 Firebase Admin SDK가 생성하는 맞춤 토큰은 1시간 후에 만료됩니다.

사용자 로그아웃

이전

Objective-C


[ref unauth];

Swift


ref.unauth()
이후

Objective-C


[[FIRAuth auth] signOut:nil];

Swift


try! FIRAuth.auth()!.signOut()

인증 상태 모니터링

이전

Objective-C


[ref observeAuthEventWithBlock:^(FAuthData *authData) {
    if (authData) {
        NSLog(@"User is signed in with uid: %@", authData.uid);
    } else {
        NSLog(@"No user is signed in.");
    }
}];

Swift


ref.observeAuthEventWithBlock({ authData in
    if authData != nil {
        print("User is signed in with uid:", authData.uid)
    } else {
        print("No user is signed in.")
    }
})
이후

Objective-C


[[FIRAuth auth] addAuthStateDidChangeListener:^(FIRAuth * _Nonnull auth, FIRUser * _Nullable user) {
    if (user) {
        NSLog(@"User is signed in with uid: %@", user.uid);
    } else {
        NSLog(@"No user is signed in.");
    }
  }];

Swift


FIRAuth.auth()!.addAuthStateDidChangeListener() { (auth, user) in
    if let user = user {
        print("User is signed in with uid:", user.uid)
    } else {
        print("No user is signed in.")
    }
}

FIRAuth에는 많은 새 기능(계정 연결, 많은 인증 제공업체 등)이 있습니다. 자세한 내용은 인증 가이드인증 참조 문서를 확인하세요.

기존 로그인 이전

사용자가 기존의 SDK로 앱에 로그인한 경우 새 SDK로 로그인 상태를 유지하려면 약간의 코드 작성이 필요합니다. 그렇지 않으면 사용자가 다시 로그인해야 합니다. 관련 오픈소스 샘플 코드는 Firebase Auth Migration Helpers GitHub 저장소를 참조하세요.

새 비밀번호 재설정 템플릿 업데이트

앱에서 사용자가 이메일 및 비밀번호 인증으로 로그인하도록 허용하는 경우 사용자에게 비밀번호를 재설정하는 옵션도 제공해야 합니다.

새 SDK로 업그레이드하고 나면 사용자 비밀번호 재설정 이메일은 Firebase Console에 지정된 새 템플릿을 사용합니다. 앱의 필요에 맞게 템플릿을 업데이트해야 합니다.

Firebase 라이브러리 업데이트

다음 라이브러리를 사용하는 경우 최신 버전으로 업그레이드해야 합니다.

라이브러리 지원되는 버전 리소스
GeoFire 1.2.x GitHub