C++ プロジェクトに Firebase を追加する plat_iosplat_androidplat_cpp

Firebase C++ SDK について

Firebase C++ SDK は、iOS および Android のための Firebase 上の C++ インターフェースです。

Java コード(Android の場合)や Objective-C/Swift コード(iOS の場合)を作成しなくても、C++ コードだけで Firebase にアクセスできます。また、Firebase で使用される多くの言語固有のイディオムも、SDK によって C++ デベロッパーになじみのあるインターフェースに変換されます。C++ のゲームに簡単に Firebase を統合できることを示すために、Zooshi というサンプルアプリを作成しました。このアプリは GitHub からダウンロードできます。

SDK をダウンロード

Zooshi(GitHub)


Firebase のゲームのページで、ゲームのパワーアップの方法をご覧ください。

機能

次の機能は、iOS と Android の Firebase C++ SDK でサポートされています。

機能 ライブラリ
AdMob libadmob.a
アナリティクス libanalytics.a
Authentication libauth.a
Realtime Database libdatabase.a
Dynamic Links libdynamic_links.a
Invites libinvites.a
Cloud Messaging libmessaging.a
Remote Config libremote_config.a
Cloud Storage libstorage.a

Firebase C++ SDK には機能のサブセットに対するデスクトップ ワークフローのサポートが含まれているため、Firebase の特定の部分を Windows、OS X、Linux で使用できます。ベータ版

iOS 用の設定

前提条件

  • Xcode 8.0 以降
  • Cloud Messaging の場合:
    • 物理 iOS 端末
    • プッシュ通知を有効にした APNs 証明書

Firebase コンソールでアプリを設定する

Firebase をアプリに追加するには、Firebase プロジェクトと、アプリ用の Firebase 構成ファイルが必要です。

Firebase プロジェクトを作成するには:

  1. Firebase プロジェクトをまだ用意していない場合は、Firebase コンソールで Firebase プロジェクトを作成します。[プロジェクトを追加] をクリックします。モバイルアプリと関連付けられた既存の Google プロジェクトがある場合は、[プロジェクト名] プルダウン メニューから選択します。それ以外の場合は、プロジェクト名を入力して新しいプロジェクトを作成します。
  2. 省略可: プロジェクト ID を編集します。プロジェクトに一意の ID が自動的に付与され、データベース URL や Firebase Hosting サブドメインなどの一般公開される Firebase の機能で使用されます。特定のサブドメインを使用する場合は、この時点でプロジェクト ID を変更できます(後で変更できません)。
  3. 残りの設定手順に沿って、[プロジェクトを作成](または既存のプロジェクトを使用している場合は [Firebase を追加])をクリックして、プロジェクト用のリソースのプロビジョニングを開始します。通常、この処理には数分かかります。処理が完了すると、プロジェクトの概要が表示されます。

これでプロジェクトを用意できました。プロジェクトに iOS アプリを追加できます。

  1. [iOS アプリに Firebase を追加] をクリックして設定手順に沿って操作します。既存の Google プロジェクトをインポートする場合、このステップは自動的に実行されることがあります。その場合は、構成ファイルをダウンロードするだけでかまいません。
  2. 求められたら、アプリのバンドル ID を入力します。必ずアプリで使用しているバンドル ID を入力してください。バンドル ID を設定できるのは、アプリを Firebase プロジェクトに追加するときだけです。
  3. 処理中に GoogleService-Info.plist ファイルをダウンロードします。このファイルは、いつでもダウンロードできます。
  4. 初期化コードを追加してアプリを実行すると、Firebase を正常にインストールしたという確認のメッセージが Firebase コンソールに送信されます。

アプリに Firebase C++ SDK を追加する

  1. Firebase C++ SDK をダウンロードします。ファイルを適切な場所に抽出します。

  2. SDK でダウンロードしたフレームワークを Xcode プロジェクトに追加します。追加する必要があるのは、ベース Firebase フレームワークと、使用するサービスに対応するフレームワークのみです(後述の依存関係セクションを参照)。通常は、フレームワークを Finder ウィンドウから Xcode のプロジェクト ナビゲータ ペイン(デフォルトでは一番左側のペイン - 左上のファイル アイコンをクリックします)に直接ドラッグすることで、簡単にこの作業を行えます。Pods プロジェクトではなく、必ず該当するプロジェクトに追加してください。

  3. アプリをビルドします。Firebase コードのコンパイルとリンクが正常に実行されます。これで完了です。

依存関係

Firebase の機能には、それぞれ異なる依存関係があります。必要なすべての依存関係をプロジェクトと Podfile に含めてください。

Firebase

firebase.framework
pod 'Firebase/Core', '5.1.0'
アナリティクス

firebase.framework
firebase_analytics.framework
pod 'Firebase/Core', '5.1.0'
AdMob

firebase.framework
firebase_admob.framework
pod 'Firebase/Core', '5.1.0'
pod 'Firebase/AdMob', '5.1.0'
Cloud Messaging

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

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

firebase.framework
firebase_database.framework
pod 'Firebase/Core', '5.1.0'
pod 'Firebase/Database', '5.1.0'
Dynamic Links

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

firebase.framework
firebase_invites.framework
pod 'Firebase/Core', '5.1.0'
pod 'Firebase/Invites', '5.1.0'
Remote Config

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

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

メソッドの実装入れ替え

iOS では、特定のメソッドを実装するためにアプリケーション デリゲートを必要とするアプリケーション イベント(URL を開く、通知を受信するなど)があります。たとえば、通知を受信するには、application:didReceiveRemoteNotification: を実装するためのアプリケーション デリゲートが必要になる場合があります。iOS アプリケーションにはそれぞれ独自のアプリ デリゲートがあるため、Firebase はメソッドの実装入れ替えを使用します。これを使用することで、あるメソッドを別のメソッドと置き換えて、実装した任意のハンドラに加えて独自のハンドラをアタッチすることができます。

Firebase Invites、Dynamic Links、Cloud Messaging ライブラリは、メソッドの実装入れ替えを使用してアプリケーション デリゲートにハンドラをアタッチする必要があります。これらのライブラリのいずれかを使用している場合、読み込み時に Firebase は AppDelegate クラスを識別し、そのクラスに必要なメソッドを入れ替え、コールバックを既存のメソッド実装に連結します。

Android 用の設定

前提条件

Firebase コンソールでアプリを設定する

Firebase をアプリに追加するには、Firebase プロジェクトと、アプリ用の Firebase 構成ファイルが必要です。

Firebase プロジェクトを作成するには:

  1. Firebase プロジェクトをまだ用意していない場合は、Firebase コンソールで Firebase プロジェクトを作成します。[プロジェクトを追加] をクリックします。モバイルアプリと関連付けられた既存の Google プロジェクトがある場合は、[プロジェクト名] プルダウン メニューから選択します。それ以外の場合は、プロジェクト名を入力して新しいプロジェクトを作成します。
  2. 省略可: プロジェクト ID を編集します。プロジェクトに一意の ID が自動的に付与され、データベース URL や Firebase Hosting サブドメインなどの一般公開される Firebase の機能で使用されます。特定のサブドメインを使用する場合は、この時点でプロジェクト ID を変更できます(後で変更できません)。
  3. 残りの設定手順に沿って、[プロジェクトを作成](または既存のプロジェクトを使用している場合は [Firebase を追加])をクリックして、プロジェクト用のリソースのプロビジョニングを開始します。通常、この処理には数分かかります。処理が完了すると、プロジェクトの概要が表示されます。

これでプロジェクトを用意できました。プロジェクトに Android アプリを追加できます。

  1. [Android アプリに Firebase を追加] をクリックし、設定手順に沿って操作します。既存の Google プロジェクトをインポートする場合、このステップは自動的に実行されることがあります。その場合は、構成ファイルをダウンロードするだけでかまいません。
  2. 求められたら、アプリのパッケージ名を入力します。必ずアプリで使用しているパッケージ名を入力してください。パッケージ名を設定できるのは、アプリを Firebase プロジェクトに追加するときだけです。
  3. 処理中に google-services.json ファイルをダウンロードします。このファイルは、いつでもダウンロードできます。
  4. 初期化コードを追加したらアプリを実行して、Firebase を正常にインストールしたという確認のメッセージが Firebase コンソールに送信されます。

アプリに Firebase C++ SDK を追加する

  1. Firebase C++ SDK をダウンロードします。ファイルを適切な場所に抽出します。

  2. Firebase C++ SDK の場所を gradle.properties ファイルに追加します。

    systemProp.firebase_cpp_sdk.dir=~/your_local_firebase_sdk_dir
    
  3. Android NDK の場所を local.properties ファイルに追加します。

    ndk.dir=~/your_local_ndk_dir
    
  4. 依存関係を app/build.gradle ファイルに追加します(詳しくは依存関係セクションを参照)。

  5. Android Studio から build.gradle を実行して、Firebase をサポートするプロジェクトをビルドできるようになります。これで完了です。

依存関係

Firebase の機能には、それぞれ異なる依存関係があります。必要なすべての依存関係を app/build.gradle ファイルの dependencies セクションに含めてください。

アナリティクス

libanalytics.a
libapp.a
implementation 'com.google.firebase:firebase-core:16.0.1'
implementation 'com.google.firebase:firebase-analytics:16.0.1'
implementation 'com.google.android.gms:play-services-base:15.0.1'
AdMob

libadmob.a
libapp.a
implementation 'com.google.firebase:firebase-core:16.0.1'
implementation 'com.google.firebase:firebase-ads:16.0.0'
Cloud Messaging

libmessaging.a
libapp.a
implementation 'com.google.firebase:firebase-core:16.0.1'
implementation 'com.google.firebase:firebase-messaging:17.0.0'
implementation 'com.google.android.gms:play-services-base:15.0.1'
Authentication

libauth.a
libapp.a
implementation 'com.google.firebase:firebase-core:16.0.1'
implementation 'com.google.firebase:firebase-auth:16.0.2'
implementation 'com.google.android.gms:play-services-base:15.0.1'
Realtime Database

libdatabase.a
libapp.a
implementation 'com.google.firebase:firebase-core:16.0.1'
implementation 'com.google.firebase:firebase-database:16.0.1'
implementation 'com.google.android.gms:play-services-base:15.0.1'
Dynamic Links

libdynamic_links.a
libapp.a
implementation 'com.google.firebase:firebase-core:16.0.1'
implementation 'com.google.firebase:firebase-invites:16.0.0'
implementation 'com.google.android.gms:play-services-base:15.0.1'
Invites

libinvites.a
libapp.a
implementation 'com.google.firebase:firebase-core:16.0.1'
implementation 'com.google.firebase:firebase-invites:16.0.0'
implementation 'com.google.android.gms:play-services-base:15.0.1'
Remote Config

libremote_config.a
libapp.a
implementation 'com.google.firebase:firebase-core:16.0.1'
implementation 'com.google.firebase:firebase-config:16.0.0'
implementation 'com.google.android.gms:play-services-base:15.0.1'
Storage

libstorage.a
libapp.a
implementation 'com.google.firebase:firebase-core:16.0.1'
implementation 'com.google.firebase:firebase-storage:16.0.1'
implementation 'com.google.android.gms:play-services-base:15.0.1'

その他の情報

カスタムビルド システム

google-services.json をアプリケーションに含めることができる .xml リソースに変換するために、現在 generate_xml_from_google_services_json.py を提供しています。このスクリプトでは、Google Play 開発者サービスの Gradle プラグインが Android アプリケーションをビルドする際に実行するものと同じ変換が適用されます。Gradle(ndk-build、makefiles、Visual Studio など)を使用しないユーザーは、このスクリプトを使用して文字列リソースの生成を自動化できます。

ProGuard

多くの Android ビルドシステムでは、リリースモードでのビルドに ProGuard を使用して、アプリケーション サイズの縮小や Java ソースコードの保護を行います。ProGuard を使用する場合、使用している Firebase C++ ライブラリに対応する libs/android/*.pro 内のファイルを、ProGuard の設定に追加する必要があります。

たとえば Gradle では、build.gradle に次のような記述を含めます。

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

Google Play 開発者サービスが必要かどうか

多くの Firebase C++ ライブラリでは、ユーザーの Android 端末上に Google Play 開発者サービスが必要です。Firebase C++ ライブラリが初期化時に kInitResultFailedMissingDependency を返す場合は、Google Play 開発者サービスが端末上で利用できないことを意味します(更新、再有効化、権限の修正などが必要)。状況が修正されるまで、その Firebase ライブラリは使用できません。

google_play_services/availability.h の関数を使用すると、Google Play 開発者サービスを利用できない理由を確認したり、修正を試みたりできます。

Firebase C++ ライブラリ Google Play 開発者サービスが必要かどうか
アナリティクス 不要
AdMob 不要(通常)
Cloud Messaging 必要
Authentication 必要
Dynamic Links 必要
Invites 必要
Remote Config 必要
Realtime Database 必要
Storage 必要

AdMob および Google Play 開発者サービスに関する注意事項

ほとんどのバージョンの Google Mobile Ads SDK for Android は、Google Play 開発者サービスなしでも正常に機能します。ただし、上記の標準の com.google.firebase:firebase-ads 依存関係でなく com.google.android.gms:play-services-ads-lite 依存関係を使用する場合、Google Play 開発者サービスが必要になります

AdMob の初期化で kInitResultFailedMissingDependency が返されるのは、Google Play 開発者サービスを利用できず、かつcom.google.android.gms:play-services-ads-lite を使用している場合のみです。

デスクトップ ワークフローの実装(ベータ版機能

アプリを作成する場合、通常は、デスクトップ プラットフォームでまずアプリをテストしてから、開発の後の段階で端末にデプロイしてテストする方が簡単になります。このワークフローを支援するため、Firebase C++ SDK のサブセットでデスクトップ プラットフォームがサポートされています。

デスクトップ機能 ライブラリ
コア Firebase ライブラリ libfirebase_app.a
Authentication libfirebase_auth.a
Realtime Database libfirebase_database.a
Remote Config libfirebase_remote_config.a
Cloud Storage libfirebase_storage.a

残りのデスクトップ ライブラリはスタブ(非機能的)実装であり、Windows、OS X、Linux 向けのビルドを便利にするために提供されています。そのため、デスクトップが対象である場合でも、条件に応じてコードをコンパイルする必要はありません。

デスクトップ プロジェクトの設定

デスクトップ ワークフローのサポートを使用するには、Firebase コンソールで Android または iOS プロジェクトを設定する必要があります。

Android プロジェクトがある場合は、google-services.json ファイルをそのままデスクトップで使用できます。

iOS プロジェクトがあり、Android プロジェクトを作成したくない場合は、付属の Python スクリプト generate_xml_from_google_services_json.py --plist を使用して GoogleService-Info.plist ファイルを google-services-desktop.json ファイルに変換できます。

デフォルトでは、Firebase はアプリの初期化時に google-services.json または google-services-desktop.json という名前のファイルを現在のディレクトリで探します。これらのファイルのいずれかが存在することを確認するか、Firebase を初期化する前に AppOptions::LoadFromJsonConfig() を呼び出して、JSON 設定データを直接指定してください。

Windows のライブラリ

Windows の場合、プロジェクトをビルドするモード(32 ビット(x86)または 64 ビット(x64))、使用する Windows ランタイム環境(マルチスレッド /MT またはマルチスレッド DLL /MD)、ビルドのターゲット(リリースまたはデバッグ)に対応するバージョンのライブラリが用意されています。

用意されているライブラリは、Visual Studio 2015 および 2017 を使用してテストされています。Windows で C++ デスクトップ アプリをビルドする場合は、次の Windows SDK ライブラリをリンクする必要があります(詳細については、コンパイラのドキュメントをご覧ください)。

Firebase C++ ライブラリ Windows SDK ライブラリの依存関係
Auth advapi32, ws2_32, crypt32
Realtime Database advapi32, ws2_32, crypt32, iphlpapi, psapi, userenv
Remote Config advapi32, ws2_32, crypt32
Storage advapi32, ws2_32, crypt32

OS X のライブラリ

OS X(Darwin)の場合、用意されているライブラリは、64 ビット(x86_64)プラットフォームに対応するバージョンだけです。利便性のためにフレームワークも用意されています。

用意されているライブラリは、Xcode 8.3.3 および 9.2 を使用してテストされています。OS X で C++ デスクトップ アプリをビルドする場合は、pthread システム ライブラリと、OS X システム フレームワークの CoreFoundation および Security をリンクする必要があります(詳細については、コンパイラのドキュメントをご覧ください)。

Linux のライブラリ

Linux の場合、32 ビット(i386)および 64 ビット(x86_64)のプラットフォームに対応するバージョンのライブラリが用意されています。

用意されているライブラリは、Ubuntu 上の GCC 4.8.0、GCC 7.2.0、Clang 5.0 を使用してテストされています。Linux で C++ デスクトップ アプリをビルドする場合は、pthread システム ライブラリをリンクする必要があります(詳細については、コンパイラのドキュメントをご覧ください)。

Firebase C++ デスクトップ サポートに関する注意事項

Firebase C++ SDK デスクトップ サポートはベータ版の機能です。公開対象のコードではなく、アプリ開発中にのみワークフローで使用するためのものです。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。