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

Firebase C++ SDK について

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

Java コード(Android)や Objective-C/Swift コード(iOS)を作成せずに、C++ コードから Firebase 全体にアクセスできるようになり、Firebase で使用される多くの言語固有のイディオムが、C++ 開発者になじみのあるインターフェースに変換されます。

SDK をダウンロード

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

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

iOS 用の設定

事前準備

  • Xcode 7.0 以降
  • クラウド メッセージングの場合
    • 物理 iOS 端末
    • プッシュ通知を有効にした APNs 証明書

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

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

  1. Firebase プロジェクトをまだ用意していない場合は、Firebase コンソールで Firebase プロジェクトを作成します。モバイルアプリと関連付けられた既存の Google プロジェクトがある場合は、[Google プロジェクトをインポート] をクリックします。それ以外の場合は、[新規プロジェクトを作成] をクリックします。
  2. [iOS アプリに Firebase を追加] をクリックして設定手順に沿って操作します。既存の Google プロジェクトをインポートする場合、このステップは自動的に実行されることがあります。その場合は、設定ファイルをダウンロードするだけでかまいません。
  3. 求められたら、アプリのバンドル ID を入力してください。必ずアプリで使用しているバンドル ID を入力してください。バンドル ID を設定できるのは、アプリを Firebase プロジェクトに追加するときだけです。
  4. GoogleService-Info.plist ファイルをダウンロードします。このファイルはいつでももう一度ダウンロードできます。
  5. このファイルを Xcode プロジェクトのルートにコピーしていない場合はコピーします。

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

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

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

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

依存関係

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

Firebase

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

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

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

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

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

firebase.framework
firebase_database.framework
pod 'Firebase/Core'
pod 'Firebase/Database'
Invites と Dynamic Links

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

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

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

メソッドの実装入れ替え

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

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

Android 用の設定

前提条件

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

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

  1. Firebase プロジェクトをまだ用意していない場合は、Firebase コンソールで Firebase プロジェクトを作成します。モバイルアプリと関連付けられた既存の Google プロジェクトがある場合は、[Google プロジェクトをインポート] をクリックします。それ以外の場合は、[新規プロジェクトを作成] をクリックします。
  2. [Android アプリに Firebase を追加] をクリックし、設定手順に沿って操作します。既存の Google プロジェクトをインポートする場合、このステップは自動的に実行されることがあります。その場合は、設定ファイルをダウンロードするだけでかまいません。
  3. プロンプトが表示されたら、アプリのパッケージ名を入力します。必ずアプリで使用しているパッケージ名を入力してください。パッケージ名を設定できるのは、アプリを Firebase プロジェクトに追加するときだけです。
  4. google-services.json ファイルをダウンロードします。このファイルはいつでももう一度ダウンロードできます。
  5. このファイルをプロジェクトのモジュール フォルダ(通常は app/)にコピーしていない場合は、コピーします。

アプリに 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
compile 'com.google.firebase:firebase-analytics:10.2.6'
compile 'com.google.android.gms:play-services-base:10.2.6'
AdMob

libadmob.a
libapp.a
compile 'com.google.firebase:firebase-ads:10.2.6'
Cloud Messaging

libmessaging.a
libapp.a
compile 'com.google.firebase:firebase-messaging:10.2.6'
compile 'com.google.android.gms:play-services-base:10.2.6'
Authentication

libauth.a
libapp.a
compile 'com.google.firebase:firebase-auth:10.2.6'
compile 'com.google.android.gms:play-services-base:10.2.6'
Realtime Database

libdatabase.a
libapp.a
compile 'com.google.firebase:firebase-database:10.2.6'
compile 'com.google.android.gms:play-services-base:10.2.6'
Invites と Dynamic Links

libinvites.a
libapp.a
compile 'com.google.firebase:firebase-invites:10.2.6'
compile 'com.google.android.gms:play-services-base:10.2.6'
Remote Config

libremote_config.a
libapp.a
compile 'com.google.firebase:firebase-config:10.2.6'
compile 'com.google.android.gms:play-services-base:10.2.6'
Storage

libstorage.a
libapp.a
compile 'com.google.firebase:firebase-storage:10.2.6'
compile 'com.google.android.gms:play-services-base:10.2.6'

その他の情報

カスタムビルド システム

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 必要
Invites と Dynamic Links 必要
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 の初期化で、Google Play サービスが利用できず、さらに com.google.android.gms:play-services-ads-lite を使用した場合、kInitResultFailedMissingDependency にみを返します。

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

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