Cpp
AD(X)のためのAdkit: C++¶
開発環境の作成¶
Android¶
Prebuilt-Firebase-Libraryをビルドし、AdKitを使用するためにAdKitのソースコードを埋め込みます。Android Studio 3.0以降のバージョンを推奨します。
-
外部ネイティブビルド
- [ケース1] #ndk-buildの使用
// ‘Android.mk’ $(call import-add-path,$(LOCAL_PATH)/../../..) #HIVEAdKitモジュールをインストールするためのパス設定 $(call import-module, HIVEAdKit) #HIVEAdKitモジュールの設定を読み込む $(call import-module, HIVEAdKit/firebase_cpp_sdk) #HIVEAdKitを使用するためにfirebase_cpp_sdkモジュールのプリビルド版を読み込む- [ケース2] #cmakeを使用する
-
build.gradleファイルに以下を追加します。
android { ... sourceSets.main { java.srcDirs "src" , "../../HIVEAdKit/Android/java" // HIVEAdKit JavaPlugin Source Path } ... } gradle.ext.firebase_cpp_sdk_dir = "../HIVEAdKit/firebase_cpp_sdk" // HIVEAdKit/firebase_cpp_sdk パスを設定 apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle" firebaseCpp.dependencies { admob } -
AD(X)またはADOPをAdMob-AdManagerサービスと共に使用する場合は、AndroidManifest.xmlファイルに以下を追加してください。
-
AD(X)を使用する場合は、build.gradleファイルに以下を追加してください。
iOS¶
この機能を使用するには、Firebase-Frameworkと含まれているAdKitのソースコードをビルドします。
-
HIVEAdKit/src と HIVEAdKit/include フォルダーを XCode プロジェクトにドラッグアンドドロップします。
- .cpp、.hpp、.mm 拡張子のすべてのファイルを含めます。
- AdKit は実際の使用のためのブリッジパターンコードを提供します。
-
HIVEAdKit/firebase_cpp_sdk/frameworks/ios/universal を プロジェクト > ビルド設定 > 検索パス > フレームワーク検索パス に追加します。
-
HIVEAdKit/firebase_cpp_sdk/includeをプロジェクト > ビルド設定 > 検索パス > ヘッダー検索パスに追加します。
-
プロジェクト > ビルド設定 > その他のフラグに-framework "firebase"と-framework "firebase_admob"を追加します。
-
CocoaPodsの設定に以下を追加します。
-
AD(X)を使用する場合は、CocoaPodsの設定に以下を追加してください。
-
XcodeからiOSの最新SDKをダウンロードするには、次のコマンドを実行する必要があります。
AdMobのテスト広告のキーは、以下の例で設定されています。
```
#if defined(ANDROID)
const char* appId = "ca-app-pub-3940256099942544~3347511713";
const char* rewardVideoUnitId = "ca-app-pub-3940256099942544/5224354917";
const char* InterstitialAdUnitId = "ca-app-pub-3940256099942544/1033173712";
const char* AdaptiveBannerAdUnitId = "ca-app-pub-3940256099942544/6300978111";
#else // iOS
const char* appId = "ca-app-pub-3940256099942544~1458002511";
const char* rewardVideoUnitId = "ca-app-pub-3940256099942544/1712485313";
const char* InterstitialAdUnitId = "ca-app-pub-3940256099942544/4411468910";
const char* AdaptiveBannerAdUnitId = "ca-app-pub-3940256099942544/2934735716";
#endif
```
機能¶
AdKit C++のReward Video APIをHive SDKと一緒に使用する場合、ログデータの送信は実装されたRewardVideo APIに依存します。ログデータはAnalyticsサーバーに送信され、この機能はHive SDKの以下のバージョン以降で利用可能です。Hive SDKが初期化されていないか存在しない場合は機能しません。
- Hive SDK v4.11.0
AdKitの使い方は以下の通りです。
AdMobの初期化¶
初期化、読み込み、すべてのタイプの広告(AD)を表示する前に必要なステップ
//App ID, API key, and Project ID must be specified in App options.
firebase::AppOptions appOptions = firebase::AppOptions();
#ifdef __ANDROID__
// Android Only
appOptions.set_app_id("331526026701");
appOptions.set_api_key("AIzaSyAxOUz9NQtpZZD_XvfD5L7V1dZZ96tYwZ8");//
appOptions.set_project_id("core-cocos-test");
#endif
firebase::InitResult result = HIVEAdKit::AdMobInitialize(appOptions);
if(result == firebase::kInitResultSuccess) {
// AdMob initialization successful
}
報酬タイプ¶
// Initialize
auto rewardVideo = HIVEAdKit::RewardVideo::Initialize(rewardVideoUnitId, this, getAdMobViewParent(),
[=](const firebase::Future< void >& completed_future) {
if (completed_future.error() == 0) {
// Initiallized successfully
}
});
// Load
// Send AD loading information to Analytics
std::string adPlacement = "CocosCPP-RewardVideo-Load-AdditionalInfo";
firebase::admob::AdRequest my_ad_request = {};
HIVEAdKit::RewardVideo::Load(*rewardVideo, my_ad_request, adPlacement,
[=](const firebase::Future< void >& completed_future) {
if (completed_future.error() == 0) {
// Loaded successfully
}
});
// Show
// Send AD loading information to Analytics
std::string adPlacement = "CocosCPP-RewardVideo-Show-AdditionalInfo";
HIVEAdKit::RewardVideo::Show(*rewardVideo, adPlacement,
[=](const firebase::Future< void >& completed_future) {
if (completed_future.error() == 0) {
// Shown successfully
}
});
インタースティシャルタイプ¶
// Initialize
auto interstitial = HIVEAdKit::Interstitial::Initialize(InterstitialAdUnitId, this, getAdMobViewParent(),
[=](const firebase::Future< void >& completed_future) {
if (completed_future.error() == 0) {
// Initiallized successfully
}
});
// Load
// Send AD loading information to Analytics
std::string adPlacement = "CocosCPP-Interstitial-Load-AdditionalInfo";
firebase::admob::AdRequest my_ad_request = {};
HIVEAdKit::Interstitial::Load(*interstitial, my_ad_request, adPlacement,
[=](const firebase::Future< void >& completed_future) {
if (completed_future.error() == 0) {
// Loaded successfully
}
});
// Show
// Send AD loading information to Analytics
std::string adPlacement = "CocosCPP-Interstitial-Show-AdditionalInfo";
HIVEAdKit::Interstitial::Show(*interstitial, adPlacement,
[=](const firebase::Future< void >& completed_future) {
if (completed_future.error() == 0) {
// Shown successfully
}
});
アダプティブバナータイプ¶
// Initialize
auto adaptiveBanner = HIVEAdKit::AdaptiveBanner::Initialize(AdaptiveBannerAdUnitId,
this,
getAdMobViewParent(),
banner_ad_size,
bannerPosition,
[=](const firebase::Future< void >& completed_future) {
if (completed_future.error() == 0) {
// Initialized successfully
}
});
// Set banner position
HIVEAdKit::AdaptiveBanner::SetPosition(*adaptiveBanner, bannerPosition, [=](const firebase::Future< void >& completed_future) {
});
// Load
// Send AD loading information to Analytics
std::string adPlacement = "CocosCPP-AdaptiveBanner-Load-AdditionalInfo";
firebase::admob::AdRequest my_ad_request = {};
HIVEAdKit::AdaptiveBanner::Load(*adaptiveBanner, my_ad_request, adPlacement,
[=](const firebase::Future< void >& completed_future) {
if (completed_future.error() == 0) {
// Loaded successfully
}
});
// Show
// Send AD loading information to Analytics
std::string adPlacement = "CocosCPP-AdaptiveBanner-Show-AdditionalInfo";
HIVEAdKit::AdaptiveBanner::Show(*adaptiveBanner, adPlacement,
[=](const firebase::Future< void >& completed_future) {
if (completed_future.error() == 0) {
// Shown successfully
}
});
// Hide
HIVEAdKit::AdaptiveBanner::Hide(*adaptiveBanner,
[=](const firebase::Future< void >& completed_future) {
if (completed_future.error() == 0) {
// Hidden successfully
}
});
iOS 14のサポート¶
以下は、iOS 14およびそれ以降のバージョンをサポートするためのAD(X)のSKAdNetworkリストです。AdKitPostprocessは2021年1月29日の更新に基づいています。最新の更新を確認するのを忘れないでください。
Unity統合通知¶
-
以下の手順に従って、Unity Engine 2019.4 以上の環境でADXUnityPackage 1.10.0 以上を同期します。
-
Unityエディタで、Assets > External Dependency Manager > iOS Resolver > Settings > Podfileにuse_frameworks!を追加およびフレームワークを静的にリンクをチェックし、保存します。

-
追加OMSDK_Mopub.xcframework (Pods/mopub-ios-sdk/Frameworks/OMSDK_Mopub.xcframework) を iOS PROJECT > Targets > Build Phases > Embed Frameworksに追加します。

-
追加FBSDKCoreKit_Basics.xcframework (Pods/FBSDKCoreKit_Basics/XCFrameworks/FBSDKCoreKit_Basics.xcframework) を Targets > Build Phases > Embed Frameworks に追加して、Unity Engine 2019.4 以上 の環境下で ADXUnityPackage 1.10.3 以上 を同期します。

-
-
GoogleMobileAdsSettingsのApp IDが削除された場合は、Unity > Assets > Google Mobile Ads > **Settings**に移動し、**Delay app measurement**のチェックボックスを選択してから、再度クリアしてください。

問題の確認¶
Cocos2D-Xでゲームを開発する場合、Cocos2D-Xエンジン内のいくつかのFlatBuffersライブラリとFirebaseに埋め込まれたライブラリが重複しています。重複を防ぐために、FlatBuffersライブラリを含めないようにするか、Firebaseが提供するオープンソースライブラリを直接ビルドしてください。Firebaseには以下のライブラリが含まれています。ライブラリが重複によりクラッシュする場合は、プロジェクトを手動でビルドするためにFirebaseオープンソースライブラリを使用してください。
- Curl
- FlatBuffers
- libuv
- Nanopb
- uWebSockets
- Zlib