Agrega Firebase a tu proyecto de C++plat_iosplat_androidplat_cpp

Acerca del SDK de Firebase C++

El SDK de Firebase C++ proporciona una interfaz C++ además de Firebase para iOS y Android.

Obtén acceso completo a Firebase desde el código de C++, sin necesidad de escribir código de Java (en Android) ni de Objective-C/Swift (en iOS). Además, el SDK toma varias expresiones específicas del lenguaje que Firebase y las traduce en una interfaz más familiar para los programadores de C++. Para demostrar lo fácil que es integrar Firebase al juego de C++, creamos una app de muestra, Zooshi, que puedes descargar desde GitHub.

Descarga el SDK

Zooshi (Github)


Descubre cómo puedes mejorar tus juegos en nuestra página de juegos de Firebase.

Funciones

Las siguientes funciones son compatibles con el SDK de Firebase C++ en iOS y Android:

Función 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
Remote Config libfirebase_remote_config.a
Cloud Storage libfirebase_storage.a

El SDK de Firebase C++ también incluye compatibilidad con flujos de trabajo en computadoras de escritorio para un subconjunto de funciones, lo que permite usar ciertas partes de Firebase en Windows, OS X y Linux. (Beta)

Configurar para iOS

Requisitos previos

  • Xcode 9.4.1 o una versión posterior
  • Para Cloud Messaging:
    • Dispositivo iOS
    • Certificado APN con notificaciones de apps habilitadas

Configura la app en Firebase console

Es hora de agregar Firebase a la app. Primero, necesitarás un proyecto y un archivo de configuración de Firebase para la app.

Para crear un proyecto de Firebase:

  1. Dirígete a Firebase console.

  2. Haz clic en Agregar proyecto, luego selecciona o ingresa un Nombre del proyecto.

    • Si hay un proyecto de Google existente asociado con tu app, selecciónalo desde el menú desplegable Nombre del proyecto.
    • Si no hay un proyecto de Google existente, ingresa un nuevo Nombre del proyecto.
  3. (Opcional) Edita el ID del proyecto.

    Firebase asignará de manera automática un ID único a tu proyecto de Firebase. Este identificador se muestra en los servicios de Firebase visibles de forma pública, por ejemplo:

    • URL predeterminada de Realtime Database: your-project-id.firebaseio.com
    • Nombre predeterminado del depósito de Cloud Storage: your-project-id.appspot.com
    • Subdominio predeterminado de Hosting: your-project-id.firebaseapp.com
  4. Sigue los pasos de configuración restantes y, luego, haz clic en Crear proyecto (o Agregar Firebase si usas un proyecto de Google existente).

Firebase aprovisiona los recursos para tu proyecto de forma automática. Este proceso suele tardar algunos minutos. Cuando finalice, verás la página de descripción general del proyecto en Firebase console.

Ahora que tienes un proyecto, puedes agregar la app para iOS:

  1. Haz clic en Agrega Firebase a tu app para iOS y sigue los pasos de configuración. Si importas un proyecto de Google existente, es posible que esto ocurra de forma automática y solo tengas que descargar el archivo de configuración.

  2. Ingresa el ID del paquete de la app cuando se te solicite. Es importante que ingreses el ID del paquete que usa la app. Esta configuración solo puede hacerse cuando agregas la app al proyecto de Firebase.

  3. Agrega el archivo de configuración de Firebase para iOS a la app, como se indica a continuación:

    1. Haz clic en Descargar GoogleService-Info.plist a fin de obtener el archivo de configuración de Firebase para iOS (GoogleService-Info.plist).

      Puedes volver a descargar el archivo de configuración de Firebase para iOS cuando quieras.

    2. Traslada el archivo de configuración al directorio raíz de tu proyecto de Xcode. Si se te solicita, selecciona la opción para agregar el archivo de configuración a todos los objetivos.

  4. Después de agregar el código de inicialización, ejecuta tu app para verificar con la consola que instalaste Firebase correctamente.

Agrega el SDK de Firebase C++ a la app

  1. Descarga el SDK de Firebase C++. Extrae los archivos en un lugar que te sea conveniente.

  2. Agrega los marcos de trabajo que descargaste en el SDK al proyecto de Xcode. Solo debes incluir el marco de trabajo base de Firebase, junto con los marcos que correspondan a los servicios que deseas usar (consulta la sección de dependencias que aparece a continuación). Generalmente, la manera más fácil de hacerlo es arrastrándolos de una ventana de Finder al panel de navegación del proyecto en Xcode (el panel de la izquierda, de manera predeterminada; debes hacer clic en el ícono del archivo que aparece en la esquina superior izquierda). Asegúrate de agregarlos a tu proyecto y no al proyecto de Pods.

  3. Compila la app. Ahora los vínculos del código de Firebase deberían funcionar correctamente. ¡Estamos listos!

Dependencias

Las características de Firebase tienen dependencias diferentes. Asegúrate de incluir todas las dependencias necesarias en tu proyecto y tu 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'
Remote Config

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'

Referencia de métodos

En iOS, algunos eventos de aplicación (como abrir URL y recibir notificaciones) requieren que el delegado de la aplicación implemente ciertos métodos específicos. Por ejemplo, recibir una notificación puede requerir que el delegado de la aplicación implemente application:didReceiveRemoteNotification:. Debido a que cada aplicación de iOS tiene su propio delegado, Firebase utiliza la referencia de métodos, que permite reemplazar un método con otro a fin de agregar sus propios controladores a los que ya hayas implementado.

Las bibliotecas de Firebase Invites, Dynamic Links y Cloud Messaging deben adjuntar controladores al delegado de la aplicación mediante la referencia de métodos. Si utilizas estas bibliotecas, cuando se carguen, Firebase identificará la clase AppDelegate, agregará los métodos requeridos a ella y generará una devolución de llamada a la implementación del método existente.

Configuración para Android

Requisitos previos

Configura tu app en Firebase console

Es hora de agregar Firebase a la app. Primero, necesitarás un proyecto y un archivo de configuración de Firebase para la app.

Para crear un proyecto de Firebase:

  1. Dirígete a Firebase console.

  2. Haz clic en Agregar proyecto, luego selecciona o ingresa un Nombre del proyecto.

    • Si hay un proyecto de Google existente asociado con tu app, selecciónalo desde el menú desplegable Nombre del proyecto.
    • Si no hay un proyecto de Google existente, ingresa un nuevo Nombre del proyecto.
  3. (Opcional) Edita el ID del proyecto.

    Firebase asignará de manera automática un ID único a tu proyecto de Firebase. Este identificador se muestra en los servicios de Firebase visibles de forma pública, por ejemplo:

    • URL predeterminada de Realtime Database: your-project-id.firebaseio.com
    • Nombre predeterminado del depósito de Cloud Storage: your-project-id.appspot.com
    • Subdominio predeterminado de Hosting: your-project-id.firebaseapp.com
  4. Sigue los pasos de configuración restantes y, luego, haz clic en Crear proyecto (o Agregar Firebase si usas un proyecto de Google existente).

Firebase aprovisiona los recursos para tu proyecto de forma automática. Este proceso suele tardar algunos minutos. Cuando finalice, verás la página de descripción general del proyecto en Firebase console.

Ahora que tienes un proyecto, puedes agregar tu app para Android:

  1. Haz clic en Agrega Firebase a tu app para Android y sigue los pasos de la configuración. Si importas un proyecto de Google existente, es posible que esto ocurra de forma automática y solo tengas que descargar el archivo de configuración.

  2. Ingresa el nombre del paquete de la app cuando se te solicite. Es importante que ingreses el ID del paquete que usa la app. Esta configuración solo puede hacerse cuando agregas la app al proyecto de Firebase.

  3. Agrega el archivo de configuración de Firebase para Android a la app, como se indica a continuación:

    1. Haz clic en Descargar google-services.json a fin de obtener el archivo de configuración de Firebase para Android (google-services.json).

      Puedes volver a descargar el archivo de configuración de Firebase para Android cuando quieras.

    2. Traslada el archivo de configuración al mismo directorio en donde se ubica el archivo build.gradle del nivel de raíz.

  4. Después de agregar el código de inicialización, ejecuta tu app para verificar con la consola que instalaste Firebase correctamente.

Agrega el SDK de Firebase C++ a la app

  1. Descarga el SDK de Firebase C++. Extrae los archivos en un lugar que te sea conveniente.

  2. Agrega la ubicación del SDK de Firebase C++ al archivo gradle.properties:

    systemProp.firebase_cpp_sdk.dir=~/your_local_firebase_sdk_dir
    
  3. Agrega la ubicación de Android NDK al archivo local.properties:

    ndk.dir=~/your_local_ndk_dir
    
  4. Agrega todas las dependencias al archivo app/build.gradle. (Consulta la sección sobre dependencias para obtener información detallada).

  5. Ahora, deberías poder compilar el proyecto compatible con Firebase a través de build.gradle en Android Studio. ¡Estamos listos!

Dependencias

Las características de Firebase tienen dependencias diferentes. Incluye todas las dependencias necesarias en la sección de dependencias del archivo 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'
Remote Config

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'

Información adicional

Sistemas de compilación personalizada

Actualmente, proporcionamos generate_xml_from_google_services_json.py para convertir google-services.json en recursos .xml que se puedan incluir en una aplicación. Esta secuencia de comandos aplica la misma transformación que realiza el complemento de Servicios de Google Play para Gradle cuando se compilan aplicaciones para Android. Los usuarios que no usan Gradle (como ndk-build, makefiles, Visual Studio, etc.) pueden usar esta secuencia de comandos para automatizar la generación de recursos en string.

ProGuard

Muchos sistemas de compilación de Android utilizan ProGuard para las compilaciones en modo de lanzamiento a fin de reducir el tamaño de las aplicaciones y proteger el código fuente de Java. Si usas ProGuard, deberás agregar los archivos en libs/android/*.pro, de acuerdo con las bibliotecas de Firebase C++ que uses en la configuración de ProGuard.

Por ejemplo, con Gradle, build.gradle contendría lo siguiente:

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

Si necesitas Servicios de Google Play

Muchas bibliotecas de Firebase C++ requieren Servicios de Google Play en el dispositivo Android del usuario. Si una biblioteca de Firebase C++ muestra kInitResultFailedMissingDependency durante la inicialización, significa que los Servicios de Google Play no están disponibles en el dispositivo (se deben actualizar, volver a activar, corregir sus permisos, etc.) y que no se podrá usar la biblioteca de Firebase hasta que se corrija la situación.

Para averiguar por qué los Servicios de Google Play no están disponibles (y tratar de corregir la situación), usa las funciones de google_play_services/availability.h.

Biblioteca de Firebase C++ ¿Necesita los Servicios de Google Play?
Analytics No los necesita
AdMob No los necesita (generalmente)
Cloud Messaging Obligatorio
Authentication Obligatorio
Dynamic Links Obligatorio
Invites Obligatorio
Remote Config Obligatorio
Realtime Database Obligatorio
Cloud Functions Obligatoria
Storage Obligatorio

Comentario sobre AdMob y los Servicios de Google Play

La mayoría de las versiones de Google Mobile Ads SDK para Android pueden funcionar correctamente sin los Servicios de Google Play. Sin embargo, si estás usando la dependencia com.google.android.gms:play-services-ads-lite en lugar de la dependencia com.google.firebase:firebase-ads estándar mencionada anteriormente, deberás usar los Servicios de Google Play en tu caso específico.

La inicialización de AdMob solo mostrará kInitResultFailedMissingDependency si los Servicios de Google Play no están disponibles y estás usando com.google.android.gms:play-services-ads-lite.

Implementaciones de flujos de trabajo de escritorio (característica en versión Beta)

Cuando creas una app, suele ser más fácil probarla en las plataformas de escritorio antes de implementarla y probarla en dispositivos en una etapa posterior de la programación. Para admitir este flujo de trabajo, proporcionamos un subconjunto del SDK de Firebase C++ que son compatibles con las plataformas de escritorio:

Característica para escritorio Biblioteca
Biblioteca de Firebase principal libfirebase_app.a
Authentication libfirebase_auth.a
Realtime Database libfirebase_database.a
Cloud Functions libfirebase_functions.a
Remote Config libfirebase_remote_config.a
Cloud Storage libfirebase_storage.a

Las bibliotecas de escritorio restantes son implementaciones auxiliares (no funcionales), que se proporcionan a fin de realizar compilaciones para Windows, SO X y Linux sin tener que compilar códigos de manera condicional para una versión de escritorio.

Configuración del proyecto de escritorio

Para usar la compatibilidad con los flujos de trabajo en computadoras de escritorio, debes tener un proyecto de Android o iOS configurado en Firebase console.

Si tienes un proyecto de Android, solo usa el archivo google-services.json en el escritorio.

Si tienes un proyecto de iOS y no deseas crear un proyecto de Android, usa la secuencia de comandos de Python incluida generate_xml_from_google_services_json.py --plist para convertir tu archivo GoogleService-Info.plist a un archivo google-services-desktop.json.

De forma predeterminada, Firebase buscará un archivo llamado google-services.json o google-services-desktop.json en el directorio actual cuando se inicialice la aplicación. Asegúrate de que uno de estos archivos esté presente o llama a AppOptions::LoadFromJsonConfig() antes de inicializar Firebase para especificar tus datos de configuración JSON directamente.

Bibliotecas de Windows

En el caso de Windows, se proporcionan las versiones de biblioteca según si se compiló tu proyecto en modo de 32 bits (x86) o de 64 bits (x64), qué entorno de tiempo de ejecución de Windows usas (multiproceso/MT o multiproceso DLL/MD) y si buscas Liberar o Depurar.

Se probaron las bibliotecas proporcionadas con Visual Studio 2015 y 2017. Cuando compiles aplicaciones de escritorio C++ en Windows, deberás vincular las siguientes bibliotecas SDK (consulta la documentación de compilador para obtener más información):

Biblioteca de Firebase C++ Dependencias de la biblioteca de SDK de Windows
Authentication advapi32, ws2_32, crypt32
Realtime Database advapi32, ws2_32, crypt32, iphlpapi, psapi, userenv
Cloud Functions advapi32, ws2_32, crypt32
Remote Config advapi32, ws2_32, crypt32
Storage advapi32, ws2_32, crypt32

Bibliotecas de SO X

En el caso de SO X (Darwin), solo se proporcionan las versiones de biblioteca para la plataforma de 64 bits (x86_64). También se proporcionan los marcos de trabajo para facilitar tu trabajo.

Se probaron las bibliotecas proporcionadas con Xcode 8.3.3 y 9.2. Cuando compiles aplicaciones de escritorio C++ en SO X, deberás vincular la biblioteca de sistema pthread y también los marcos de trabajo del sistema SO X CoreFoundation y Security (consulta la documentación de compilador para obtener más información).

Bibliotecas de Linux

En el caso de Linux, solo se proporcionan las versiones de biblioteca para las plataformas de 32-bit (i386) y 64-bit (x86_64).

Se probaron las bibliotecas proporcionadas con GCC 4.8.0, GCC 7.2.0, y Clang 5.0 en Ubuntu. Cuando compiles aplicaciones de escritorio C++ en Linux, deberás vincular la biblioteca de sistema pthread (consulta la documentación de compilador para obtener más información). Si realizas la compilación con GCC 5 o versiones posteriores, deberás definir -D_GLIBCXX_USE_CXX11_ABI=0.

Notas sobre la compatibilidad de escritorio de Firebase C++

La compatibilidad de escritorio con el SDK de Firebase C++ es una característica Beta y está diseñada para usarse con flujos de trabajo solo durante la programación de tu app, no para el envío público de códigos.

Realtime Database Desktop

El SDK de Realtime Database Desktop usa REST para acceder a la base de datos, por lo que debes indicar los índices que usas con Query::OrderByChild() en Desktop o los agentes de escucha no funcionarán.

Enviar comentarios sobre…

¿Necesitas ayuda? Visita nuestra página de asistencia.