콘솔로 이동

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

iOS 및 Android용 Firebase를 기반으로 C++ 인터페이스를 제공하는 Firebase C++ SDK를 사용하여 C++ 게임을 업그레이드하세요.

플랫폼 네이티브 코드를 작성할 필요 없이 C++ 코드에서만 Firebase에 액세스하면 됩니다. 또한 Firebase SDK는 Firebase에서 사용하는 여러 언어별 관용구를 C++ 개발자에게 보다 친숙한 인터페이스로 변환합니다.

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

1단계: 환경 설정

  • Xcode 9.4.1 이상을 설치합니다.

  • CocoaPods 1.4.0 이상을 설치합니다.

  • Xcode에서 C++ 프로젝트를 엽니다.

    • 앱에서 iOS 8 이상을 타겟팅해야 합니다.
  • 앱을 실행할 기기 또는 에뮬레이터를 설정합니다.

    • 클라우드 메시징에는 다음이 필요합니다.
      • 실제 iOS 기기
      • 푸시 알림이 사용 설정된 APN 인증서
  • Google 계정을 사용하여 Firebase에 로그인합니다.

2단계: Firebase 프로젝트 만들기

C++ 프로젝트에 Firebase를 추가하려면 우선 C++ 프로젝트에 연결할 Firebase 프로젝트를 만들어야 합니다. Firebase 프로젝트에 대한 자세한 내용은 Firebase 프로젝트 이해를 참조하세요.

3단계: Firebase에 앱 등록

Firebase 프로젝트와 연결할 하나 이상의 앱을 등록할 수 있습니다.

여러 빌드 변형을 처리하는 방법을 비롯하여 앱을 Firebase 프로젝트에 추가할 때의 권장사항 및 고려사항을 자세히 알아보려면 Firebase 프로젝트 이해를 참조하세요.

  1. Firebase Console의 프로젝트 개요 페이지 중앙에 있는 iOS 아이콘을 클릭하여 설정 워크플로를 시작합니다.

    Firebase 프로젝트에 앱을 이미 추가한 경우 앱 추가를 클릭하여 플랫폼 옵션을 표시합니다.

  2. iOS 번들 ID 필드에 앱의 번들 ID를 입력합니다.

    • XCode에 열린 프로젝트에서 이 번들 ID를 확인합니다. 왼쪽의 프로젝트 탐색기에서 최상위 앱을 선택하고 General(일반) 탭에 액세스합니다. Bundle Identifier(번들 식별자) 값이 iOS 번들 ID(예: com.yourcompany.ios-app-name)입니다.
  3. (선택사항) 설정 워크플로의 안내에 따라 기타 앱 정보를 입력합니다.

    닉네임은 편의상 지정하는 내부용 식별자이며 Firebase Console에서 본인만 볼 수 있습니다.

  4. 앱 등록을 클릭합니다.

4단계: Firebase 구성 파일 추가

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

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

  2. IDE에서 C++ 프로젝트를 열고 구성 파일을 C++ 프로젝트의 루트로 드래그합니다.

  3. 메시지가 표시되면 모든 대상에 구성 파일을 추가하도록 선택합니다.

  4. Firebase Console에서 설정 작업을 마쳤습니다. 아래의 Firebase C++ SDK 추가로 진행하세요.

5단계: Firebase C++ SDK 추가

이 섹션의 단계는 지원되는 Firebase 제품을 Firebase C++ 프로젝트에 추가하는 방법의 예입니다. 이 예에서는 Firebase용 Google 애널리틱스를 추가하는 방법을 단계별로 설명합니다.

C++ 프로젝트에 Firebase용 Google 애널리틱스를 추가하는 것은 선택사항이지만 Firebase가 앱에서 제대로 작동하는지 여부를 비교적 쉽게 확인할 수 있는 방법입니다. 또한 애널리틱스는 프로덕션 앱의 성공 여부를 추적하는 데 도움이 될 뿐 아니라 개발 및 디버깅 중에도 매우 유용하게 사용할 수 있습니다.

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

    Firebase C++ SDK는 플랫폼별로 제공되지 않지만 플랫폼별 라이브러리를 포함하고 있습니다.

  2. 압축을 푼 SDK에서 Firebase 포드를 추가합니다.

    1. Podfile이 없는 경우 지금 만듭니다.

      cd your-app-directory
      pod init

    2. 사용할 각 Firebase 제품의 포드를 Podfile에 추가합니다. 애널리틱스의 경우 다음을 실행합니다.

      pod 'Firebase/Core', '5.12.0'

    3. 포드를 설치하고 Xcode에서 .xcworkspace 파일을 엽니다.

      pod install
      open your-app.xcworkspace

  3. 압축을 푼 SDK에서 Firebase 프레임워크를 추가합니다.

    일반적으로 이러한 프레임워크를 가장 쉽게 추가하는 방법은 Finder 창에서 Xcode의 Project Navigator(프로젝트 탐색기) 창으로 드래그하는 것입니다. 탐색기 창은 기본적으로 가장 왼쪽에 있으며 Xcode 왼쪽 상단의 파일 아이콘을 클릭하면 나타납니다.

    1. Firebase 제품을 사용하는 데 필수적인 핵심 Firebase 프레임워크(firebase.framework)를 추가합니다.

    2. 사용할 각 Firebase 제품의 프레임워크를 추가합니다. 애널리틱스의 경우 firebase_analytics.framework를 추가합니다.

  4. Firebase Console로 돌아가서 설정 워크플로에서 다음을 클릭합니다.

  5. 앱을 실행하여 Firebase를 성공적으로 통합했다는 알림을 Firebase에 보냅니다.

    기기 로그에 초기화가 완료되었다는 Firebase 알림이 표시됩니다. 네트워크 액세스가 가능한 에뮬레이터에서 앱을 실행한 경우 Firebase 콘솔에 앱이 연결되었다는 알림이 표시됩니다.

이제 준비가 끝났습니다. C++ 앱이 등록되었으며 Firebase 제품을 사용하도록 구성되었습니다.

사용 가능한 라이브러리

C++ Firebase 라이브러리에 대한 자세한 내용은 참조 문서GitHub의 오픈소스 SDK 릴리스를 참조하세요.

iOS에 제공되는 라이브러리

Android용 C++ 라이브러리는 이 설정 페이지의 Android 버전을 참조하세요.

각 Firebase 제품의 종속 항목은 서로 다릅니다. 원하는 Firebase 제품에서 명시하는 종속 항목을 Podfile 및 C++ 프로젝트에 모두 추가해야 합니다.

Firebase 제품 프레임워크 및 포드
Firebase 코어(필수)

firebase.framework
pod 'Firebase/Core', '5.18.0'
AdMob

firebase.framework
firebase_admob.framework
pod 'Firebase/Core', '5.18.0'
pod 'Firebase/AdMob', '5.18.0'
애널리틱스

firebase.framework
firebase_analytics.framework
pod 'Firebase/Core', '5.18.0'
인증

firebase.framework
firebase_auth.framework
pod 'Firebase/Core', '5.18.0'
pod 'Firebase/Auth', '5.18.0'
Cloud Functions

firebase.framework
firebase_functions.framework
pod 'Firebase/Core', '5.18.0'
pod 'Firebase/Functions', '5.18.0'
클라우드 메시징

firebase.framework
firebase_messaging.framework
pod 'Firebase/Core', '5.18.0'
pod 'Firebase/Messaging', '5.18.0'
Cloud Storage

firebase.framework
firebase_storage.framework
pod 'Firebase/Core', '5.18.0'
pod 'Firebase/Storage', '5.18.0'
동적 링크

firebase.framework
firebase_dynamic_links.framework
pod 'Firebase/Core', '5.18.0'
pod 'Firebase/DynamicLinks', '5.18.0'
실시간 데이터베이스

firebase.framework
firebase_database.framework
pod 'Firebase/Core', '5.18.0'
pod 'Firebase/Database', '5.18.0'
원격 구성

firebase.framework
firebase_remote_config.framework
pod 'Firebase/Core', '5.18.0'
pod 'Firebase/RemoteConfig', '5.18.0'

모바일 설정 관련 추가 정보

메소드 재구성

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

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

데스크톱 워크플로(베타) 설정

게임을 만들 때는 우선 데스크톱 플랫폼에서 게임을 테스트하고 개발 과정 후반에 휴대기기에 배포하고 테스트하는 것이 한결 간편한 경우가 많습니다. Google은 이러한 워크플로를 지원하기 위해 Windows, OS X, Linux 및 C++ 편집기 내에서 실행할 수 있는 Firebase C++ SDK의 하위 집합을 제공합니다.

  1. 데스크톱 워크플로를 사용하려면 다음을 완료해야 합니다.

  2. Firebase 구성 파일의 데스크톱 버전을 만듭니다.

    • Android google-services.json 파일을 추가한 경우 — 앱을 실행하면 Firebase가 이 모바일 파일을 찾은 후 데스크톱 Firebase 구성 파일(google-services-desktop.json)을 자동으로 생성합니다.

    • iOS GoogleService-Info.plist 파일을 추가한 경우 — 앱을 실행하기 전에 이 모바일 파일을 데스크톱 Firebase 구성 파일로 변환해야 합니다. 파일을 변환하려면 GoogleService-Info.plist 파일이 있는 디렉토리에서 다음 명령어를 실행합니다.

      generate_xml_from_google_services_json.py --plist -i GoogleService-Info.plist

    이 데스크톱 구성 파일에는 Firebase Console 설정 워크플로에서 입력한 C++ 프로젝트 ID가 들어 있습니다. 구성 파일에 대한 자세한 내용은 Firebase 프로젝트 이해를 참조하세요.

  3. C++ 프로젝트에 Firebase SDK를 추가합니다.

    아래 단계는 지원되는 Firebase 제품을 C++ 프로젝트에 추가하는 방법의 예입니다. 이 예에서는 Firebase용 Google 애널리틱스를 추가하는 방법을 단계별로 설명합니다.

    1. FIREBASE_CPP_SDK_DIR 환경 변수를 압축을 푼 Firebase C++ SDK의 위치로 설정합니다.

    2. 프로젝트의 CMakeLists.txt 파일에 다음 내용을 추가하고 사용하려는 Firebase 제품의 라이브러리를 포함합니다. 예를 들어 애널리틱스의 경우는 다음과 같습니다.

      # Add Firebase libraries to the target using the function from the SDK.
      add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL)
      
      # The core Firebase library (firebase_app) is required to use any Firebase product,
      # and it must always be listed last.
      set(firebase_libs firebase_analytics firebase_app)
      target_link_libraries(${target_name} "${firebase_libs}")
      
  4. C++ 앱을 실행합니다.

사용 가능한 라이브러리(데스크톱)

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

Firebase 제품 라이브러리 참조(CMake 사용 시)
Firebase 코어(필수) firebase_app
인증 firebase_auth
Cloud Functions firebase_functions
Cloud Storage firebase_storage
실시간 데이터베이스 firebase_database
원격 구성 firebase_remote_config

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

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

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

데스크톱 설정 관련 추가 정보

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
Cloud Functions advapi32, ws2_32, crypt32
Cloud Storage advapi32, ws2_32, crypt32
실시간 데이터베이스 advapi32, ws2_32, crypt32, iphlpapi, psapi, userenv
원격 구성 advapi32, ws2_32, crypt32

OS X 라이브러리

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

OS X 라이브러리는 Xcode 9.4.1로 테스트되었습니다.

OS X에서 C++ 데스크톱 앱을 빌드하는 경우 프로젝트에 다음을 연결하세요.

  • pthread 시스템 라이브러리
  • CoreFoundation OS X 시스템 프레임워크
  • Security OS X 시스템 프레임워크

자세한 내용은 컴파일러 문서를 참조하세요.

Linux 라이브러리

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

Linux 라이브러리는 Ubuntu에서 GCC 4.8.0, GCC 7.2.0, Clang 5.0으로 테스트되었습니다.

Linux에서 C++ 데스크톱 앱을 빌드하는 경우 프로젝트에 pthread 시스템 라이브러리를 연결하세요. 자세한 내용은 컴파일러 문서를 참조하세요. GCC 5 이상으로 빌드하는 경우 -D_GLIBCXX_USE_CXX11_ABI=0을 정의해야 합니다.