Android
Hive Adkit สำหรับ ADOP: Android¶
การติดตั้ง¶
- ดาวน์โหลด Adkit เวอร์ชันล่าสุดและแตกไฟล์ออก
- คัดลอกไฟล์ Adkit.gradle ไปยังเส้นทางของแอปโปรเจกต์
- เพิ่มเนื้อหาด้านล่างลงในไฟล์ build.gradle ของแอปโปรเจกต์
apply from: '(path to adkit.gradle file)/adkit.gradle'
dependencies {
// ...(코드 생략)
// Hive AdKit 라이브러리 추가
implementation "com.com2us.android:hive-adkit-adop:1.5.1"
}
การตั้งค่า¶
เพิ่มค่า AdMobId ในรูปแบบ ca-app-pub-XXXXX~YYYYY
และ ADOP APP_DOMAIN ในไฟล์ AndroidManifest.xml ที่สร้างขึ้นในโปรเจกต์ Android
Warning
ตั้งแต่เวอร์ชัน AdKit 1.5.1 เป็นต้นไป APP_KEY ที่เคยใช้จะถูกเปลี่ยนเป็น APP_DOMAIN ซึ่ง APP_DOMAIN จะไม่เข้ากันกับ APP_KEY เดิม ดังนั้นเพื่อทำการเริ่มต้น Hive AdKit คุณจะต้องขอรับ APP_DOMAIN ใหม่ สำหรับข้อมูลเกี่ยวกับ APP_DOMAIN กรุณาติดต่อทีมงานฝ่ายดำเนินงานของแผนกแพลตฟอร์ม TechLabs
<application>
…
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-XXXXX~YYYYY"/>
<meta-data
android:name="com.google.android.gms.ads.AD_MANAGER_APP"
android:value="true"/>
<meta-data
android:name="com.adop.sdk.APP_DOMAIN"
android:value="INSERT_YOUR_APP_DOMAIN"/>
…
</application>
การนำไปใช้¶
การตั้งค่า ADOP Proguard¶
หากคุณกำลังใช้ Proguard คุณต้องเพิ่มการตั้งค่า ADOP Proguard ด้านล่างนี้
-keep class com.adop.sdk.** { *; }
-keep class ad.helper.openbidding.** { *; }
-keep class com.adop.sdk.adapter.**{ *; }
-keepnames class * implements java.io.Serializable
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
private static final java.io.ObjectStreamField[] serialPersistentFields;
!static !transient <fields>;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}
-keepclassmembers class * {
@android.webkit.JavascriptInterface <methods>;
}
# Pangle
-keep class com.bytedance.sdk.** { *; }
-keep class com.bykv.vk.openvk.component.video.api.** { *; }
# Tapjoy
-keep class com.tapjoy.** { *; }
-keep class com.moat.** { *; }
-keepattributes JavascriptInterface
-keepattributes *Annotation*
-keep class * extends java.util.ListResourceBundle {
protected Object[][] getContents();
}
-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
public static final *** NULL;
}
-keepnames @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
@com.google.android.gms.common.annotation.KeepName *;
}
-keepnames class * implements android.os.Parcelable {
public static final ** CREATOR;
}
-keep class com.google.android.gms.ads.identifier.** { *; }
-dontwarn com.tapjoy.**
ADOP ทดสอบโฆษณา คีย์¶
ต้องใช้คีย์โฆษณาที่ออกโดย ADOP ไม่ใช่ AdMob
var bannerZoneId = "944fe870-fa3a-4d1b-9cc2-38e50b2aed43"
var interstitialZoneID = "e9acd7fc-a962-40e4-aaad-9feab1b4f821"
var rewardVideoZoneId = "7d9a2c9e-5755-4022-85f1-6d4fc79e4418"
var appOpenAdZoneId = "33906f96-dae8-4790-8ce4-d1f287ba00b2"
Hive AdKit การเริ่มต้น¶
Hive การเริ่มต้น AdKit จะทำให้ป๊อปอัปการยินยอม GDPR แสดงขึ้นโดยอัตโนมัติในกรณีที่อยู่ในภูมิภาคยุโรปและสหราชอาณาจักร (EEA & UK) ในภูมิภาคอื่นจะทำการเริ่มต้นทันที
- หากเกมมีเป้าหมายอยู่ในภูมิภาคยุโรปและสหราชอาณาจักร (EEA & UK) ให้ตรวจสอบว่าป๊อปอัปการยินยอม GDPR ได้ถูกตั้งค่าไว้ตาม คู่มือการสร้างข้อความ GDPR หรือไม่
import com.com2us.hive.adkit.*
// 상용
AdKit.InitializeWithShowGDPRConsent(this.activity, false, null) {
/*
동의 = 1, 비동의 = 0, 알수없음 = -1, 필요없음 = -2
초기화 완료 콜백으로 GDPR 동의 상태 결과 값 consentState가 전달됩니다. 결과값에 따른 별도 처리가 필요하지 않습니다.
*/
Log.d("HIVEAdKit", "InitializeWithShowGDPRConsent onComplete consentState : $it")
}
// GDPR EEA 테스트모드
AdKit.InitializeWithShowGDPRConsent(this.activity, true, gdprTestDeviceId) {
/*
동의 = 1, 비동의 = 0, 알수없음 = -1, 필요없음 = -2
초기화 완료 콜백으로 GDPR 동의 상태 결과 값 consentState가 전달됩니다. 결과값에 따른 별도 처리가 필요하지 않습니다.
*/
Log.d("HIVEAdKit", "InitializeWithShowGDPRConsent onComplete consentState : $it")
}
คุณสามารถรวมข้อมูลเพิ่มเติมของผู้ใช้ในช่วงเวลาที่เกิดบันทึกใน Analytics และส่งข้อมูลประเภท JSONObject
โฆษณาประเภท RewardVideo¶
โฆษณาที่มีรางวัลซึ่งจะมอบให้เมื่อดูเป็นเวลานานกว่าที่กำหนด สามารถโหลดโฆษณาได้เพียงหนึ่งรายการในแต่ละครั้ง
// RewardVideo Instance Create
var rewardVideo:RewardVideo? = null
rewardVideo = RewardVideo.Initialize(this.activity, rewardVideoZoneId, object : EventHandlers() {
override fun onAdLoaded() {}
override fun onAdOpening() {}
override fun onAdClosed() {}
override fun onAdFailed() {}
override fun onAdClick() {}
override fun onAdReward() {}
})
// RewardVideo Load
rewardVideo?.LoadAd("NativeRewardVideo-Load")
// RewardVideo Show
rewardVideo?.Show("NativeRewardVideo-Show")
สามารถส่งข้อมูลตำแหน่งโฆษณาได้ โดยส่งสตริงที่ตั้งค่าในช่วงเวลาที่ Load
สำเร็จและช่วงเวลาที่จะแสดงผ่าน Show
โฆษณาประเภท Interstitial¶
โฆษณาหน้าจอเต็มที่ครอบคลุมทั้งหน้าจอ
// Interstitial Instance Create
var interstitial:Interstitial? = null
interstitial = Interstitial.Initialize(this.activity, interstitialZoneId, object : EventHandlers() {
override fun onAdLoaded() {}
override fun onAdOpening() {}
override fun onAdClosed() {}
override fun onAdFailed() {}
override fun onAdClick() {}
})
// Interstitial Load
interstitial?.LoadAd("NativeInterstitial-Load")
// Interstitial Show
interstitial?.Show("NativeInterstitial-Show")
สามารถส่งข้อมูลตำแหน่งโฆษณาได้ รวมถึงข้อความที่ตั้งค่าในช่วงเวลาที่ Load
สำเร็จและช่วงเวลาที่จะแสดงผ่าน Show
โฆษณาประเภทแบนเนอร์แบบปรับตัว¶
เป็นแบนเนอร์เลื่อนที่ครอบคลุมบางส่วนของหน้าจอ คุณสามารถปรับตำแหน่งของแบนเนอร์ได้โดยการป้อนค่า BannerPosition หรือค่า yPos ที่เฉพาะเจาะจง เมื่อป้อนค่า yPos เพื่อปรับตำแหน่งของแบนเนอร์ ตำแหน่งของแบนเนอร์จะเคลื่อนที่ขึ้นไปตามค่าที่ระบุ yPos จากตำแหน่งที่จัดเรียงไว้ที่ด้านล่าง
// BannerPosition을 설정하는 예제입니다.
// Banner Instance Create
var adaptiveBanner: AdaptiveBanner? = null
// Create AdaptiveBanner Instance at Top of View
adaptiveBanner = AdaptiveBanner.Initialize(this.activity, bannerZoneId, AdaptiveBanner.BannerPosition.Top, object : EventHandlers() {
override fun onAdLoaded() {}
override fun onAdOpening() {}
override fun onAdClosed() {}
override fun onAdFailed() {}
override fun onAdClick() {}
})
// Create AdaptiveBanner Instance at Bottom of View
adaptiveBanner = AdaptiveBanner.Initialize(this.activity, bannerZoneId, AdaptiveBanner.BannerPosition.Bottom, object : EventHandlers() {
override fun onAdLoaded() {}
override fun onAdOpening() {}
override fun onAdClosed() {}
override fun onAdFailed() {}
override fun onAdClick() {}
})
// AdaptiveBanner Load & Automatic show
adaptiveBanner?.LoadAd("NativeAdaptiveBanner-Load")
// Destroy AdaptiveBanner
adaptiveBanner?.Destroy()
// yPos 값을 지정하여 사용하는 예제입니다.
// Banner Instance Create
var adaptiveBanner: AdaptiveBanner? = null
adaptiveBanner = AdaptiveBanner.Initialize(this.activity, bannerZoneId, yPos, object : EventHandlers() {
override fun onAdLoaded() {}
override fun onAdOpening() {}
override fun onAdClosed() {}
override fun onAdFailed() {}
override fun onAdClick() {}
})
// Banner Load
adaptiveBanner?.LoadAd("NativeAdaptiveBanner-Load")
// Banner Show
adaptiveBanner?.Show("NativeAdaptiveBanner-Show")
// Banner Hide
adaptiveBanner?.Hide()
// yPos 값에 따라 위치 변경
adaptiveBanner?.setPosition(yPos)
สามารถส่งข้อมูลตำแหน่งโฆษณาได้ รวมถึงข้อความที่ตั้งไว้ในช่วงเวลาที่ Load
สำเร็จและช่วงเวลาที่จะถูกแสดงผ่าน Show
โฆษณาประเภท AppOpen¶
โฆษณาเปิดแอปที่แสดงเมื่อสถานะแอปเปลี่ยนจากพื้นหลังไปยังพื้นหน้า
// Create AppOpenAd Instance
var appOpenAd: AppOpenAd? = null
appOpenAd = AppOpenAd.Initialize(this.activity, appOpenAdZoneId, object : EventHandlers() {
override fun onAdLoaded() {}
override fun onAdOpening() {}
override fun onAdClosed() {}
override fun onAdFailed() {}
})
// Automatically load & show AppOpenAd when the app comes to the foreground
appOpenAd?.LoadAd("NativeAppOpen-Load")
// Destroy AppOpenAd
appOpenAd?.Destroy()
โฆษณาทดสอบ¶
ในระหว่างการพัฒนา สิ่งสำคัญคือต้องตั้งค่าให้การคลิกโฆษณาทดสอบไม่ถูกเรียกเก็บเงินจากผู้โฆษณา หากคลิกโฆษณามากเกินไปในสถานะที่ไม่ใช่โหมดทดสอบ อาจทำให้บัญชีถูกรายงานว่าเป็นกิจกรรมที่ไม่ถูกต้องและการรับโฆษณาอาจถูกบล็อก วิธีการใช้โฆษณาทดสอบสามารถตรวจสอบได้ที่ เว็บไซต์นักพัฒนาของ Google。
การลบ¶
คืนค่าฟайлที่ตั้งค่าไว้ในระหว่างการติดตั้งกลับสู่สภาพเดิม