C++
Adkit for AD(X): C++¶
创建开发环境¶
安卓¶
构建 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) #加载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 添加到 项目 > 构建设置 > 搜索路径 > 头文件搜索路径。
-
在 项目 > 构建设置 > 其他标志 中添加 -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
```
特性¶
如果您使用 Hive SDK 的 AdKit C++ 中的奖励视频 API,则发送日志数据取决于实现的 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 Engine 2019.4或更高版本环境中同步ADXUnityPackage 1.10.0或更高版本。
-
在Unity编辑器中,检查Assets > External Dependency Manager > iOS Resolver > Settings > 将use_frameworks!添加到Podfile和静态链接框架,然后保存。
-
添加 OMSDK_Mopub.xcframework (Pods/mopub-ios-sdk/Frameworks/OMSDK_Mopub.xcframework) 在 iOS 项目 > 目标 > 构建阶段 > 嵌入框架.
-
添加 FBSDKCoreKit_Basics.xcframework (Pods/FBSDKCoreKit_Basics/XCFrameworks/FBSDKCoreKit_Basics.xcframework) 在 Targets > 构建阶段 > 嵌入框架 以同步 ADXUnityPackage 1.10.3 或更高版本 在 Unity 引擎 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