C++ プロジェクトに Firebase を追加する
iOS 向け Firebase および Android 向け Firebase 上に C++ インターフェースを提供する Firebase C++ SDK を使用して、C++ ゲームをパワーアップしましょう。
プラットフォーム固有のコードを記述することなく、C++ コードのみで Firebase にアクセスできます。また、Firebase で使用される多くの言語固有のイディオムも、Firebase SDK によって C++ デベロッパーになじみのあるインターフェースに変換されます。
Firebase でゲームをパワーアップする方法の詳細については、Firebase のゲームのページをご覧ください。
ステップ 1: 環境を設定する
Xcode 9.4.1 以降をインストールします。
CocoaPods 1.4.0 以降をインストールします。
Xcode で C++ プロジェクトを開きます。
- アプリのターゲットは iOS 8 以降に設定してください。
アプリを実行するためのデバイスまたはエミュレータを設定します。
- Cloud Messaging を使用する場合は、以下のものが必要となります。
- 実物の iOS デバイス
- プッシュ通知を有効にした APNs 証明書
- Cloud Messaging を使用する場合は、以下のものが必要となります。
Google アカウントを使用して Firebase にログインします。
ステップ 2: Firebase プロジェクトを作成する
C++ プロジェクトに接続する Firebase プロジェクトを作成して、Firebase に C++ プロジェクトを追加できるようにします。Firebase プロジェクトの詳細については、Firebase プロジェクトについて理解するをご覧ください。
ステップ 3: アプリを Firebase に登録する
Firebase プロジェクトに接続するアプリを登録します。複数のアプリを登録することも可能です。
Firebase プロジェクトにアプリを追加するベスト プラクティス、考慮事項(複数のビルド バリエーションの扱い方など)の詳細については、Firebase プロジェクトについて理解するをご覧ください。
Firebase コンソールの [Project Overview] ページの中央にある iOS アイコンをクリックして設定ワークフローを起動します。
すでに Firebase プロジェクトにアプリを追加している場合は、[アプリを追加] をクリックするとプラットフォームのオプションが表示されます。
アプリのバンドル ID を [iOS バンドル ID] に入力します。
- XCode 内で開いたプロジェクトからバンドル ID を見つけます。左側にあるプロジェクト ナビゲータ内のトップにあるアプリを選択して [全般] タブを表示します。[バンドル ID] の値が iOS バンドル ID です(例:
com.yourcompany.ios-app-name
)。
- XCode 内で開いたプロジェクトからバンドル ID を見つけます。左側にあるプロジェクト ナビゲータ内のトップにあるアプリを選択して [全般] タブを表示します。[バンドル ID] の値が iOS バンドル ID です(例:
(省略可)設定ワークフローの指示に従って他のアプリ情報を入力します。
ニックネームは内部用の簡易的な ID であり、Firebase コンソールでのみ表示されます。
[アプリの登録] をクリックします。
ステップ 4: Firebase 構成ファイルを追加する
[Download GoogleService-Info.plist] をクリックして、Firebase iOS 構成ファイルを入手します。
- Firebase iOS 構成ファイルはいつでも再ダウンロードできます。
構成ファイルに
(2)
のような文字が追加されていないことを確認してください。
IDE で C++ プロジェクトを開き、構成ファイルを C++ プロジェクトのルートにドラッグします。
メッセージが表示されたら、構成ファイルをすべてのターゲットに追加するオプションを選択します。
Firebase コンソールでのセットアップ作業はこれで完了です。下記の Firebase C++ SDK を追加するに進んでください。
ステップ 5: Firebase C++ SDK を追加する
このセクションの手順は、サポートされている Firebase プロダクトを Firebase C++ プロジェクトに追加する方法の一例です。この例では、Firebase 向け Google アナリティクスを追加する方法を示します。
Firebase 向け Google アナリティクスを C++ プロジェクトに追加することは任意ですが、追加すると、Firebase とアプリが正常に動作していることの確認が比較的容易になります。また、アナリティクスは開発やデバッグだけでなく、本番環境用アプリの正常性を追跡するのにも非常に役立ちます。
Firebase C++ SDK をダウンロードし、適切な場所で解凍します。
Firebase C++ SDK は特定のプラットフォームを必要としませんが、プラットフォーム固有のライブラリが複数収録されています。
解凍した SDK から、Firebase ポッドを追加します。
Podfile がない場合は作成します。
cd your-app-directory
pod init
使用したい Firebase プロダクトのポッドを、Podfile に追加します。アナリティクスの場合は、次のコマンドを実行します。
pod 'Firebase/Analytics', '5.12.0'
ポッドをインストールし、Xcode で
.xcworkspace
ファイルを開きます。pod install
open your-app.xcworkspace
解凍した SDK から Firebase フレームワークを追加します。
通常は、
Finder
ウィンドウから Xcode のプロジェクト ナビゲータ ペイン(デフォルトでは一番左側のペイン。Xcode の左上にあるファイル アイコンのクリックでも表示できます)に直接するドラッグする方法が、最も簡単です。Firebase プロダクトの使用に必要なコア Firebase フレームワーク(
firebase.framework
)を追加します。使用する各 Firebase プロダクト用のフレームワークを追加します。アナリティクスの場合は、
firebase_analytics.framework
を追加します。
Firebase コンソールの設定ワークフローに戻り、[次へ] をクリックします。
アプリを実行して、Firebase の統合に成功したという認証を Firebase に送信します。
デバイスログには、初期化が完了したという Firebase の認証が表示されます。ネットワークにアクセスできるエミュレータでアプリを実行した場合、Firebase コンソールでアプリの接続が完了したことが通知されます。
これで設定は完了です。C++ アプリは Firebase プロダクトを使用するように登録され、構成されました。
使用可能なライブラリ
C++ Firebase ライブラリの詳細については、リファレンス ドキュメントと GitHub のオープンソース SDK リリースをご覧ください。
iOS で使用可能なライブラリ
Android 用の C++ ライブラリは、この設定ページの Android バージョンで確認できます。
Firebase プロダクトでは、依存関係がそれぞれ異なります。必要な Firebase プロダクトについて、リストに記されているすべての依存関係を Podfile と C++ プロジェクトへ追加してください。
Firebase プロダクト | フレームワークとポッド |
---|---|
Firebase core(必須) |
firebase.framework pod 'Firebase/Analytics', '6.1.0' |
AdMob |
firebase.framework firebase_admob.framework pod 'Firebase/Analytics', '6.1.0' pod 'Firebase/AdMob', '6.1.0' |
アナリティクス |
firebase.framework firebase_analytics.framework pod 'Firebase/Analytics', '6.1.0' |
Authentication |
firebase.framework firebase_auth.framework pod 'Firebase/Analytics', '6.1.0' pod 'Firebase/Auth', '6.1.0' |
Cloud Functions |
firebase.framework firebase_functions.framework pod 'Firebase/Analytics', '6.1.0' pod 'Firebase/Functions', '6.1.0' |
Cloud Messaging |
firebase.framework firebase_messaging.framework pod 'Firebase/Analytics', '6.1.0' pod 'Firebase/Messaging', '6.1.0' |
Cloud Storage |
firebase.framework firebase_storage.framework pod 'Firebase/Analytics', '6.1.0' pod 'Firebase/Storage', '6.1.0' |
Dynamic Links |
firebase.framework firebase_dynamic_links.framework pod 'Firebase/Analytics', '6.1.0' pod 'Firebase/DynamicLinks', '6.1.0' |
Realtime Database |
firebase.framework firebase_database.framework pod 'Firebase/Analytics', '6.1.0' pod 'Firebase/Database', '6.1.0' |
Remote Config |
firebase.framework firebase_remote_config.framework pod 'Firebase/Analytics', '6.1.0' pod 'Firebase/RemoteConfig', '6.1.0' |
モバイル設定に関するその他の情報
メソッドの実装入れ替え
iOS では、特定のメソッドを実装するためにアプリケーション デリゲートを必要とするアプリケーション イベント(URL を開く、通知を受信するなど)があります。たとえば、通知を受信するには、application:didReceiveRemoteNotification:
を実装するためのアプリケーション デリゲートが必要になる場合があります。iOS アプリケーションにはそれぞれ独自のアプリ デリゲートがあるため、Firebase はメソッドの実装入れ替えを使用します。これを使用することで、あるメソッドを別のメソッドと置き換えて、実装した任意のハンドラに加えて独自のハンドラをアタッチできます。
Firebase Invites、Dynamic Links、Cloud Messaging ライブラリは、メソッドの実装入れ替えを使用してアプリケーション デリゲートにハンドラをアタッチする必要があります。これらの Firebase プロダクトのうちいずれかを使用している場合、読み込みの際に Firebase は AppDelegate
クラスを識別し、そのクラスに必要なメソッドを入れ替え、コールバックを既存のメソッド実装に連結します。
デスクトップ ワークフローを設定する(ベータ版)
ゲームを作成する場合、通常はまずデスクトップ プラットフォームでゲームをテストしてから、開発中のモバイル デバイスにデプロイしてテストする方が簡単になります。このワークフローをサポートするために、Windows、OS X、Linux、および C++ エディタ内で実行できる Firebase C++ のサブセットが用意されています。
デスクトップでのワークフローとして、次の作業を実施します。
- CMake 用に C++ プロジェクトを構成する
- Firebase プロジェクトを作成する
- アプリ(iOS や Android)を Firebase に登録する
- モバイル プラットフォーム用 Firebase 構成ファイルを追加する
デスクトップ版の Firebase 構成ファイルを作成します。
Android
google-services.json
ファイルを追加した場合 - アプリの起動時に、Firebase がモバイル用ファイルの場所を特定し、デスクトップ用の Firebase 構成ファイル(google-services-desktop.json
)を自動的に生成します。iOS
GoogleService-Info.plist
ファイルを追加した場合 - アプリの起動前に、モバイル用のファイルをデスクトップ用の Firebase 構成ファイルに変換する必要があります。ファイルを変換するには、GoogleService-Info.plist
ファイルと同じディレクトリで以下のコマンドを実行してください。generate_xml_from_google_services_json.py --plist -i GoogleService-Info.plist
このデスクトップ構成ファイルには、Firebase コンソールの設定ワークフローで入力した C++ プロジェクト ID が含まれています。構成ファイルの詳細については、Firebase プロジェクトについて理解するをご覧ください。
Firebase SDK を C++ プロジェクトに追加します。
以下の手順は、サポートされている Firebase プロダクトを C++ プロジェクトに追加する方法の一例です。この例では、Firebase 向け Google アナリティクスを追加する方法を示します。
解凍した Firebase C++ SDK の場所を
FIREBASE_CPP_SDK_DIR
環境変数に設定します。プロジェクトの
CMakeLists.txt
ファイルに、使用する Firebase プロダクトのライブラリを含む、以下の内容を追加します。たとえば、アナリティクスの場合は次のようになります。# 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}")
C++ アプリを実行します。
使用可能なライブラリ(デスクトップ)
Firebase C++ SDK には機能のサブセットに対するデスクトップ ワークフローのサポートが含まれているため、Firebase の特定の部分を Windows、OS X、Linux のスタンドアロン デスクトップ ビルドで使用できます。
Firebase プロダクト | ライブラリ リファレンス(CMake を使用した場合) |
---|---|
Firebase core(必須) | firebase_app |
Authentication | firebase_auth |
Cloud Functions | firebase_functions |
Cloud Storage | firebase_storage |
Realtime Database | firebase_database |
Remote Config | firebase_remote_config |
Firebase では残りのデスクトップ ライブラリはスタブ(非機能的)実装であり、Windows、OS X、Linux 向けのビルドを便利にするために提供されています。このため、デスクトップを対象としてコードを条件付きでコンパイルする必要はありません。
Realtime Database デスクトップ
Realtime Database Desktop SDK では、データベースに対するアクセスに REST が利用されます。このため、デスクトップで Query::OrderByChild()
を使って、使用するインデックスを宣言する必要があります。宣言がないとリスナーは動作しません。
デスクトップ設定に関するその他の情報
Windows のライブラリ
Windows の場合、以下の事項に対応するライブラリ バージョンが用意されています。
- ビルド プラットフォーム: 32 ビット(x86)モード、64 ビット(x64)モード
- Windows のランタイム環境: マルチスレッド / MT、マルチスレッド DLL / MD
- ターゲット: リリース、デバッグ
以下のライブラリは、Visual Studio 2015 および 2017 を使用してテストされている点に留意してください。
Windows で C++ デスクトップ アプリをビルドする際は、以下の Windows SDK ライブラリをプロジェクトにリンクしてください。詳しくは、コンパイラのドキュメントを参照してください。
Firebase C++ ライブラリ | Windows SDK ライブラリの依存関係 |
---|---|
Authentication | advapi32, ws2_32, crypt32 |
Cloud Functions | advapi32, ws2_32, crypt32, rpcrt4, ole32 |
Cloud Storage | advapi32, ws2_32, crypt32 |
Realtime Database | advapi32, ws2_32, crypt32, iphlpapi, psapi, userenv |
Remote Config | advapi32, ws2_32, crypt32, rpcrt4, ole32 |
OS X のライブラリ
OS X(Darwin)の場合、用意されているライブラリ バージョンは 64 ビット(x86_64)プラットフォームに対応したものになります。利便性のためにフレームワークも用意されています。
これらの OS X ライブラリは Xcode 9.4.1 を使ってテストされている点に留意してください。
OS X で C++ デスクトップ アプリをビルドする際は、プロジェクトに以下をリンクしてください:
pthread
システム ライブラリCoreFoundation
OS X システム フレームワークFoundation
OS X システム フレームワークSecurity
OS X システム フレームワーク
詳しくは、コンパイラのドキュメントを参照してください。
Linux のライブラリ
Linux の場合、32 ビット(i386)および 64 ビット(x86_64)のプラットフォームに対応するバージョンのライブラリが用意されています。
これらの Linux ライブラリは、GCC 4.8.0、GCC 7.2.0、および Clang 5.0 を使用し Ubuntu 上でテストされていることに留意してください。
Linux で C++ デスクトップ アプリをビルドする際は、プロジェクトに pthread
システム ライブラリをリンクしてください。詳しくは、コンパイラのドキュメントを参照してください。GCC 5 以降でビルドする場合は、-D_GLIBCXX_USE_CXX11_ABI=0
を定義してください。
次のステップ
Firebase アプリのサンプルを確認する。
GitHub のオープンソース SDK を確認する。
アプリを起動する準備する。
- 請求アラートを設定する。
- Firebase リリース チェックリストを確認する。