Добавьте Firebase в свой проект C++

Улучшите свои игры на C++ с помощью наших SDK Firebase C++, которые предоставляют интерфейс C++ поверх SDK Firebase.

Получите доступ к Firebase полностью из вашего кода C++ без необходимости писать собственный код платформы. Firebase SDK также переводит многие языковые идиомы, используемые Firebase, в интерфейс, более знакомый разработчикам C++.

Дополнительную информацию об улучшении ваших игр с помощью Firebase можно найти на нашей странице игр Firebase .

Вы уже добавили Firebase в свой проект на C++? Убедитесь, что вы используете последнюю версию Firebase C++ SDK .


Предварительные условия

  • Установите следующее:

    • Xcode 13.3.1 или новее
    • CocoaPods 1.12.0 или новее
  • Убедитесь, что ваш проект ориентирован на следующие версии платформы или более поздние:

    • iOS 13
    • ТВОС 13
  • Настройте физическое устройство или используйте симулятор для запуска приложения.

  • Войдите в Firebase, используя свою учетную запись Google.

Шаг 2. Создайте проект Firebase.

Прежде чем вы сможете добавить Firebase в свой проект C++, вам необходимо создать проект Firebase для подключения к вашему проекту C++. Посетите раздел «Понимание проектов Firebase», чтобы узнать больше о проектах Firebase.

Шаг 3. Зарегистрируйте свое приложение в Firebase.

Чтобы использовать Firebase в своем приложении Apple, вам необходимо зарегистрировать свое приложение в проекте Firebase. Регистрация вашего приложения часто называется «добавлением» вашего приложения в проект.

  1. Перейдите в консоль Firebase .

  2. В центре страницы обзора проекта щелкните значок iOS+ , чтобы запустить рабочий процесс установки.

    Если вы уже добавили приложение в свой проект Firebase, нажмите «Добавить приложение», чтобы отобразить параметры платформы.

  3. Введите идентификатор пакета вашего приложения в поле идентификатора пакета .

  4. (Необязательно) Введите другую информацию о приложении: псевдоним приложения и идентификатор App Store .

  5. Нажмите Зарегистрировать приложение .

Шаг 4. Добавьте файл конфигурации Firebase.

  1. Нажмите «Загрузить GoogleService-Info.plist», чтобы получить файл конфигурации Firebase для платформ Apple.

  2. Откройте проект C++ в IDE, затем перетащите файл конфигурации в корень проекта C++.

  3. При появлении запроса выберите добавление файла конфигурации ко всем целевым объектам.

Вы закончили настройку задач в консоли Firebase . Продолжайте добавлять SDK Firebase C++ ниже.

Шаг 5. Добавьте SDK Firebase C++.

Действия, описанные в этом разделе, представляют собой пример добавления поддерживаемых продуктов Firebase в ваш проект Firebase C++.

  1. Загрузите Firebase C++ SDK , затем разархивируйте SDK в удобное место.

    Firebase C++ SDK не зависит от платформы, но содержит библиотеки для конкретной платформы.

  2. Добавьте модули Firebase из разархивированного SDK.

    1. Создайте подфайл, если у вас его еще нет:

      cd your-app-directory
      pod init

    2. В свой подфайл добавьте модули Firebase, которые вы хотите использовать в своем приложении.

      Analytics включена

      # Add the Firebase pod for Google Analytics
      pod 'FirebaseAnalytics'
      # Add the pods for any other Firebase products you want to use in your app # For example, to use Firebase Authentication and Firebase Realtime Database pod 'FirebaseAuth' pod 'FirebaseDatabase'

      Analytics не включена

      # Add the pods for the Firebase products you want to use in your app
      # For example, to use Firebase Authentication and Firebase Realtime Database
      pod 'FirebaseAuth'
      pod 'FirebaseDatabase'
    3. Установите модули, затем откройте файл .xcworkspace в Xcode.

      pod install
      open your-app.xcworkspace

  3. Добавьте платформы Firebase из разархивированного SDK.

    Самый простой способ добавить эти платформы — это обычно перетащить их из окна Finder непосредственно в панель «Навигатор проекта » Xcode (крайняя левая панель по умолчанию; или щелкнуть значок файла в верхнем левом углу Xcode).

    1. Добавьте платформу Firebase C++ firebase.framework , которая необходима для использования любого продукта Firebase.

    2. Добавьте платформу для каждого продукта Firebase, который вы хотите использовать. Например, чтобы использовать Firebase Authentication , добавьте firebase_auth.framework .

  4. Вернувшись в консоль Firebase , в рабочем процессе установки нажмите «Далее» .

  5. Если вы добавили Analytics , запустите приложение, чтобы отправить в Firebase подтверждение того, что вы успешно интегрировали Firebase. В противном случае вы можете пропустить этот этап проверки.

    В журналах вашего устройства будет отображаться подтверждение Firebase о завершении инициализации. Если вы запустили свое приложение на эмуляторе, имеющем доступ к сети, консоль Firebase уведомит вас о том, что подключение к приложению завершено.

Все готово! Ваше приложение C++ зарегистрировано и настроено для использования продуктов Firebase.

Доступные библиотеки

Узнайте больше о библиотеках C++ Firebase в справочной документации и в нашем выпуске SDK с открытым исходным кодом на GitHub .

Доступные библиотеки для платформ Apple

Обратите внимание, что библиотеки C++ для Android перечислены в версии Android на этой странице настройки .

Каждый продукт Firebase имеет разные зависимости. Обязательно добавьте все перечисленные зависимости для желаемого продукта Firebase в свой проект Podfile и C++.

Каждый продукт Firebase может поддерживать только некоторые платформы Apple OS (iOS, tvOS и т. д.). Узнайте, какие платформы поддерживаются каждой библиотекой, в разделе Узнайте больше о C++ и Firebase .

Продукт Firebase Фреймворки и модули
AdMob (обязательно) firebase.framework
firebase_admob.framework
(обязательно) firebase_analytics.framework

pod 'FirebaseAdMob', '11.4.2'
(обязательно) pod 'FirebaseAnalytics', '11.4.2'
Analytics (обязательно) firebase.framework
firebase_analytics.framework

pod 'FirebaseAnalytics', '11.4.2'
App Check (обязательно) firebase.framework
firebase_app_check.framework

pod 'FirebaseAppCheck', '11.4.2'
Authentication (обязательно) firebase.framework
firebase_auth.framework

pod 'FirebaseAuth', '11.4.2'
Cloud Firestore (обязательно) firebase.framework
firebase_firestore.framework
firebase_auth.framework

pod 'FirebaseFirestore', '11.4.2'
pod 'FirebaseAuth', '11.4.2'
Cloud Functions (обязательно) firebase.framework
firebase_functions.framework

pod 'FirebaseFunctions', '11.4.2'
Cloud Messaging (обязательно) firebase.framework
firebase_messaging.framework
(рекомендуется) firebase_analytics.framework

pod 'FirebaseMessaging', '11.4.2'
(рекомендуется) pod 'FirebaseAnalytics', '11.4.2'
Cloud Storage (обязательно) firebase.framework
firebase_storage.framework

pod 'FirebaseStorage', '11.4.2'
Dynamic Links (обязательно) firebase.framework
firebase_dynamic_links.framework
(рекомендуется) firebase_analytics.framework

pod 'FirebaseDynamicLinks', '11.4.2'
(рекомендуется) pod 'FirebaseAnalytics', '11.4.2'
Realtime Database (обязательно) firebase.framework
firebase_database.framework

pod 'FirebaseDatabase', '11.4.2'
Remote Config (обязательно) firebase.framework
firebase_remote_config.framework
(рекомендуется) firebase_analytics.framework

pod 'FirebaseRemoteConfig', '11.4.2'
(рекомендуется) pod 'FirebaseAnalytics', '11.4.2'

Дополнительная информация по настройке мобильного устройства

Метод Swizzling

В iOS некоторые события приложения (например, открытие URL-адресов и получение уведомлений) требуют, чтобы делегат вашего приложения реализовал определенные методы. Например, для получения уведомления может потребоваться, чтобы делегат вашего приложения реализовал application:didReceiveRemoteNotification: . Поскольку каждое приложение iOS имеет свой собственный делегат приложения, Firebase использует метод swizzling , который позволяет заменять один метод другим, присоединяя свои собственные обработчики в дополнение к тем, которые вы могли реализовать.

Библиотекам Dynamic Links и Cloud Messaging необходимо прикрепить обработчики к делегату приложения с помощью метода swizzling. Если вы используете какой-либо из этих продуктов Firebase, во время загрузки Firebase определит ваш класс AppDelegate и подключит к нему необходимые методы, связывая обратный вызов с существующей реализацией метода.

Настройка рабочего процесса на рабочем столе ( бета )

Когда вы создаете игру, зачастую гораздо проще сначала протестировать ее на настольных платформах, а затем развернуть и протестировать на мобильных устройствах на более позднем этапе разработки. Для поддержки этого рабочего процесса мы предоставляем подмножество Firebase C++ SDK , которое можно запускать в Windows, macOS, Linux и в редакторе C++.

  1. Для рабочих процессов на рабочем столе вам необходимо выполнить следующее:

    1. Настройте свой проект C++ для CMake.
    2. Создать проект Firebase
    3. Зарегистрируйте свое приложение (iOS или Android) в Firebase
    4. Добавьте файл конфигурации Firebase для мобильной платформы.
  2. Создайте настольную версию файла конфигурации Firebase:

    • Если вы добавили файл google-services.json для Android — при запуске приложения 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

    Этот файл конфигурации рабочего стола содержит идентификатор проекта C++, который вы ввели в рабочем процессе настройки консоли Firebase . Посетите раздел «Понимание проектов Firebase», чтобы узнать больше о файлах конфигурации.

  3. Добавьте Firebase SDK в свой проект C++.

    Приведенные ниже шаги служат примером того, как добавить любой поддерживаемый продукт Firebase в ваш проект C++. В этом примере мы рассмотрим добавление Firebase Authentication и Firebase Realtime Database .

    1. Задайте для переменной среды FIREBASE_CPP_SDK_DIR расположение разархивированного Firebase C++ SDK.

    2. В файл CMakeLists.txt вашего проекта добавьте следующий контент, включая библиотеки для продуктов Firebase, которые вы хотите использовать. Например, чтобы использовать Firebase Authentication и Firebase Realtime Database :

      # Add Firebase libraries to the target using the function from the SDK.
      add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL)
      
      # The Firebase C++ library `firebase_app` is required,
      # and it must always be listed last.
      
      # Add the Firebase SDKs for the products you want to use in your app
      # For example, to use Firebase Authentication and Firebase Realtime Database
      set(firebase_libs firebase_auth firebase_database firebase_app)
      target_link_libraries(${target_name} "${firebase_libs}")
  4. Запустите приложение C++.

Доступные библиотеки (рабочий стол)

Firebase C++ SDK включает поддержку рабочего процесса рабочего стола для подмножества функций, что позволяет использовать определенные части Firebase в автономных сборках рабочего стола на Windows, macOS и Linux.

Продукт Firebase Ссылки на библиотеки (с использованием CMake)
App Check firebase_app_check
(обязательно) firebase_app
Authentication firebase_auth
(обязательно) firebase_app
Cloud Firestore firebase_firestore
firebase_auth
firebase_app
Cloud Functions firebase_functions
(обязательно) firebase_app
Cloud Storage firebase_storage
(обязательно) firebase_app
Realtime Database firebase_database
(обязательно) firebase_app
Remote Config firebase_remote_config
(обязательно) firebase_app

Firebase предоставляет остальные библиотеки рабочего стола в виде заглушек (нефункциональных) реализаций для удобства при сборке для Windows, macOS и Linux. Таким образом, вам не нужно условно компилировать код для настольного компьютера.

Рабочий стол Realtime Database

SDK Realtime Database для настольных компьютеров использует REST для доступа к вашей базе данных, поэтому вы должны объявить индексы , которые вы используете с Query::OrderByChild() на настольном компьютере, иначе ваши прослушиватели не сработают.

Дополнительная информация по настройке рабочего стола

Библиотеки Windows

Для Windows версии библиотеки предоставляются на основе следующего:

  • Платформа сборки: 32-битный (x86) и 64-битный (x64) режимы.
  • Среда выполнения Windows: многопоточный/MT или многопоточный DLL/MD
  • Цель: выпуск против отладки

Обратите внимание, что следующие библиотеки были протестированы с использованием Visual Studio 2015 и 2017.

При создании классических приложений C++ в Windows свяжите со своим проектом следующие библиотеки Windows SDK. Для получения дополнительной информации обратитесь к документации вашего компилятора.

Библиотека Firebase C++ Зависимости библиотеки Windows SDK
App Check advapi32, ws2_32, crypt32
Authentication advapi32, ws2_32, crypt32
Cloud Firestore advapi32, ws2_32, crypt32, rpcrt4, ole32, shell32
Cloud Functions advapi32, ws2_32, crypt32, rpcrt4, ole32
Cloud Storage advapi32, ws2_32, crypt32
Realtime Database advapi32, ws2_32, crypt32, iphlpapi, psapi, userenv
Remote Config advapi32, ws2_32, crypt32, rpcrt4, ole32

библиотеки macOS

Для macOS (Darwin) предусмотрены версии библиотеки для 64-битной (x86_64) платформы. Для вашего удобства также предусмотрены рамки.

Обратите внимание, что библиотеки macOS были протестированы с использованием Xcode 13.3.1.

При создании настольных приложений C++ в macOS свяжите со своим проектом следующее:

  • системная библиотека pthread
  • Системная платформа CoreFoundation macOS
  • Системная платформа Foundation macOS
  • Платформа системы Security macOS
  • Системная платформа GSS macOS
  • Системная платформа Kerberos macOS
  • SystemConfiguration Системная платформа macOS

Для получения дополнительной информации обратитесь к документации вашего компилятора.

Библиотеки Linux

Для Linux предусмотрены версии библиотеки для 32-битной (i386) и 64-битной (x86_64) платформ.

Обратите внимание, что библиотеки Linux были протестированы с использованием GCC 4.8.0, GCC 7.2.0 и Clang 5.0 в Ubuntu.

При создании настольных приложений C++ в Linux свяжите системную библиотеку pthread со своим проектом. Для получения дополнительной информации обратитесь к документации вашего компилятора. Если вы создаете GCC 5 или более позднюю версию, определите -D_GLIBCXX_USE_CXX11_ABI=0 .

Следующие шаги