C++
Adkit สำหรับ AD(X): C++¶
การสร้างสภาพแวดล้อมการพัฒนา¶
Android¶
สร้าง Prebuilt-Firebase-Library และฝัง AdKit SourceCode เพื่อใช้ 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
// 'CMakeList.txt' set(HIVEADKIT_DIR_PATH ....../HIVEAdKit) #Path setup to install HIVEAdKit module #Import HIVEAdKit library after add_library (MyGame ...) add_subdirectory(${HIVEADKIT_DIR_PATH}) #HIVEAdKit library & macro load use_hiveadkit_prebuilt(${HIVEADKIT_DIR_PATH} MyGame) #Import the library import automatic macro to build target
-
เพิ่มสิ่งต่อไปนี้ลงในไฟล์ 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 Path 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 ไปที่ Project > Build Settings > Search Paths > Framework Search Path.
-
เพิ่ม HIVEAdKit/firebase_cpp_sdk/include ไปที่ Project > Build Settings > Search Paths > Header Search Path.
-
เพิ่ม -framework "firebase" และ -framework "firebase_admob" ไปที่ Project > Build Settings > Other Flags.
-
เพิ่มสิ่งต่อไปนี้ในการตั้งค่า CocoaPods.
-
ในกรณีที่ใช้ AD(X) ให้เพิ่มสิ่งต่อไปนี้ในการตั้งค่า CocoaPods
-
เพื่อดาวน์โหลด SDK ล่าสุดของ iOS จาก Xcode คุณต้องดำเนินการตามคำสั่งต่อไปนี้
คีย์สำหรับโฆษณาทดสอบใน 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
```
คุณสมบัติ¶
หากคุณใช้ Reward Video API จาก AdKit C++ กับ 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¶
ต่อไปนี้คือรายการ SKAdNetwork ของ AD(X) สำหรับการสนับสนุน iOS 14 และเวอร์ชันที่ใหม่กว่า AdKitPostprocess อิงจากการอัปเดตเมื่อวันที่ 29 มกราคม 2021 อย่าลืมตรวจสอบการอัปเดตล่าสุด
- การอัปเดต SKAdNetwork
การแจ้งเตือนการรวม Unity¶
-
ปฏิบัติตามขั้นตอนด้านล่างเพื่อซิงค์ ADXUnityPackage 1.10.0 หรือสูงกว่า ภายใต้สภาพแวดล้อม Unity Engine 2019.4 หรือสูงกว่า.
-
ใน Unity editor ให้ตรวจสอบที่ Assets > External Dependency Manager > iOS Resolver > Settings > Add use_frameworks! to Podfile และ Link frameworks statically จากนั้นบันทึกมัน.
-
เพิ่ม 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 หรือสูงกว่า.
-
-
หาก App ID ใน GoogleMobileAdsSettings ถูกลบออก ให้ไปที่ Unity > Assets > Google Mobile Ads > Settings และเลือกช่องทำเครื่องหมาย Delay app measurement จากนั้นให้ลบออกอีกครั้ง.
ตรวจสอบปัญหา¶
หากคุณพัฒนาเกมของคุณด้วย Cocos2D-X ไลบรารีบางส่วนของ FlatBuffers ในเอนจิน Cocos2D-X และไลบรารีที่ฝังใน Firebase จะซ้ำกัน เพื่อป้องกันการซ้ำซ้อน ให้พยายามไม่รวมไลบรารี FlatBuffers หรือสร้างไลบรารีโอเพนซอร์สที่ Firebase จัดเตรียมไว้โดยตรง Firebase รวมไลบรารีด้านล่างนี้ หากไลบรารีล่มเนื่องจากการซ้ำซ้อน ให้ใช้ Firebase open-source libraries เพื่อสร้างโปรเจกต์ของคุณด้วยตนเอง
- Curl
- FlatBuffers
- libuv
- Nanopb
- uWebSockets
- Zlib