Ir a la consola

Agrega Firebase a tu proyecto de C++plat_iosplat_androidplat_cpp

Usa nuestros SDK de Firebase C++ que ofrecen una interfaz de este lenguaje en Firebase para iOS y Android, y potencia tus juegos de C++.

Accede a Firebase de forma íntegra por medio de tu código de C++ sin la necesidad de escribir código nativo de la plataforma. Además, el SDK de Firebase toma varias expresiones específicas del lenguaje de Firebase y las traduce a una interfaz más familiar para los desarrolladores de C++.

Obtén más información acerca de cómo mejorar tus juegos con Firebase en nuestra página de juegos de Firebase.

ios

android

Paso 1: Configura tu entorno

ios

  • Instala Xcode 9.4.1 o una versión más reciente.

  • Instala CocoaPods 1.4.0 o una versión más reciente.

  • Abre tu proyecto de C++ en Xcode.

    • Tu app debe orientarse a iOS 8 o una versión más reciente.
  • Configura un dispositivo o emulador para ejecutar la app.

    • Para Cloud Messaging, necesitarás los siguientes elementos:
      • Un dispositivo iOS físico
      • Un certificado APNS con notificaciones push habilitadas
  • Accede a Firebase con tu Cuenta de Google.

android

  • Obtén el SDK de Android.

  • Instala tu editor o IDE preferido, como Android Studio, IntelliJ o VS Code.

  • Abre tu proyecto de C++ en tu editor o IDE preferido.

  • Configura un dispositivo o emulador para ejecutar la app.

    • Los emuladores deben usar una imagen de emulador con Google Play.

    • Se necesitan Servicios de Google Play en el dispositivo cliente para algunas bibliotecas de C++; revisa la lista que aparece en esta página.

  • Accede a Firebase con tu Cuenta de Google.

Paso 2: Crea un proyecto de Firebase

Antes de que puedas agregar Firebase a tu proyecto de C++, tendrás que crear un proyecto de Firebase para conectarlo con el de C++. Consulta la Información sobre los proyectos de Firebase para obtener más detalles sobre el tema.

Paso 3: Registra tu app con Firebase

ios

Puedes registrar una o más apps para conectarlas con tu proyecto de Firebase.

Consulta la Información sobre los proyectos de Firebase a fin de obtener detalles sobre prácticas recomendadas y consideraciones para agregar apps a un proyecto de Firebase, incluido cómo manejar diversas variantes de compilación.

  1. En el centro de la página de descripción general del proyecto en Firebase console, haz clic en el ícono de iOS para iniciar el flujo de trabajo de la configuración.

    Si ya agregaste una app a tu proyecto de Firebase, haz clic en Agregar app para que se muestren las opciones de la plataforma.

  2. Ingresa el ID del paquete de la app en el campo del ID del paquete de iOS.

    • Podrás encontrar el ID del paquete en el proyecto abierto en Xcode. Selecciona la app de nivel superior en el navegador del proyecto a la izquierda y, luego, accede a la pestaña General. El valor identificador de paquete es el ID del paquete de iOS (por ejemplo, com.yourcompany.ios-app-name).
  3. (Opcional) Ingresa otra información de la app si el flujo de trabajo de configuración lo solicita.

    El sobrenombre es un identificador interno y conveniente, y solo tú puedes verlo en Firebase console.

  4. Haz clic en Registrar app.

android

Puedes registrar una o más apps para conectarlas con tu proyecto de Firebase.

Consulta la Información sobre los proyectos de Firebase a fin de obtener detalles sobre prácticas recomendadas y consideraciones para agregar apps a un proyecto de Firebase, incluido cómo manejar diversas variantes de compilación.

  1. En el centro de la página de descripción general del proyecto en Firebase console, haz clic en el ícono de Android para iniciar el flujo de trabajo de la configuración.

    Si ya agregaste una app a tu proyecto de Firebase, haz clic en Agregar app para que se muestren las opciones de la plataforma.

  2. Ingresa el ID de aplicación de tu app en el campo Nombre del paquete de Android.

    • A veces, nos referimos al ID de aplicación como un nombre de paquete.

    • Encuentra este ID de aplicación en el archivo Gradle, generalmente app/build.gradle (ejemplo de ID: com.yourcompany.yourproject) de tu módulo (nivel de app).

  3. (Opcional) Ingresa otra información de la app si el flujo de trabajo de configuración lo solicita.

    El sobrenombre es un identificador interno y conveniente, y solo tú puedes verlo en Firebase console.

  4. Haz clic en Registrar app.

Paso 4: Agrega el archivo de configuración de Firebase

ios

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

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

  2. Abre tu proyecto de C++ en un IDE y arrastra el archivo de configuración al directorio raíz de tu proyecto de C++.

  3. Si se te solicita, selecciona la opción para agregar el archivo de configuración a todos los destinos.

  4. Completaste las tareas de configuración en Firebase console. Sigue con el paso Agrega los SDK de Firebase C++ que se muestra a continuación.

android

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

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

  2. Abre tu proyecto de C++ en un IDE y agrega el archivo de configuración al proyecto:

  3. (Solo para compilaciones de Gradle) A fin de habilitar los servicios de Firebase en tu proyecto de C++, agrega el complemento google-services al archivo build.gradle de nivel superior.

    1. Agrega reglas para incluir el complemento de Google Services. Además, revisa que tengas el repositorio Maven de Google.

      buildscript {
        // ...
        dependencies {
          // ...
          // Add the following line:
          classpath 'com.google.gms:google-services:4.2.0'  // Google Services plugin
        }
      }
      
      allprojects {
        // ...
        repositories {
          // Check that you have the following line (if not, add it):
          google()  // Google's Maven repository
          // ...
        }
      }
      
    2. Agrega la siguiente línea al final del archivo.

      apply plugin: 'com.android.application'
      
      android {
        // ...
      }
      
      // Add the following line to the bottom of the file:
      apply plugin: 'com.google.gms.google-services'  // Google Play services Gradle plugin
      
  4. Completaste las tareas de configuración en Firebase console. Sigue con el paso Agrega los SDK de Firebase C++ que se muestra a continuación.

Paso 5: Agrega los SDK de Firebase C++

ios

Los pasos que se indican en esta sección sirven de ejemplo para agregar cualquier producto de Firebase compatible a un proyecto de Firebase C++. En este, se explica cómo agregar Google Analytics para Firebase.

Aunque agregar Google Analytics para Firebase a tu proyecto de C++ es opcional, es una manera relativamente sencilla de verificar que Firebase funciona adecuadamente con tu app. Analytics también puede ser muy útil durante el desarrollo y la depuración, además de ayudarte a realizar un seguimiento del desempeño adecuado de tus apps de producción.

  1. Descarga el SDK de Firebase C++ y descomprímelo en la ubicación que prefieras.

    El SDK de Firebase C++ no es específico de una plataforma, pero sí contiene bibliotecas específicas de estas.

  2. Agrega los pods de Firebase desde el SDK descomprimido.

    1. Crea un Podfile si aún no tienes uno:

      cd your-app-directory
      pod init

    2. Por cada producto de Firebase que quieras usar, agrega los pods correspondientes a tu Podfile. Para Analytics, ejecuta el siguiente código:

      pod 'Firebase/Core', '5.12.0'

    3. Instala los pods y abre el archivo .xcworkspace en Xcode.

      pod install
      open your-app.xcworkspace

  3. Agrega los marcos de trabajo de Firebase desde el SDK descomprimido.

    Por lo general, la manera más fácil de agregar estos marcos de trabajo es arrastrarlos directamente desde una ventana de Finder hasta el panel del Navegador del proyecto de Xcode (según la configuración predeterminada este es el panel en el extremo izquierdo, también puedes hacer clic en el ícono de archivo que aparece en la parte superior izquierda de Xcode).

    1. Agrega el marco de trabajo principal de Firebase (firebase.framework), este es obligatorio para poder usar los productos de Firebase.

    2. Agrega el marco de trabajo de cada producto de Firebase que quieras usar. Para Analytics, agrega firebase_analytics.framework.

  4. Vuelve a Firebase console y en el flujo de trabajo de configuración, haz clic en Siguiente.

  5. Ejecuta la app para enviar la verificación a Firebase de que lo integraste correctamente.

    En los registros de tu dispositivo, se mostrará la verificación de Firebase que indica que se completó la inicialización. Si ejecutaste tu app en un emulador que tiene acceso a redes, Firebase console notificará que se completó la conexión de tu app.

¡Listo! Tu app de C++ está registrada y configurada para usar productos de Firebase.

android

Los pasos que se indican en esta sección sirven de ejemplo para agregar cualquier producto de Firebase compatible a un proyecto de Firebase C++. En este, se explica cómo agregar Google Analytics para Firebase.

Aunque agregar Google Analytics para Firebase a tu proyecto de C++ es opcional, es una manera relativamente sencilla de verificar que Firebase funciona adecuadamente con tu app. Analytics también puede ser muy útil durante el desarrollo y la depuración, además de ayudarte a realizar un seguimiento del desempeño adecuado de tus apps de producción.

  1. Descarga el SDK de Firebase C++ y descomprímelo en la ubicación que prefieras.

    El SDK de Firebase C++ no es específico de una plataforma, pero sí contiene bibliotecas específicas de estas.

  2. Especifica la ubicación del SDK descomprimido en el archivo gradle.properties de tu proyecto:

    systemProp.firebase_cpp_sdk.dir=full-path-to-SDK
    
  3. Agrega el siguiente código al archivo settings.gradle de tu proyecto:

    def firebase_cpp_sdk_dir = System.getProperty('firebase_cpp_sdk.dir')
    
    gradle.ext.firebase_cpp_sdk_dir = "$firebase_cpp_sdk_dir"
    includeBuild "$firebase_cpp_sdk_dir"
    
  4. Agrega el siguiente código al archivo build.gradle del nivel del proyecto:

    android.defaultConfig.externalNativeBuild.cmake {
     arguments "-DFIREBASE_CPP_SDK_DIR=$gradle.firebase_cpp_sdk_dir"
    }
    
    apply from "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle"
    firebaseCpp.dependencies {
     analytics
    }
    
  5. Agrega el siguiente contenido al archivo CMakeLists.txt de tu proyecto, incluidas las bibliotecas de los productos de Firebase que quieres usar. Por ejemplo, para Analytics, agrega el siguiente contenido:

    # 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}")
    
  6. Sincroniza tu app para garantizar que todas las dependencias tengan las versiones necesarias.

  7. Ejecuta la app para enviar la verificación a Firebase de que lo integraste correctamente.

    En los registros de tu dispositivo, se mostrará la verificación de Firebase que indica que se completó la inicialización. Si ejecutaste tu app en un emulador que tiene acceso a redes, Firebase console notificará que se completó la conexión de tu app.

¡Listo! Tu app de C++ está registrada y configurada para usar servicios de Firebase.

Bibliotecas disponibles

Consulta la documentación de referencia y la actualización del SDK de código abierto en GitHub para obtener más información sobre las bibliotecas de Firebase C++.

ios

Bibliotecas disponibles para iOS

Recuerda que en la versión de Android de esta página de configuración se enumeran las bibliotecas de C++ para Android.

Cada producto de Firebase tiene dependencias diferentes. Procura agregar todas las dependencias enumeradas para el producto de Firebase que desees a tu Podfile y tu proyecto de C++.

Producto de Firebase Marcos de trabajo y pods
Firebase Core (obligatorio)

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

firebase.framework
firebase_analytics.framework
pod 'Firebase/Core', '5.18.0'
Authentication

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

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

firebase.framework
firebase_dynamic_links.framework
pod 'Firebase/Core', '5.18.0'
pod 'Firebase/DynamicLinks', '5.18.0'
Realtime Database

firebase.framework
firebase_database.framework
pod 'Firebase/Core', '5.18.0'
pod 'Firebase/Database', '5.18.0'
Remote Config

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

android

Bibliotecas disponibles para Android (con CMake)

Recuerda que en la versión para iOS de esta página de configuración se enumeran las bibliotecas de C++ para iOS.

Producto de Firebase Referencias a las bibliotecas (con CMake)
Firebase Core (obligatorio) firebase_app
AdMob firebase_admob
Analytics firebase_analytics
Authentication firebase_auth
Cloud Functions firebase_functions
Cloud Messaging firebase_messaging
Cloud Storage firebase_storage
Dynamic Links firebase_dynamic_links
Realtime Database firebase_database
Remote Config firebase_remote_config

Información adicional sobre la configuración para dispositivos móviles

ios

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, además de 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 alguno de estos productos de Firebase, 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.

android

Sistemas de compilación personalizada

Firebase proporciona la secuencia de comandos generate_xml_from_google_services_json.py para convertir los recursos google-services.json en .xml, que puedes incluir en tu proyecto. Esta secuencia de comandos aplica la misma transformación que realiza el complemento de Servicios de Google Play para Gradle cuando se compilan aplicaciones de Android.

Si no compilas con Gradle (por ejemplo, usas ndk-build, makefiles, Visual Studio, etc.), puedes usar esta secuencia de comandos para automatizar la generación de Recursos de string de Android.

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 a libs/android/*.pro, de acuerdo con las bibliotecas de Firebase C++ que uses en la configuración de ProGuard.

Por ejemplo, con Gradle, si usas Google Analytics para Firebase, tu archivo build.gradle se verá de la siguiente manera:

android {
  // ...
  buildTypes {
    release {
      minifyEnabled true
      proguardFile getDefaultProguardFile('your-project-proguard-config.txt')
      proguardFile file(project.ext.your_local_firebase_sdk_dir + "/libs/android/app.pro")
      proguardFile file(project.ext.your_local_firebase_sdk_dir + "/libs/android/analytics.pro")
      // ...  and so on, for each Firebase C++ library that you're using
    }
  }
}

Requisito de los Servicios de Google Play

La mayoría de las bibliotecas de Firebase C++ requieren que los dispositivos Android de los clientes cuenten con los Servicios de Google Play. 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 cliente (esto quiere decir que se debe actualizar, volver a activar o que se deben corregir los permisos, entre otros). No se podrá usar la biblioteca de Firebase hasta que se corrija la situación en el dispositivo cliente.

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.

En la siguiente tabla se indica, para cada producto compatible de Firebase, si un dispositivo cliente necesita los Servicios de Google Play.

Biblioteca de Firebase C++ ¿Los Servicios de Google Play son obligatorios en el dispositivo cliente?
AdMob No es obligatorio (generalmente)
Analytics No es obligatorio
Authentication Obligatorio
Cloud Functions Obligatorio
Cloud Messaging Obligatorio
Cloud Storage Obligatorio
Dynamic Links Obligatorio
Realtime Database Obligatorio
Remote Config Obligatorio

AdMob y los Servicios de Google Play

La mayoría de las versiones del SDK de anuncios de Google para dispositivos móviles para Android pueden funcionar correctamente sin los Servicios de Google Play en el dispositivo cliente. 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, entonces los Servicios de Google Play son obligatorios.

La inicialización de AdMob solo mostrará kInitResultFailedMissingDependency si se cumplen estas condiciones:

  • Los Servicios de Google Play no están disponibles en el dispositivo cliente.
  • Estás usando com.google.android.gms:play-services-ads-lite.

Configura un flujo de trabajo para computadoras de escritorio (Beta)

Cuando creas un juego, suele ser más fácil probarlo en plataformas de computadoras de escritorio antes de implementarlo y probarlo en dispositivos móviles en una etapa posterior del desarrollo. Para admitir este flujo de trabajo, proporcionamos un subconjunto de los SDK de Firebase C++ que se puede ejecutar en Windows, macOS, Linux y desde dentro del editor de C++.

  1. Debes completar los siguientes pasos para los flujos de trabajo en computadoras de escritorio:

  2. Crea una versión para computadoras de escritorio del archivo de configuración de Firebase:

    • Si agregaste el archivo google-services.json de Android: Cuando ejecutes la app, Firebase ubicará este archivo para dispositivos móviles y generará automáticamente un archivo de configuración de Firebase (google-services-desktop.json) para computadoras de escritorio.

    • Si agregaste el archivo GoogleService-Info.plist de iOS: Antes de que ejecutes la app, debes convertir este archivo para dispositivos móviles en un archivo de configuración de Firebase para computadoras de escritorio. A fin de convertir el archivo, ejecuta el siguiente comando desde el mismo directorio donde se encuentra el archivo GoogleService-Info.plist:

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

    Este archivo de configuración para computadoras de escritorio contiene el ID del proyecto de C++ que ingresaste en el flujo de trabajo de configuración de Firebase console. Consulta la Información sobre los proyectos de Firebase para obtener detalles acerca de los archivos de configuración.

  3. Agrega los SDK de Firebase al proyecto de C++.

    Los pasos que se indican a continuación sirven como ejemplo de cómo agregar cualquier producto compatible de Firebase al proyecto de C++. En este, se explica cómo agregar Google Analytics para Firebase.

    1. Establece la ubicación de la variable del entorno FIREBASE_CPP_SDK_DIR en la del SDK de Firebase C++ descomprimido.

    2. Agrega el siguiente contenido al archivo CMakeLists.txt de tu proyecto, incluidas las bibliotecas de los productos de Firebase que quieres usar. Por ejemplo, para Analytics, agrega el siguiente contenido:

      # 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. Ejecuta la app de C++.

Bibliotecas disponibles (para computadoras de escritorio)

El SDK de Firebase C++ incluye compatibilidad con flujos de trabajo de escritorio para un subconjunto de funciones, lo que permite usar ciertas partes de Firebase en versiones independientes para computadoras de escritorio en Windows, macOS y Linux.

Producto de Firebase Referencias a las bibliotecas (con CMake)
Firebase Core (obligatorio) firebase_app
Authentication firebase_auth
Cloud Functions firebase_functions
Cloud Storage firebase_storage
Realtime Database firebase_database
Remote Config firebase_remote_config

Las bibliotecas de escritorio restantes son implementaciones auxiliares (no funcionales) que Firebase proporciona a fin de realizar compilaciones para Windows, macOS y Linux. Por lo tanto, no es necesario que compiles código de manera condicional orientado a la versión para computadoras de escritorio.

Realtime Database para computadoras de escritorio

El SDK de Realtime Database para computadoras de escritorio usa REST a fin de acceder a tu base de datos, por lo que debes declarar los índices que usas con Query::OrderByChild() en computadoras de escritorio o los objetos de escucha fallarán.

Información adicional para la configuración en computadoras de escritorio

Bibliotecas de Windows

En Windows, las versiones de las bibliotecas se proporcionan en función de los siguientes aspectos:

  • Plataforma de compilación: modo de 32 bits (x86) frente a 64 bits (x64)
  • Entorno de ejecución de Windows: multiproceso/MT frente a multiproceso DLL/MD
  • Destino: liberación frente a depuración

Ten en cuenta que las bibliotecas que se indican a continuación se probaron con Visual Studio 2015 y 2017.

Cuando compiles apps para computadoras de escritorio de C++ en Windows, vincula las siguientes bibliotecas de los SDK de Windows con tu proyecto. Consulta la documentación del compilador para obtener más información.

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

Bibliotecas de macOS

En el caso de macOS (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.

Recuerda que las bibliotecas de macOS se probaron con Xcode 9.4.1.

Cuando compiles apps para computadoras de escritorio de C++ en macOS, vincula los siguientes elementos a tu proyecto:

  • biblioteca del sistema pthread
  • marco de trabajo del sistema de macOS CoreFoundation
  • marco de trabajo del sistema de macOS Security

Consulta la documentación del 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).

Recuerda que las bibliotecas de Linux se probaron con GCC 4.8.0, GCC 7.2.0 y Clang 5.0 en Ubuntu.

Cuando compiles apps para computadoras de escritorio de C++ en Linux, vincula la biblioteca del sistema pthread con tu proyecto. Consulta la documentación del compilador para obtener más información. Define -D_GLIBCXX_USE_CXX11_ABI=0 si vas a compilar con GCC 5 o una versión más reciente.