Como adicionar o Firebase a seu projeto C++plat_iosplat_androidplat_cpp

Sobre o SDK para C++ do Firebase

O SDK para C++ do Firebase oferece uma interface nessa linguagem usando o Firebase para iOS e Android.

Acesse o Firebase inteiramente do seu código C ++, sem ter que escrever códigos Java (no Android) ou o código Objective-C/Swift (no iOS). O SDK também converte muitos idiomas específicos da linguagem usados pelo Firebase em uma interface mais familiar para os desenvolvedores de C++. Para mostrar como é fácil integrar o Firebase ao seu jogo em C++, fizemos um app de amostra, o Zooshi. Faça o download dele no GitHub.

Fazer o download do SDK

Zooshi (GitHub)


Saiba mais sobre como você pode melhorar seus jogos na nossa página de jogos do Firebase.

Recursos

Os seguintes recursos são compatíveis com o SDK para C++ do Firebase no iOS e Android:

Recurso Biblioteca
App (biblioteca base) libfirebase_app.a
AdMob libfirebase_admob.a
Analytics libfirebase_analytics.a
Authentication libfirebase_auth.a
Realtime Database libfirebase_database.a
Dynamic Links libfirebase_dynamic_links.a
Cloud Functions libfirebase_functions.a
Invites libinvites.a
Cloud Messaging libfirebase_messaging.a
Configuração remota libfirebase_remote_config.a
Cloud Storage libfirebase_storage.a

O SDK para C++ do Firebase também inclui suporte a fluxos de trabalho em computadores para um subconjunto de recursos. Isso permite que determinadas partes do Firebase sejam usadas no Windows, OS X e Linux. (Beta)

Configuração para iOS

Pré-requisitos

  • Xcode 9.4.1 ou posterior
  • Para Cloud Messaging:
    • Um dispositivo físico com iOS
    • Certificado de APNs com notificações push ativadas

Configurar o app no Console do Firebase

Adicione o Firebase ao app. Para isso, serão necessários um projeto e um arquivo de configuração do Firebase para o app.

Para criar um projeto do Firebase:

  1. Acesse o Console do Firebase.

  2. Clique em Adicionar projeto e selecione ou insira o Nome do projeto.

    • Se você tiver um projeto do Google associado ao seu aplicativo, selecione o projeto no menu suspenso Nome do projeto.
    • Se você não tiver um projeto do Google, insira o novo Nome do projeto.
  3. (Opcional) Edite o código do projeto.

    O Firebase atribui automaticamente um código exclusivo ao seu projeto. Ele é exibido em serviços do Firebase visíveis publicamente, por exemplo:

    • URL padrão do Realtime Database: your-project-id.firebaseio.com
    • Nome padrão do intervalo do Cloud Storage: your-project-id.appspot.com
    • Subdomínio padrão do Hosting: your-project-id.firebaseapp.com
  4. Siga as demais etapas de configuração no Console do Firebase e clique em Criar projeto, ou Adicionar Firebase, se estiver usando um projeto atual do Google.

O Firebase provisiona recursos automaticamente para seu projeto. O processo normalmente leva alguns minutos. Quando o processo for concluído, você será direcionado para a página de visão geral do seu projeto no Console do Firebase.

Agora que você tem um projeto, adicione seu aplicativo para iOS a ele:

  1. Clique em Adicionar o Firebase ao app para iOS e siga as etapas de configuração. Se você estiver importando um projeto do Google, isso poderá ocorrer automaticamente. Basta fazer o download do arquivo de configuração.

  2. Quando solicitado, digite o código do pacote do app. É importante inserir essa informação ao adicionar um app ao projeto do Firebase.

  3. Adicione o arquivo de configuração do Firebase para iOS ao app:

    1. Clique em Fazer o download do GoogleService-Info.plist para solicitar o arquivo de configuração do Firebase para iOS (GoogleService-Info.plist).

      É possível fazer o download do arquivo de configuração do Firebase para iOS novamente a qualquer momento.

    2. Mova o arquivo de configuração para a raiz do seu projeto Xcode. Quando solicitado, selecione adicionar o arquivo de configuração a todos os destinos.

  4. Depois de adicionar o código de inicialização, execute seu aplicativo para enviar ao Console do Firebase a confirmação de que você instalou o Firebase com sucesso.

Adicionar o SDK para C++ do Firebase ao app

  1. Faça o download do SDK para C++ do Firebase. Extraia os arquivos onde for mais prático.

  2. Adicione as bibliotecas das quais fez download no SDK ao projeto do Xcode. Observe que só é necessário incluir a biblioteca básica do Firebase e as correspondentes aos serviços que você quer usar (consulte a seção de dependências a seguir). Geralmente, a maneira mais fácil de fazer isso é arrastá-las de uma janela do Finder diretamente para o painel de navegação do projeto no Xcode, localizado na extremidade esquerda, por padrão (clique no ícone de arquivo no canto superior esquerdo). Adicione as bibliotecas apenas a seu projeto, e não ao projeto do Pods.

  3. Crie seu app. Agora, o código do Firebase deve ser compilado e vinculado corretamente. E pronto!

Dependências

Os recursos do Firebase têm dependências diferentes. Não se esqueça de incluir todas as dependências necessárias no seu projeto e no Podfile:

Firebase

firebase.framework
pod 'Firebase/Core', '5.15.0'
Analytics

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'
Cloud Messaging

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

firebase.framework
firebase_auth.framework
pod 'Firebase/Core', '5.15.0'
pod 'Firebase/Auth', '5.15.0'
Realtime Database

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'
Dynamic Links

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

firebase.framework
firebase_invites.framework
pod 'Firebase/Core', '5.15.0'
pod 'Firebase/Invites', '5.15.0'
Configuração remota

firebase.framework
firebase_remote_config.framework
pod 'Firebase/Core', '5.15.0'
pod 'Firebase/RemoteConfig', '5.15.0'
Storage

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

Swizzling de métodos

No iOS, eventos de app, 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 app iOS tem seu próprio representante, o Firebase usa o 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 do Firebase Invites, Dynamic Links e Cloud Messaging usam o swizzling de métodos para conectar gerenciadores ao representante do app. Se você estiver usando essas bibliotecas no momento do carregamento, o Firebase identificará a classe AppDelegate e fará o swizzling dos métodos necessários para dentro dela, conectando um retorno de chamada à implementação do método existente.

Configuração para Android

Pré-requisitos

Configurar o app no Console do Firebase

Adicione o Firebase ao app. Para isso, serão necessários um projeto e um arquivo de configuração do Firebase para o app.

Para criar um projeto do Firebase:

  1. Acesse o Console do Firebase.

  2. Clique em Adicionar projeto e selecione ou insira o Nome do projeto.

    • Se você tiver um projeto do Google associado ao seu aplicativo, selecione o projeto no menu suspenso Nome do projeto.
    • Se você não tiver um projeto do Google, insira o novo Nome do projeto.
  3. (Opcional) Edite o código do projeto.

    O Firebase atribui automaticamente um código exclusivo ao seu projeto. Ele é exibido em serviços do Firebase visíveis publicamente, por exemplo:

    • URL padrão do Realtime Database: your-project-id.firebaseio.com
    • Nome padrão do intervalo do Cloud Storage: your-project-id.appspot.com
    • Subdomínio padrão do Hosting: your-project-id.firebaseapp.com
  4. Siga as demais etapas de configuração no Console do Firebase e clique em Criar projeto, ou Adicionar Firebase, se estiver usando um projeto atual do Google.

O Firebase provisiona recursos automaticamente para seu projeto. O processo normalmente leva alguns minutos. Quando o processo for concluído, você será direcionado para a página de visão geral do seu projeto no Console do Firebase.

Agora que você tem um projeto, adicione seu app para Android a ele:

  1. Clique em Adicionar o Firebase ao app para Android e siga as etapas de configuração. Se você estiver importando um projeto do Google, isso poderá ocorrer automaticamente. Basta fazer o download do arquivo de configuração.

  2. Quando solicitado, digite o nome do pacote do app. É importante inserir o nome do pacote usado por seu app. No entanto, essa configuração será feita apenas quando você adicionar um app ao projeto do Firebase.

  3. Para adicionar o arquivo de configuração do Firebase para Android no app, siga estas etapas:

    1. Clique em Fazer o download do google-services.json para receber o arquivo de configuração do Firebase para Android (google-services.json).

      É possível fazer o download do arquivo de configuração do Firebase para Android novamente a qualquer momento.

    2. Mova o arquivo de configuração para o mesmo diretório que o arquivo build.gradle no nível raiz.

  4. Depois de adicionar o código de inicialização, execute seu aplicativo para enviar ao Firebase console a confirmação de que você instalou o Firebase com sucesso.

Adicionar o SDK para C++ do Firebase ao app

  1. Faça o download do SDK para C++ do Firebase. Extraia os arquivos onde for mais prático.

  2. Adicione o local do SDK para C++ do Firebase ao arquivo gradle.properties:

    systemProp.firebase_cpp_sdk.dir=~/your_local_firebase_sdk_dir
    
  3. Adicione o local do Android NDK ao arquivo local.properties:

    ndk.dir=~/your_local_ndk_dir
    
  4. Adicione todas as dependências ao arquivo app/build.gradle. Consulte a seção de dependências para ver mais detalhes.

  5. Agora, você deve conseguir criar seu projeto com a ajuda do Firebase, executando build.gradle no Android Studio. E pronto!

Dependências

Os recursos do Firebase têm dependências diferentes. Inclua todas as dependências necessárias na seção correspondente do arquivo app/build.gradle:

Analytics

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'
Cloud Messaging

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'
Authentication

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'
Realtime Database

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'
Dynamic Links

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'
Invites

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'
Configuração remota

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'
Storage

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'

Informações adicionais

Sistemas de versões personalizadas

No momento, fornecemos generate_xml_from_google_services_json.py para converter google-services.json em recursos .xml para inclusão em um app. Esse script aplica a mesma transformação que o plug-in Gradle do Google Play Services realiza quando criamos apps para Android. Os usuários que não usam o Gradle (por exemplo, ndk-build, makefiles, Visual Studio etc.) podem usar esse script para automatizar a geração de recursos de string.

ProGuard

Muitos sistemas Android usam o ProGuard para as versões em modo de lançamento, de modo a reduzir o tamanho dos apps e proteger o código-fonte Java. Se você usa o ProGuard, adicione os arquivos no libs/android/*.pro correspondente às bibliotecas de C++ do Firebase que são usadas na configuração do ProGuard.

Por exemplo, com o Gradle, o build.gradle contém:

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.]
    }
  }
}

Exigência do Google Play Services

Muitas bibliotecas de C++ do Firebase exigem o Google Play Services no dispositivo Android do usuário. Quando uma biblioteca de C++ do Firebase retorna kInitResultFailedMissingDependency na inicialização, significa que o Google Play Services não está disponível no dispositivo, ou seja, ele precisa ser atualizado ou reativado, as permissões precisam ser corrigidas etc. Esta biblioteca não poderá ser usada até que a situação seja corrigida.

Use as funções em google_play_services/availability.h para descobrir por que o Google Play Services está indisponível e solucione o problema.

Biblioteca de C++ do Firebase O Google Play Services é obrigatório?
Analytics Não é obrigatório
AdMob Não é obrigatório (geralmente)
Cloud Messaging Obrigatório
Authentication Obrigatório
Dynamic Links Obrigatório
Invites Obrigatório
Configuração remota Obrigatório
Realtime Database Obrigatório
Cloud Functions Obrigatório
Storage Obrigatório

Observação sobre a AdMob e o Google Play Services

A maioria das versões do SDK dos anúncios para dispositivos móveis do Google para Android funciona adequadamente sem o Google Play Services. No entanto, caso esteja usando a dependência com.google.android.gms:play-services-ads-lite em vez da com.google.firebase:firebase-ads padrão mencionada acima, o Google Play Services será obrigatório.

A inicialização da AdMob retornará kInitResultFailedMissingDependency apenas quando o Google Play Services estiver indisponível e você estiver usando com.google.android.gms:play-services-ads-lite.

Implementações de fluxo de trabalho para computadores (recurso Beta)

Ao criar um app, geralmente é mais fácil fazer os testes nas plataformas de computador primeiro e depois implantar e testar durante o desenvolvimento. Para ajudar com esse fluxo de trabalho, fornecemos um subconjunto do SDK para C++ do Firebase para plataformas de computador:

Recurso para computador Biblioteca
biblioteca principal do Firebase libfirebase_app.a
Authentication libfirebase_auth.a
Realtime Database libfirebase_database.a
Cloud Functions libfirebase_functions.a
Configuração remota libfirebase_remote_config.a
Cloud Storage libfirebase_storage.a

As bibliotecas restantes para computadores são implementações stub (não funcionais) oferecidas para sua comodidade durante a criação de projetos para Windows, OS X e Linux. Elas eliminam a necessidade de compilar códigos de modo condicional na segmentação para computadores.

Configuração de projetos para computadores

Para usar o suporte ao fluxo de trabalho em computadores, você precisa ter um projeto do Android ou do iOS configurado no Console do Firebase.

Se você tiver um projeto do Android, basta usar o arquivo google-services.json no computador.

Se você tem um projeto do iOS e não quer criar um projeto do Android, use o script do Python generate_xml_from_google_services_json.py --plist incluso para converter seu arquivo GoogleService-Info.plist em um arquivo google-services-desktop.json.

Por padrão, quando o app é inicializado, o Firebase procura um arquivo chamado google-services.json ou google-services-desktop.json no diretório atual. Garanta que um desses arquivos esteja presente ou chame AppOptions::LoadFromJsonConfig() antes de inicializar o Firebase para especificar seus dados de configuração JSON diretamente.

Bibliotecas do Windows

No Windows, as versões da biblioteca são fornecidas de acordo com o modo de criação de projetos usado, que pode ser de 32 bits (x86) ou 64 bits (x64), com qual ambiente de execução do Windows você está usando (Multithreaded/MT ou Multithreaded DLL/MD) e com qual segmentação, Release ou Debug.

As bibliotecas fornecidas foram testadas com o Visual Studio 2015 e 2017. Ao criar apps para computador em C++ no Windows, será preciso vincular as seguintes bibliotecas do SDK do Windows. Consulte a documentação do compilador para ver mais informações:

Biblioteca de C++ do Firebase Dependências da biblioteca do SDK do Windows
Authentication advapi32, ws2_32, crypt32
Realtime Database advapi32, ws2_32, crypt32, iphlpapi, psapi, userenv
Cloud Functions advapi32, ws2_32, crypt32
Configuração remota advapi32, ws2_32, crypt32
Storage advapi32, ws2_32, crypt32

Bibliotecas do OS X

No OS X (Darwin), as versões da biblioteca são fornecidas apenas para a plataforma de 64 bits (x86_64). As bibliotecas também são fornecidas para sua conveniência.

As bibliotecas fornecidas foram testadas com o Xcode 8.3.3 e 9.2. Ao criar apps para computador em C++ no OS X, será preciso vincular a biblioteca de sistema pthread, bem como as bibliotecas de sistema CoreFoundation e Security do OS X. Consulte a documentação do compilador para ver 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).

As bibliotecas fornecidas foram testadas com GCC 4.8.0, GCC 7.2.0 e Clang 5.0 no Ubuntu. Ao criar apps para computador em C++ no Linux, será preciso vincular a biblioteca de sistema pthread. Consulte a documentação do compilador para ver mais informações. Durante a criação com o GCC 5 ou versão posterior, é preciso definir -D_GLIBCXX_USE_CXX11_ABI=0.

Observações sobre o suporte de C++ do Firebase em computadores

O suporte do SDK para C++ do Firebase em computadores é um recurso Beta e destina-se ao uso do fluxo de trabalho somente durante o desenvolvimento do seu app, e não como código de envio público.

Realtime Database em computadores

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

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.