C++ 프로젝트에 Firebase 추가plat_iosplat_androidplat_cpp

Firebase C++ SDK 정보

Firebase C++ SDK는 iOS 및 Android용 Firebase를 바탕으로 C++ 인터페이스를 제공합니다.

자바 코드(Android)나 Objective-C 또는 Swift 코드(iOS)를 작성할 필요 없이 C++ 코드만으로 Firebase에 액세스할 수 있습니다. 또한 SDK는 Firebase에서 사용하는 여러 언어별 관용구를 C++ 개발자에게 보다 친숙한 인터페이스로 변환합니다. Firebase를 C++ 게임에 통합하는 것이 얼마나 쉬운지 보여주기 위해 Google에서 Zooshi라는 샘플 앱을 제작했으며 GitHub에서 다운로드할 수 있습니다.

SDK 다운로드

Zooshi(GitHub)


Firebase 게임 페이지에서 게임 업그레이드 방법을 자세히 알아보세요.

기능

Firebase C++ SDK는 iOSAndroid에서 다음과 같은 기능을 지원합니다.

기능 라이브러리
앱(기본 라이브러리) libfirebase_app.a
AdMob libfirebase_admob.a
애널리틱스 libfirebase_analytics.a
인증 libfirebase_auth.a
실시간 데이터베이스 libfirebase_database.a
동적 링크 libfirebase_dynamic_links.a
Cloud Functions libfirebase_functions.a
초대 libinvites.a
클라우드 메시징 libfirebase_messaging.a
원격 구성 libfirebase_remote_config.a
Cloud Storage libfirebase_storage.a

또한 Firebase C++ SDK에는 Windows, OS X, Linux에서 Firebase의 특정 부분을 사용할 수 있도록 일부 기능에 대한 데스크톱 워크플로 지원이 포함되어 있습니다. 이 기능은 베타 버전입니다.

iOS 설정

기본 요건

  • Xcode 9.4.1 이상
  • 클라우드 메시징:
    • 실제 iOS 기기
    • 푸시 알림이 사용 설정된 APN 인증서

Firebase 콘솔에서 앱 설정

앱에 Firebase를 추가할 차례입니다. 이를 위해 Firebase 프로젝트 및 앱의 Firebase 구성 파일이 필요합니다.

Firebase 프로젝트를 만드는 방법은 다음과 같습니다.

  1. Firebase 콘솔로 이동합니다.

  2. 프로젝트 추가를 클릭한 다음 프로젝트 이름을 선택하거나 입력합니다.

    • 앱에 연결된 기존 Google 프로젝트가 있으면 프로젝트 이름 드롭다운 메뉴에서 프로젝트를 선택합니다.
    • 기존 Google 프로젝트가 없으면 새 프로젝트 이름을 입력합니다.
  3. (선택사항) 프로젝트 ID를 수정합니다.

    Firebase는 Firebase 프로젝트에 자동으로 고유한 ID를 할당합니다. 이 식별자는 공개적으로 표시되는 Firebase 서비스에 나타납니다. 예를 들면 다음과 같습니다.

    • 기본 실시간 데이터베이스 URL — your-project-id.firebaseio.com
    • 기본 Cloud Storage 버킷 이름 — your-project-id.appspot.com
    • 기본 호스팅 하위 도메인 — your-project-id.firebaseapp.com
  4. Firebase 콘솔에서 나머지 설정 단계를 따른 다음 프로젝트 만들기(또는 기존 Google 프로젝트를 사용 중인 경우 Firebase 추가)를 클릭합니다.

Firebase에서 Firebase 프로젝트용 리소스를 자동으로 프로비저닝합니다. 이 프로세스는 일반적으로 몇 분 정도 걸립니다. 과정이 완료되면 Firebase 콘솔에서 Firebase 프로젝트의 개요 페이지로 이동하게 됩니다.

이제 프로젝트가 준비되었으므로 iOS 앱을 추가할 수 있습니다.

  1. iOS 앱에 Firebase 추가를 클릭하고 설정 단계를 따릅니다. 기존 Google 프로젝트를 가져오면 이 단계가 자동으로 이루어지므로 구성 파일만 다운로드하면 됩니다.

  2. 메시지가 표시되면 앱의 번들 ID를 입력합니다. 앱에서 사용하는 번들 ID를 입력해야 합니다. 이 설정은 Firebase 프로젝트에 앱을 추가할 때만 가능합니다.

  3. 앱에 Firebase iOS 구성 파일을 추가합니다.

    1. GoogleService-Info.plist 다운로드를 클릭하여 Firebase iOS 구성 파일(GoogleService-Info.plist)을 가져옵니다.

      언제든지 다시 Firebase iOS 구성 파일을 다운로드할 수 있습니다.

    2. 구성 파일을 Xcode 프로젝트의 루트로 이동합니다. 메시지가 표시되면 모든 대상에 구성 파일을 추가하도록 선택합니다.

  4. 초기화 코드를 추가한 후 앱을 실행하여 Firebase를 성공적으로 설치했다는 확인을 Firebase 콘솔에 보냅니다.

앱에 C++ SDK 추가

  1. Firebase C++ SDK를 다운로드합니다. 편리한 위치에 파일의 압축을 풉니다.

  2. SDK와 함께 다운로드된 프레임워크를 Xcode 프로젝트에 추가합니다. 기본 Firebase 프레임워크 및 사용할 서비스에 해당하는 프레임워크만 포함하면 됩니다. 아래의 종속 항목 섹션을 참조하세요. 일반적으로 가장 쉬운 방법은 Finder 창에서 Xcode의 프로젝트 탐색기 창으로 드래그하는 것입니다. 탐색기 창은 기본적으로 가장 왼쪽에 있으며 왼쪽 상단의 파일 아이콘을 클릭하면 나타납니다. Pods 프로젝트가 아닌 자신의 프로젝트에 추가해야 합니다.

  3. 앱을 빌드합니다. 이제 Firebase 코드가 정상적으로 컴파일 및 링크될 것입니다. 이제 완료되었습니다.

종속 항목

Firebase 기능에는 여러 종속 항목이 있습니다. 필요한 종속 항목을 프로젝트 및 Podfile에 모두 포함해야 합니다.

Firebase

firebase.framework
pod 'Firebase/Core', '5.15.0'
애널리틱스

firebase.framework
firebase_analytics.framework
pod 'Firebase/Core', '5.15.0'
AdMob

firebase.framework
firebase_admob.framework
pod 'Firebase/Core', '5.15.0'
pod 'Firebase/AdMob', '5.15.0'
클라우드 메시징

firebase.framework
firebase_messaging.framework
pod 'Firebase/Core', '5.15.0'
pod 'Firebase/Messaging', '5.15.0'
인증

firebase.framework
firebase_auth.framework
pod 'Firebase/Core', '5.15.0'
pod 'Firebase/Auth', '5.15.0'
실시간 데이터베이스

firebase.framework
firebase_database.framework
pod 'Firebase/Core', '5.15.0'
pod 'Firebase/Database', '5.15.0'
Cloud Functions

firebase.framework
firebase_functions.framework
pod 'Firebase/Core', '5.15.0'
pod 'Firebase/Functions', '5.15.0'
동적 링크

firebase.framework
firebase_dynamic_links.framework
pod 'Firebase/Core', '5.15.0'
pod 'Firebase/DynamicLinks', '5.15.0'
초대

firebase.framework
firebase_invites.framework
pod 'Firebase/Core', '5.15.0'
pod 'Firebase/Invites', '5.15.0'
원격 구성

firebase.framework
firebase_remote_config.framework
pod 'Firebase/Core', '5.15.0'
pod 'Firebase/RemoteConfig', '5.15.0'
저장소

firebase.framework
firebase_storage.framework
pod 'Firebase/Core', '5.15.0'
pod 'Firebase/Storage', '5.15.0'

메소드 재구성

iOS에서는 URL 열기, 알림 수신 등의 일부 애플리케이션 이벤트를 사용하려면 애플리케이션 대리자가 특정 메소드를 구현해야 합니다. 예를 들어 알림을 수신하려면 애플리케이션 대리자가 application:didReceiveRemoteNotification:을 구현해야 합니다. 각 iOS 애플리케이션에는 자체 앱 대리자가 있으므로, Firebase는 메소드를 서로 대체하는 메소드 재구성을 통해 사용자가 구현한 핸들러 이외에 자체 핸들러를 연결합니다.

Firebase 초대, 동적 링크, 클라우드 메시징 라이브러리는 메소드 재구성을 통해 애플리케이션 대리자에 핸들러를 연결해야 합니다. 이러한 라이브러리를 사용하면 로드 시에 Firebase가 사용자의 AppDelegate 클래스를 식별하고 필요한 메소드를 여기에 재구성하여 기존 메소드 구현에 콜백을 연결합니다.

Android 설정

기본 요건

Firebase 콘솔에서 앱 설정

앱에 Firebase를 추가할 차례입니다. 이를 위해 Firebase 프로젝트 및 앱의 Firebase 구성 파일이 필요합니다.

Firebase 프로젝트를 만드는 방법은 다음과 같습니다.

  1. Firebase 콘솔로 이동합니다.

  2. 프로젝트 추가를 클릭한 다음 프로젝트 이름을 선택하거나 입력합니다.

    • 앱에 연결된 기존 Google 프로젝트가 있으면 프로젝트 이름 드롭다운 메뉴에서 프로젝트를 선택합니다.
    • 기존 Google 프로젝트가 없으면 새 프로젝트 이름을 입력합니다.
  3. (선택사항) 프로젝트 ID를 수정합니다.

    Firebase는 Firebase 프로젝트에 자동으로 고유한 ID를 할당합니다. 이 식별자는 공개적으로 표시되는 Firebase 서비스에 나타납니다. 예를 들면 다음과 같습니다.

    • 기본 실시간 데이터베이스 URL — your-project-id.firebaseio.com
    • 기본 Cloud Storage 버킷 이름 — your-project-id.appspot.com
    • 기본 호스팅 하위 도메인 — your-project-id.firebaseapp.com
  4. Firebase 콘솔에서 나머지 설정 단계를 따른 다음 프로젝트 만들기(또는 기존 Google 프로젝트를 사용 중인 경우 Firebase 추가)를 클릭합니다.

Firebase에서 Firebase 프로젝트용 리소스를 자동으로 프로비저닝합니다. 이 프로세스는 일반적으로 몇 분 정도 걸립니다. 과정이 완료되면 Firebase 콘솔에서 Firebase 프로젝트의 개요 페이지로 이동하게 됩니다.

이제 프로젝트가 준비되었으므로 Android 앱을 추가할 수 있습니다.

  1. Android 앱에 Firebase 추가를 클릭하고 설정 단계를 따릅니다. 기존 Google 프로젝트를 가져오면 이 단계가 자동으로 이루어지므로 구성 파일만 다운로드하면 됩니다.

  2. 메시지가 표시되면 앱의 패키지 이름을 입력합니다. 앱에서 사용하는 패키지 이름을 입력해야 합니다. 이 설정은 Firebase 프로젝트에 앱을 추가할 때만 가능합니다.

  3. 앱에 Firebase Android 구성 파일을 추가합니다.

    1. google-services.json 다운로드를 클릭하여 Firebase Android 구성 파일(google-services.json)을 가져옵니다.

      언제든지 다시 Firebase Android 구성 파일을 다운로드할 수 있습니다.

    2. 구성 파일을 루트 수준 build.gradle 파일과 같은 디렉토리로 이동합니다.

  4. 초기화 코드를 추가한 후 앱을 실행하여 Firebase를 성공적으로 설치했다는 확인을 Firebase 콘솔에 보냅니다.

앱에 C++ SDK 추가

  1. Firebase C++ SDK를 다운로드합니다. 편리한 위치에 파일의 압축을 풉니다.

  2. gradle.properties 파일에 Firebase C++ SDK의 위치를 추가합니다.

    systemProp.firebase_cpp_sdk.dir=~/your_local_firebase_sdk_dir
    
  3. local.properties 파일에 Android NDK의 위치를 추가합니다.

    ndk.dir=~/your_local_ndk_dir
    
  4. app/build.gradle 파일에 종속 항목을 추가합니다. 자세한 내용은 종속 항목 섹션을 참조하세요.

  5. 이제 Android 스튜디오에서 build.gradle을 실행하여 Firebase를 지원하는 프로젝트를 빌드할 수 있습니다. 이제 완료되었습니다.

종속 항목

Firebase 기능에는 여러 종속 항목이 있습니다. 필요한 종속 항목을 app/build.gradle 파일의 종속 항목 섹션에 모두 포함해야 합니다.

애널리틱스

libfirebase_analytics.a
libfirebase_app.a
implementation 'com.google.firebase:firebase-core:16.0.7'
implementation 'com.google.firebase:firebase-analytics:16.3.0'
implementation 'com.google.android.gms:play-services-base:16.1.0'
AdMob

libfirebase_admob.a
libfirebase_app.a
implementation 'com.google.firebase:firebase-core:16.0.7'
implementation 'com.google.firebase:firebase-ads:17.1.3'
클라우드 메시징

libfirebase_messaging.a
libfirebase_app.a
implementation 'com.google.firebase:firebase-core:16.0.7'
implementation 'com.google.firebase:firebase-messaging:17.3.4'
implementation 'com.google.android.gms:play-services-base:16.1.0'
인증

libfirebase_auth.a
libfirebase_app.a
implementation 'com.google.firebase:firebase-core:16.0.7'
implementation 'com.google.firebase:firebase-auth:16.1.0'
implementation 'com.google.android.gms:play-services-base:16.1.0'
실시간 데이터베이스

libfirebase_database.a
libfirebase_app.a
implementation 'com.google.firebase:firebase-core:16.0.7'
implementation 'com.google.firebase:firebase-database:16.0.6'
implementation 'com.google.android.gms:play-services-base:16.1.0'
Cloud Functions

libfirebase_functions.a
libfirebase_app.a
implementation 'com.google.firebase:firebase-core:16.0.7'
implementation 'com.google.firebase:firebase-functions:16.1.3'
implementation 'com.google.android.gms:play-services-base:16.1.0'
동적 링크

libfirebase_dynamic_links.a
libfirebase_app.a
implementation 'com.google.firebase:firebase-core:16.0.7'
implementation 'com.google.firebase:firebase-invites:16.1.0'
implementation 'com.google.android.gms:play-services-base:16.1.0'
초대

libfirebase_invites.a
libfirebase_app.a
implementation 'com.google.firebase:firebase-core:16.0.7'
implementation 'com.google.firebase:firebase-invites:16.1.0'
implementation 'com.google.android.gms:play-services-base:16.1.0'
원격 구성

libfirebase_remote_config.a
libfirebase_app.a
implementation 'com.google.firebase:firebase-core:16.0.7'
implementation 'com.google.firebase:firebase-config:16.3.0'
implementation 'com.google.android.gms:play-services-base:16.1.0'
저장소

libfirebase_storage.a
libfirebase_app.a
implementation 'com.google.firebase:firebase-core:16.0.7'
implementation 'com.google.firebase:firebase-storage:16.0.5'
implementation 'com.google.android.gms:play-services-base:16.1.0'

추가 정보

맞춤 빌드 시스템

google-services.json을 애플리케이션에 포함할 .xml 리소스로 변환하는 generate_xml_from_google_services_json.py가 제공됩니다. 이 스크립트는 Android 애플리케이션을 빌드할 때 Google Play 서비스 Gradle 플러그인이 수행하는 것과 동일한 변환을 적용합니다. Gradle을 사용하지 않는 경우 (예: ndk-build, makefiles, Visual Studio 등) 이 스크립트를 사용하여 문자열 리소스를 자동으로 생성할 수 있습니다.

ProGuard

여러 Android 빌드 시스템은 정식 출시 빌드에 ProGuard를 사용하여 애플리케이션의 크기를 줄이고 자바 소스 코드를 보호합니다. ProGuard를 사용하는 경우 libs/android/*.pro의 파일 중 사용 중인 Firebase C++ 라이브러리에 해당하는 파일을 ProGuard 구성에 추가해야 합니다.

예를 들어 Gradle을 사용하는 경우 build.gradle에 다음 내용이 포함됩니다.

android {
  [...other stuff...]
  buildTypes {
    release {
      minifyEnabled true
      proguardFile getDefaultProguardFile('your-project-proguard-config.txt')
      proguardFile file(project.ext.firebase_cpp_sdk_dir + "/libs/android/app.pro")
      proguardFile file(project.ext.firebase_cpp_sdk_dir + "/libs/android/analytics.pro")
      [...and so on, for each Firebase C++ library you are using.]
    }
  }
}

Google Play 서비스 필요

여러 Firebase C++ 라이브러리는 사용자의 Android 기기에 Google Play 서비스가 있어야 작동합니다. Firebase C++ 라이브러리를 초기화할 때 kInitResultFailedMissingDependency가 반환되면 기기에서 Google Play 서비스를 사용할 수 없는 것입니다. 이러한 경우 업데이트, 재활성화, 권한 허용 등을 통해 상황을 해결해야 Firebase 라이브러리를 사용할 수 있습니다.

google_play_services/availability.h의 함수를 사용하여 Google Play 서비스를 사용할 수 없는 이유를 파악하고 해결을 시도할 수 있습니다.

Firebase C++ 라이브러리 Google Play 서비스 필요 여부
애널리틱스 불필요
AdMob 불필요(일반적인 경우)
클라우드 메시징 필요
인증 필요
동적 링크 필요
초대 필요
원격 구성 필요
실시간 데이터베이스 필요
Cloud Functions 필요
저장소 필요

AdMob 및 Google Play 서비스 참고사항

Android용 Google 모바일 광고 SDK의 버전 중 대부분은 Google Play 서비스가 없어도 정상적으로 작동합니다. 그러나 위에 나열된 표준 com.google.firebase:firebase-ads 종속 항목 대신 com.google.android.gms:play-services-ads-lite 종속 항목을 사용하는 특정한 경우에는 Google Play 서비스가 필요합니다.

AdMob 초기화는 Google Play 서비스를 사용할 수 없고 com.google.android.gms:play-services-ads-lite를 사용하는 경우에만 kInitResultFailedMissingDependency를 반환합니다.

데스크톱 워크플로 구현(베타 기능)

앱을 만들 때 데스크톱 플랫폼에서 먼저 앱을 테스트한 다음 개발 과정의 이후 단계에서 기기에 배포하고 테스트하는 것이 한결 간편한 경우가 많습니다. Google에서는 이러한 워크플로를 지원하기 위해 데스크톱 플랫폼을 지원하는 Firebase C++ SDK의 하위 집합을 제공합니다.

데스크톱 기능 라이브러리
코어 Firebase 라이브러리 libfirebase_app.a
인증 libfirebase_auth.a
실시간 데이터베이스 libfirebase_database.a
Cloud Functions libfirebase_functions.a
원격 구성 libfirebase_remote_config.a
Cloud Storage libfirebase_storage.a

편의를 위해 제공되는 나머지 데스크톱 라이브러리는 Windows, OS X, Linux용으로 빌드할 때는 작동하지 않는 스텁 구현이므로 데스크톱을 함께 타겟팅할 때 코드를 조건부로 컴파일할 필요가 없습니다.

데스크톱 프로젝트 설정

데스크톱 워크플로 지원을 사용하려면 Firebase 콘솔Android 또는 iOS 프로젝트가 설정되어 있어야 합니다.

Android 프로젝트가 있는 경우에는 데스크톱에서 google-services.json 파일을 사용하면 됩니다.

iOS 프로젝트가 있는데 Android 프로젝트를 생성하지 않으려면 포함된 Python 스크립트 generate_xml_from_google_services_json.py --plist를 사용하여 GoogleService-Info.plist 파일을 google-services-desktop.json 파일로 전환할 수 있습니다.

기본적으로 앱이 초기화되면 Firebase는 현재 디렉토리에서 google-services.json 또는 google-services-desktop.json 파일을 찾습니다. 이러한 파일 중 하나가 있는지 확인하거나 Firebase를 초기화하기 전에 AppOptions::LoadFromJsonConfig()를 호출하여 JSON 구성 데이터를 직접 지정하세요.

Windows 라이브러리

Windows의 경우 사용자 프로젝트를 32비트(x86) 또는 64비트(x64) 중 어떤 모드로 빌드하는지, 어떤 Windows 런타임 환경(Multithreaded /MT 또는 Multithreaded DLL /MD)을 사용하는지, 출시나 디버그 중 무엇을 목표로 하는지에 따라 다른 라이브러리 버전이 제공됩니다.

제공되는 라이브러리는 Visual Studio 2015 및 2017을 사용한 테스트를 거쳤습니다. Windows에서 C++ 데스크톱 앱을 빌드하는 경우 다음과 같은 Windows SDK 라이브러리를 연결해야 합니다(자세한 내용은 컴파일러 문서 참조).

Firebase C++ 라이브러리 Windows SDK 라이브러리 종속 항목
인증 advapi32, ws2_32, crypt32
실시간 데이터베이스 advapi32, ws2_32, crypt32, iphlpapi, psapi, userenv
Cloud Functions advapi32, ws2_32, crypt32
원격 구성 advapi32, ws2_32, crypt32
저장소 advapi32, ws2_32, crypt32

OS X 라이브러리

OS X(Darwin)의 경우 64비트(x86_64) 플랫폼을 위한 라이브러리 버전만 제공됩니다. 편의를 위해 프레임워크도 제공됩니다.

제공되는 라이브러리는 Xcode 8.3.3 및 9.2를 사용한 테스트를 거쳤습니다. OS X에서 C++ 데스크톱 앱을 빌드하는 경우 CoreFoundationSecurity OS X 시스템 프레임워크는 물론 pthread 시스템 라이브러리를 연결해야 합니다(자세한 내용은 컴파일러 문서 참조).

Linux 라이브러리

Linux의 경우 32비트(i386) 및 64비트(x86_64) 플랫폼을 위한 라이브러리 버전만 제공됩니다.

제공되는 라이브러리는 Ubuntu에서 GCC 4.8.0, GCC 7.2.0 및 Clang 5.0을 사용한 테스트를 거쳤습니다. Linux에서 C++ 데스크톱 앱을 빌드하는 경우 pthread 시스템 라이브러리를 연결해야 합니다(자세한 내용은 컴파일러 문서 참조). GCC 5 이상을 사용하여 빌드할 때 -D_GLIBCXX_USE_CXX11_ABI=0을 정의해야 합니다.

Firebase C++ 데스크톱 지원 참고사항

Firebase C++ SDK 데스크톱 지원은 베타 기능이며 공개적으로 전달되는 코드용이 아닌 앱 개발 중 워크플로에만 사용하기 위한 용도입니다.

실시간 데이터베이스 데스크톱

실시간 데이터베이스 데스크톱 SDK는 데이터베이스에 액세스할 때 REST를 사용합니다. 이와 같은 이유로 데스크톱에서 Query::OrderByChild()를 실행해 내가 사용하는 색인을 선언해야 하며, 그렇지 않으면 리스너가 실패합니다.

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

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