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

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

다음은 4가지 단계입니다.

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

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

새 Firebase 콘솔로 프로젝트 가져오기

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

Firebase 라이브러리 업데이트

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

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

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.