FirebaseにはC++用のラッパーSDKが用意されていて、
これを使うとC++で開発しているiOS/Androidアプリから、
FirebaseのAPIを呼び出せるようになります。
まだbetaのようです。
手順はリンク先のドキュメントに書かれていますが、結構ハマりポイントがあったので、
念のため残しておきます。
Android
設定ファイル
google-services.json
をFirebaseのコンソールからダウンロードし、
プロジェクトに入れます。
build.gradle
プロジェクトルートのbuild.gradle
に、com.google.gms:google-services
を設定します
buildscript {
...
dependencies {
...
classpath 'com.google.gms:google-services:3.1.0'
}
}
...
appのbuild.gradle
で、com.google.gms.google-services
と、dependencies
を設定します。
ドキュメントを見ながら必要な機能のみ追加してください。
core
はanalytics
のエイリアスで、core(またはanalytics)は必須です。
apply plugin: 'com.android.application'
android {
...
}
dependencies {
...
compile 'com.google.android.gms:play-services-base:10.0.1'
compile 'com.google.firebase:firebase-core:10.0.1'
compile 'com.google.firebase:firebase-ads:10.0.1'
compile 'com.google.firebase:firebase-crash:10.0.1'
compile 'com.google.firebase:firebase-messaging:10.0.1'
compile 'com.google.firebase:firebase-auth:10.0.1'
compile 'com.google.firebase:firebase-database:10.0.1'
compile 'com.google.firebase:firebase-invites:10.0.1'
compile 'com.google.firebase:firebase-config:10.0.1'
compile 'com.google.firebase:firebase-storage:10.0.1'
...
}
apply plugin: 'com.google.gms.google-services'
CMakeLists.txt
CMakeLists.txtで、C++用ライブラリのリンク情報を記述します。
ダウンロードしたC++SDKを展開し、firebase_cpp_sdk
ディレクトリ配下の、
include
ディレクトリをinclude_directories
に、
.a
があるディレクトリをlink_directories
に設定します。
target_link_libraries
で、link_directories
で指定したディレクトリにある
.a
ファイルを、必要な機能分指定します。
この時、libanalytics.a
は一番上に記載しないとエラーとなるため注意してください。
(参考) Errors when linking Firebase C++ (analytics) library
...
set(FB_CPP_SDK "${CMAKE_CURRENT_SOURCE_DIR}/<SubDirectory>/firebase_cpp_sdk")
include_directories(${FB_CPP_SDK}/include)
link_directories(${FB_CPP_SDK}/libs/android/${ANDROID_ABI}/c++)
..
# add lib dependencies
target_link_libraries(native-lib
...
libanalytics.a
libapp.a
libadmob.a
libmessaging.a
libauth.a
libdatabase.a
libinvites.a
libremote_config.a
libstorage.a
)
初期化コード
上記までの設定でリンクが通ったはずなので、C++のソースで初期化処理を記載します。
#include "firebase/app.h"
#include "firebase/analytics.h"
auto fbApp = firebase::App::Create(firebase::AppOptions(), env, activity);
firebase::analytics::Initialize(*fbApp);
AndroidはJNIのenv
、activity
を渡す必要があります。
env
はJNIEnv*
、activity
はJavaのActivityのjobject
です。
iOS
設定ファイル
iOSの場合はGoogleService-Info.plist
をFirebaseコンソールからダウンロードし、
プロジェクトに入れておきます。
iOS用frameworkの追加
iOS用のframeworkを追加します。
iOSのドキュメントを参照してください。
Firebase/Core
と、その他必要な機能のframeworkを入れます。
Podで入れるか、直接SDKをダウンロードしてプロジェクトに追加します。
SDKに含まれる、以下のframeworkも必要となります。
- FirebaseInstanceID.framework
- GoogleInterchangeUtilities.framework
- GoogleSymbolUtilities.framework
- GoogleToolboxForMac.framework
.frameworkのパスを、Framework Search Path
に設定するのを忘れないでください。
C++用frameworkの追加
C++用SDK内の、以下のframeworkファイルを、必要な機能の分追加します。
firebase_cpp_sdk/frameworks/ios/universal/*.framework
firebase.framework
、firebase_analytics.framework
は必須です。
Other Liker Flagsの設定
Other Liker Flags
に、-ObjC
を設定します。
初期化コード
iOSの場合は引数1つだけでOKです。
#include "firebase/app.h"
#include "firebase/analytics.h"
auto fbApp = firebase::App::Create(firebase::AppOptions());
firebase::analytics::Initialize(*fbApp);
以上です。
あとは各APIをC++から呼び出して使っていきます。