C++
Adkit for AD(X): C++¶
創建開發環境¶
Android¶
构建预构建的 Firebase 库和嵌入的 AdKit 源代码以使用 AdKit。推荐使用 Android Studio 3.0 及更高版本。
-
ExternalNativeBuild
- [案例 1] 使用 #ndk-build
// ‘Android.mk’ $(call import-add-path,$(LOCAL_PATH)/../../..) #設置安裝 HIVEAdKit 模組的路徑 $(call import-module, HIVEAdKit) #加載 HIVEAdKit 模組的配置 $(call import-module, HIVEAdKit/firebase_cpp_sdk) #加載 firebase_cpp_sdk 模組的預構建版本以使用 HIVEAdKit
- [案例 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 到 Project > Build Settings > Search Paths > Header Search Path。
-
在專案 > 建置設定 > 其他標誌中添加 -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++ 的獎勵視頻 API 與 Hive SDK,則發送日誌數據取決於實現的 RewardVideo API。日誌數據會發送到分析伺服器,並且此功能在 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 及更高版本的 SKAdNetwork AD(X) 列表。AdKitPostprocess 基于 2021 年 1 月 29 日的更新。别忘了检查最新的更新。
Unity 整合通知¶
-
按照以下程序在Unity 引擎 2019.4 或更高版本环境中同步ADXUnityPackage 1.10.0 或更高版本。
-
在 Unity 编辑器中,检查资产 > 外部依赖管理器 > iOS 解析器 > 设置 > 将 use_frameworks! 添加到 Podfile 和 静态链接框架,然后保存。
-
添加 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 以同步 ADXUnityPackage 1.10.3 或更高版本 在 Unity Engine 2019.4 或更高版本 环境下。
-
-
如果在 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