Adicionar o Firebase ao seu projeto em C++

Melhore seus jogos com os SDKs do Firebase para C++, que, além dos SDKs, oferecem uma interface em C++.

Acesse o Firebase com seu código C++, sem ter que escrever códigos nativos de plataformas. O SDK do Firebase também converte muitos idiomas específicos da linguagem usados pelo Firebase em uma interface mais familiar para os desenvolvedores de C++.

Veja mais informações sobre como turbinar seus jogos com o Firebase na nossa página do Firebase para jogos.

Já adicionou o Firebase ao seu projeto em C++? Verifique se você está usando a versão mais recente do SDK C++ do Firebase.


Pré-requisitos

  • Instalar o seguinte:

    • Xcode 13.3.1 ou versões mais recentes
    • CocoaPods 1.12.0 ou versões mais recentes
  • Verifique se o projeto atende às seguintes versões da plataforma ou mais recentes:

    • iOS 13
    • tvOS 13
  • Configure um dispositivo físico ou use o simulador para executar o app.

  • Faça login no Firebase usando sua conta do Google.

Etapa 2: criar um projeto do Firebase

Antes de adicionar o Firebase ao seu projeto em C++, é preciso criar um projeto do Firebase para ser conectado ao seu projeto em C++. Para mais informações, consulte Noções básicas sobre projetos do Firebase.

Etapa 3: registrar seu app com o Firebase

Para usar o Firebase no seu app da Apple, é necessário registrá-lo no projeto do Firebase. Registrar o app também quer dizer "adicionar" o app ao projeto.

  1. Acesse o console do Firebase,

  2. No centro da página de visão geral do projeto, clique no ícone iOS+ para iniciar o fluxo de trabalho de configuração.

    Se você já adicionou um app ao seu projeto do Firebase, clique em Adicionar app para exibir as opções da plataforma.

  3. Insira o ID do pacote do seu app no campo ID do pacote.

  4. (Opcional) Insira outras informações do aplicativo: apelido do aplicativo e ID da App Store.

  5. Clique em Registrar app.

Etapa 4: adicionar o arquivo de configuração do Firebase

  1. Clique em Fazer o download do GoogleService-Info.plist para solicitar o arquivo de configuração das plataformas da Apple do Firebase.

  2. Abra seu projeto em C++ em um ambiente de desenvolvimento integrado e arraste seu arquivo de configuração para a raiz do projeto em C++.

  3. Quando solicitado, selecione a opção de adicionar o arquivo de configuração a todos os destinos.

Você concluiu as tarefas de configuração no Console do Firebase. Continue para Adicionar SDKs do Firebase para C++.

Etapa 5: adicionar SDKs do Firebase para C++

As etapas nesta seção são um exemplo de como adicionar produtos do Firebase com suporte ao seu projeto em C++ do Firebase.

  1. Faça o download do SDK do Firebase C++ e descompacte o SDK em um local prático.

    O SDK C++ do Firebase não é específico da plataforma, mas contém bibliotecas específicas.

  2. Adicione pods do Firebase a partir do SDK descompactado.

    1. Crie um Podfile, se ainda não tiver um:

      cd your-app-directory
      pod init

    2. No seu Podfile, adicione os pods do Firebase que você quer usar no app.

      Analytics ativado

      # 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 não ativado

      # 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. Instale os pods e abra o arquivo .xcworkspace.xcworkspace no Xcode.

      pod install
      open your-app.xcworkspace

  3. Adicione as bibliotecas do Firebase a partir do SDK descompactado.

    O jeito mais fácil de adicionar esses frameworks geralmente é arrastá-los de uma janela Finder diretamente para o painel Project Navigator do Xcode (à esquerda, por padrão, ou clique no ícone no canto superior esquerdo do Xcode).

    1. Adicione a biblioteca firebase.framework do Firebase para C++, que é obrigatória para usar qualquer produto do Firebase.

    2. Adicione a biblioteca de cada produto do Firebase que você quiser usar. Por exemplo, para usar Firebase Authentication, adicione firebase_auth.framework.

  4. De volta ao fluxo de trabalho de configuração no Console do Firebase, clique em Avançar.

  5. Se você adicionou o Analytics, execute seu app para enviar ao Firebase a confirmação de que você integrou o Firebase com sucesso. Caso contrário, pule esta etapa de verificação.

    Os registros do dispositivo exibirão a verificação do Firebase de que a inicialização foi concluída. Se você executou seu app em um emulador com acesso à rede, o Console do Firebase notifica que a conexão do seu aplicativo está completa.

Tudo pronto! Seu app em C++ está registrado e configurado para usar os produtos do Firebase.

Bibliotecas disponíveis

Saiba mais sobre as bibliotecas do Firebase para C++ na documentação de referência e na nossa versão do SDK de código aberto no GitHub (em inglês).

Bibliotecas disponíveis para plataformas da Apple

Observe que as bibliotecas C++ para Android estão listadas na página de configuração da versão Android.

Cada produto do Firebase tem dependências diferentes. Certifique-se de adicionar todas as dependências listadas para o produto do Firebase desejado ao Podfile e ao seu projeto em C++.

Cada produto do Firebase oferece suporte apenas a algumas plataformas com SO da Apple (iOS, tvOS etc.). Verifique quais plataformas recebem suporte de cada biblioteca no link Saiba mais sobre C++ e o Firebase.

Produto do Firebase Bibliotecas e pods
AdMob (obrigatório) firebase.framework
firebase_admob.framework
(obrigatório) firebase_analytics.framework

pod 'FirebaseAdMob', '11.4.2'
(obrigatório) pod 'FirebaseAnalytics', '11.4.2'
Analytics (obrigatório) firebase.framework
firebase_analytics.framework

pod 'FirebaseAnalytics', '11.4.2'
App Check (obrigatório) firebase.framework
firebase_app_check.framework

pod 'FirebaseAppCheck', '11.4.2'
Authentication (obrigatório) firebase.framework
firebase_auth.framework

pod 'FirebaseAuth', '11.4.2'
Cloud Firestore (obrigatório) firebase.framework
firebase_firestore.framework
firebase_auth.framework

pod 'FirebaseFirestore', '11.4.2'
pod 'FirebaseAuth', '11.4.2'
Cloud Functions (obrigatório) firebase.framework
firebase_functions.framework

pod 'FirebaseFunctions', '11.4.2'
Cloud Messaging (obrigatório) firebase.framework
firebase_messaging.framework
(recomendado) firebase_analytics.framework

pod 'FirebaseMessaging', '11.4.2'
(recomendado) pod 'FirebaseAnalytics', '11.4.2'
Cloud Storage (obrigatório) firebase.framework
firebase_storage.framework

pod 'FirebaseStorage', '11.4.2'
Dynamic Links (obrigatório) firebase.framework
firebase_dynamic_links.framework
(recomendado) firebase_analytics.framework

pod 'FirebaseDynamicLinks', '11.4.2'
(recomendado) pod 'FirebaseAnalytics', '11.4.2'
Realtime Database (obrigatório) firebase.framework
firebase_database.framework

pod 'FirebaseDatabase', '11.4.2'
Remote Config (obrigatório) firebase.framework
firebase_remote_config.framework
(recomendado) firebase_analytics.framework

pod 'FirebaseRemoteConfig', '11.4.2'
(recomendado) pod 'FirebaseAnalytics', '11.4.2'

Informações adicionais para configuração em dispositivos móveis

Swizzling de métodos

No iOS, eventos de aplicativo, como abertura de URLs e recebimento de notificações, exigem que o representante do seu app implemente métodos específicos. Por exemplo, receber uma notificação pode exigir que o representante do app implemente application:didReceiveRemoteNotification:. Já que cada aplicativo para iOS tem seu próprio representante, o Firebase usa swizzling de métodos, que permite a substituição de um método por outro, para conectar os próprios gerenciadores dele além de outros que você pode ter implementado.

As bibliotecas Dynamic Links e Cloud Messaging precisam anexar gerenciadores ao representante do aplicativo usando o swizzling de método. Se você estiver usando qualquer um desses produtos do Firebase, no tempo de carregamento, o Firebase vai identificar a classe AppDelegate e fará o swizzling dos métodos necessários para dentro dela, direcionando uma callback à implementação do método.

Configurar um fluxo de trabalho para computadores (Beta)

Ao criar um jogo, geralmente é mais fácil fazer os testes nas plataformas para computadores primeiro e implantar e testar em dispositivos móveis em uma etapa posterior do desenvolvimento. Para oferecer suporte a esse fluxo de trabalho, fornecemos um subconjunto de SDKs do Firebase C++ que pode ser executado no Windows, macOS, Linux e no editor do C++:

  1. Para fluxos de trabalho em computadores, faça o seguinte:

    1. Configure seu projeto em C++ para CMake.
    2. Criar um projeto do Firebase
    3. Registre seu app (iOS ou Android) com o Firebase.
    4. Adicione um arquivo de configuração do Firebase para plataformas de dispositivos móveis.
  2. Crie uma versão para computador do arquivo de configuração do Firebase:

    • Se você adicionou o arquivo google-services.json do Android: ao executar o app, o Firebase localiza esse arquivo de dispositivo móvel e gera automaticamente um arquivo de configuração do Firebase para computador (google-services-desktop.json)

    • Se você adicionou o arquivo GoogleService-Info.plist: Antes de executar o app, você precisa converter esse arquivo de configuração do Firebase de dispositivo móvel para um de computador. Para converter o arquivo, execute o seguinte comando no mesmo diretório que seu arquivo GoogleService-Info.plist:

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

    Esse arquivo de configuração para computadores contém o ID do projeto em C++ que você inseriu no fluxo de trabalho de configuração do Console do Firebase. Para mais informações, consulte Noções básicas sobre projetos do Firebase.

  3. Adicione os SDKs do Firebase ao seu projeto em C++.

    As etapas abaixo servem como exemplo de como adicionar qualquer produto do Firebase compatível ao seu projeto em C++. Neste exemplo, mostraremos como adicionar Firebase Authentication e Firebase Realtime Database.

    1. Defina a variável de ambiente FIREBASE_CPP_SDK_DIR como o local do SDK Firebase C++ descompactado.

    2. Adicione o seguinte conteúdo ao arquivo CMakeLists.txt do seu projeto, incluindo as bibliotecas dos produtos do Firebase que você quer usar. Por exemplo, para usar Firebase Authentication, Firebase Realtime Database e:

      # 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. Execute seu app em C++.

Bibliotecas disponíveis (computador)

O SDK do Firebase C++ inclui suporte a fluxo de trabalho em computadores para um subconjunto de recursos. Isso permite que determinadas partes do Firebase sejam usadas em versões independentes para computadores no Windows, macOS e Linux.

Produto do Firebase Referências da biblioteca (usando o CMake)
App Check firebase_app_check
(obrigatório) firebase_app
Authentication firebase_auth
(obrigatório) firebase_app
Cloud Firestore firebase_firestore
firebase_auth
firebase_app
Cloud Functions firebase_functions
(obrigatório) firebase_app
Cloud Storage firebase_storage
(obrigatório) firebase_app
Realtime Database firebase_database
(obrigatório) firebase_app
Remote Config firebase_remote_config
(obrigatório) firebase_app

O Firebase fornece as bibliotecas para computador restantes como implementações stub (não funcionais) para sua comodidade durante a criação de projetos para Windows, macOS e Linux. Elas eliminam a necessidade de compilar códigos de modo condicional na segmentação para computadores.

Desktop Realtime Database

O SDK do Realtime Database para computadores usa REST para acessar seu banco de dados. Portanto, você precisa declarar os índices que usa com Query::OrderByChild() no computador para evitar falha nos listeners.

Informações adicionais para a configuração em computadores

Bibliotecas do Windows

Para o Windows, as versões da biblioteca são fornecidas com base no seguinte:

  • Plataforma da versão: modo de 32 bits (x86) x modo de 64 bits (x64)
  • Ambiente de execução do Windows: Multithreaded/MT x Multithreaded DLL/MD
  • Destino: lançamento x depuração

Observe que as seguintes bibliotecas foram testadas usando o Visual Studio 2015 e 2017.

Ao criar aplicativos de computador em C++ no Windows, vincule as seguintes bibliotecas do SDK do Windows ao seu projeto. Consulte a documentação do seu compilador para mais informações.

Biblioteca do Firebase para C++ Dependências da biblioteca do SDK do Windows
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

Bibliotecas do macOS

No macOS (Darwin), as versões da biblioteca são fornecidas para a plataforma de 64 bits (x86_64). Frameworks também são fornecidos para sua conveniência.

Observe que as bibliotecas do macOS foram testadas usando o Xcode 13.3.1.

Ao criar apps para computador em C++ no macOS, vincule o seguinte ao seu projeto:

  • Biblioteca do sistema pthread
  • Framework CoreFoundation do sistema macOS
  • Framework Foundation do sistema macOS
  • Framework Security do sistema macOS
  • Framework GSS do sistema macOS
  • Framework Kerberos do sistema macOS
  • Framework SystemConfiguration do sistema macOS

Consulte a documentação do seu compilador para mais informações.

Bibliotecas do Linux

No Linux, as versões da biblioteca são fornecidas para plataformas de 32 bits (i386) e 64 bits (x86_64).

Observe que as bibliotecas do Linux foram testadas usando o GCC 4.8.0, o GCC 7.2.0 e o Clang 5.0 no Ubuntu.

Ao criar aplicativos de computador em C++ no Linux, vincule a biblioteca de sistema pthread ao seu projeto. Consulte a documentação do seu compilador para mais informações. Se você estiver criando com o GCC 5 ou versões mais recentes, defina -D_GLIBCXX_USE_CXX11_ABI=0.

Próximas etapas