Unity
Adiz Unity¶
Adiz Unity เป็นโมดูลโฆษณาสำหรับ Unity ที่ Hive จัดเตรียมไว้เพื่อให้สามารถใช้ฟังก์ชันการแสดงโฆษณาที่ AdMob มีให้ได้อย่างสะดวกยิ่งขึ้น รูปแบบโฆษณาที่ Adiz Unity มีให้บริการมีดังนี้
- โฆษณาเต็มหน้า (Interstitial)
- โฆษณาแบนเนอร์ (Banner)
- โฆษณาเนทีฟ (Native)
- โฆษณาแบบมีรางวัล (Rewarded)
- โฆษณาเต็มหน้าที่มีรางวัล (Rewarded Interstitial)
- โฆษณาเปิดแอป (AppOpen)
โปรดอ้างอิงตามคำแนะนำด้านล่างเพื่อทำการติดตั้งและใช้งาน Adiz Unity
การติดตั้งหรืออัปเดต¶
- ตั้งค่า Adiz Unity development environment.
- ดาวน์โหลดเวอร์ชันล่าสุดของ Adiz และแตกไฟล์.
- ใน Unity ให้เลือกไฟล์ .unitypackage ที่ Assets > Import Package > Custom Package… และคลิก Import.
- ตรวจสอบว่าไฟล์และโฟลเดอร์ Adiz ถูกสร้างขึ้นภายใต้โฟลเดอร์ Assets หรือไม่.
- ดาวน์โหลดและติดตั้งเวอร์ชันล่าสุดของ EDM4U. Hive SDK v4 รวม EDM4U อยู่ด้วย หากคุณใช้ Hive SDK v4 จะไม่จำเป็นต้องติดตั้ง EDM4U แยกต่างหาก.
หากต้องการอัปเดตเวอร์ชัน Adiz ที่กำลังใช้งานอยู่ ให้ลบ Adiz ออก และดาวน์โหลดเวอร์ชันล่าสุดแล้วติดตั้ง
การตั้งค่า Unity¶
Android¶
โปรดเพิ่มค่า AdMobId
ในรูปแบบ ca-app-pub-XXXXX~YYYYY ในไฟล์ Assets/Plugins/Android/AndroidManifest.xml ที่สร้างขึ้นในโปรเจกต์ Unity
<manifest>
<application>
<!-- Sample AdMob app ID: ca-app-pub-3940256099942544~3347511713 -->
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
</application>
</manifest>
ต้องเปิดใช้งานการเร่งฮาร์ดแวร์เพื่อแสดงโฆษณาวิดีโอ เพิ่มการตั้งค่าสำหรับการเร่งฮาร์ดแวร์ในไฟล์ AndroidManifest.xml หากเพิ่มในแท็ก application
จะใช้การเร่งฮาร์ดแวร์สำหรับแอปพลิเคชันทั้งหมด หากเพิ่มในแท็ก activity
จะใช้การเร่งฮาร์ดแวร์เฉพาะสำหรับ Activity
ที่ต้องการแสดงโฆษณา
<application android:hardwareAccelerated="true">
<!-- For activities that use ads, hardwareAcceleration should be true. -->
<activity android:hardwareAccelerated="true" />
</application>
ใน Unity의 Android Resolver Settings(Assets > External Dependency Manager > Android Resolver > Settings) ให้ทำการติ๊กที่ Use Jetifier.
การตั้งค่าเกม > ผู้เล่น > สร้าง ในหน้าจอการตั้งค่าจะมีให้เลือก 4 รายการด้านล่างนี้
เมื่อใช้ Proguard โมดูล Adiz จะรวมกฎ ProGuard ไว้ด้วย ดังนั้นจึงไม่จำเป็นต้องเพิ่มกฎ ProGuard ลงในโครงการ
iOS¶
ใน Assets > External Dependency Manager > iOS Resolver > Settings ให้ยกเลิกการตั้งค่า static_framework
บิลด์
เปิดไฟล์ Podfile ที่สร้างขึ้นระหว่างการสร้าง Unity และจัดรูปแบบตามด้านล่าง
source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/Com2uSPlatformCorp/HiveAdiz-iOS.git'
platform :ios, '12.0'
target 'UnityFramework' do
pod 'HiveAdizUnityPlugin', '2.1.0
end
target 'Unity-iPhone' do
end
use_frameworks!
# แก้ไขปัญหา dyld ใน pods เมื่อใช้ Project
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
# ปัญหา Toolchain xcode 15
xcconfig_path = config.base_configuration_reference.real_path
xcconfig = File.read(xcconfig_path)
xcconfig_mod = xcconfig.gsub(/DT_TOOLCHAIN_DIR/, "TOOLCHAIN_DIR")
File.open(xcconfig_path, "w") { |file| file << xcconfig_mod }
# สิ้นสุด
config.build_settings["BUILD_LIBRARY_FOR_DISTRIBUTION"] = "YES"
if config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'].to_f < 12.0
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'
end
end
end
end
ในไฟล์ Info.plist ของโปรเจกต์ Xcode ที่สร้างขึ้นเมื่อทำการสร้าง Unity ให้เพิ่มคีย์ GADApplicationIdentifier
ตามด้านล่าง และใส่ค่า AdMobId
(ในรูปแบบ ca-app-pub-XXXXX~YYYYY) เป็นค่าของคีย์ หากต้องการสามารถยกเลิกการคอมเมนต์ในบรรทัดการตั้งค่า GADApplicationIdentifier
ภายในไฟล์ Assets/HiveAdiz/Editor/AdizPostProcess.cs และเพิ่ม AdMobId
จะถูกตั้งค่าโดยอัตโนมัติ
นอกจากนี้ ใน iOS 14 ขึ้นไป ให้ดูที่ Update your info.plist เพื่อเพิ่มรายการ SKAdNetwork
ลงในไฟล์ Info.plist ไฟล์ Assets/HiveAdiz/Editor/AdizPostProcess.cs จะถูกใช้เพื่อเพิ่มลงในไฟล์ Info.plist โดยอัตโนมัติในระหว่างการสร้าง
การตั้งค่าโฆษณาทดสอบ¶
Adiz สามารถแสดงโฆษณาทดสอบได้ 2 วิธี 1. เปิดโหมดทดสอบ: แสดงเฉพาะโฆษณาทดสอบที่ออกโดย AdMob 2. ลงทะเบียนอุปกรณ์ทดสอบแล้วแสดงโฆษณา: แสดงโฆษณาจริงเพื่อการทดสอบ โดยไม่ให้เกิดการเข้าชมที่ไม่ถูกต้อง และลงทะเบียนอุปกรณ์ที่จะทำการแสดงโฆษณาทดสอบ
เปิดใช้งานโหมดทดสอบ¶
ในระยะพัฒนาจะเปิดใช้งานโหมดทดสอบเพื่อไม่ให้เรียกเก็บเงินจากผู้โฆษณาเมื่อคลิกโฆษณาทดสอบ เมื่อเปิดใช้งานโหมดทดสอบจะมีการแสดงโฆษณาทดสอบเท่านั้น ในโหมดทดสอบไม่จำเป็นต้องป้อนคีย์โฆษณา AdMob ลงในคอนโซลเพื่อแสดงโฆษณาทดสอบ ในการเผยแพร่เชิงพาณิชย์จะปิดใช้งานโหมดทดสอบ.
วิธีเปิดโหมดทดสอบมี 2 วิธี
- ลงทะเบียนอุปกรณ์ทดสอบในคอนโซล ตั้งค่าเป็นโฆษณาสาธิต (แนะนำ):
โปรดดูเนื้อหาใน การจัดการอุปกรณ์ทดสอบ ในคู่มือคอนโซล - ใช้เมธอด
setTestMode()
ของคลาส Adiz:
โปรดดู โค้ดตัวอย่างด้านล่าง
Warning
หากคลิกโฆษณามากเกินไปในโหมดทดสอบในระหว่างการพัฒนา จะถือว่าเป็นการเข้าชมที่ไม่ถูกต้องและบัญชี AdMob อาจถูกแจ้งเตือนทำให้ไม่สามารถแสดงโฆษณาได้
การใช้เมธอด Adiz.SetTestMode()¶
using hiveAdiz; // เปิดใช้งานโหมดทดสอบ เมื่อต้องการเผยแพร่ในเชิงพาณิชย์ ให้คอมเมนต์บรรทัดด้านล่าง
Adiz.SetTestMode(true);
// เปิดใช้งานการบันทึกโมดูล Adiz การบันทึกควรใช้เฉพาะในโหมดทดสอบ เท่านั้น เมื่อต้องการเผยแพร่ในเชิงพาณิชย์ให้แสดงความคิดเห็นในบรรทัดด้านล่าง
Adiz.SetLogEnable(true);
การแสดงโฆษณาบนอุปกรณ์ทดสอบ¶
ในสถานการณ์ด้านล่างนี้ คุณต้องลงทะเบียนอุปกรณ์ทดสอบเพื่อแสดงโฆษณาทดสอบ
- Hive ลงทะเบียน AdMob โฆษณาในคอนโซลเพื่อทดสอบว่าคีย์ทำงานได้ดีหรือไม่
- หากต้องการเขียน GDPR ข้อความ และตรวจสอบว่าป๊อปอัปการยินยอม GDPR ทำงานได้ดีหรือไม่
- หากต้องการเรียกใช้ ตัวตรวจสอบโฆษณา เพื่อวิเคราะห์และดีบักคำขอโฆษณา
วิธีการแสดงโฆษณาบนอุปกรณ์ทดสอบมี 2 วิธี
-
ลงทะเบียนอุปกรณ์ทดสอบในคอนโซล ใช้ ID หน่วยโฆษณา (แนะนำ):
โปรดดูเนื้อหาใน การจัดการอุปกรณ์ทดสอบ ของคู่มือคอนโซล -
ใช้เมธอด
setTestDevice()
ของคลาส Adiz:
โปรดดู ตัวอย่างโค้ด ด้านล่าง
Note
หากคุณทำการทดสอบโดยไม่ลงทะเบียนอุปกรณ์ทดสอบและแสดงโฆษณาจริง จะถือว่าเป็นการเข้าชมที่ไม่ถูกต้องและอาจทำให้บัญชี AbMob ถูกระงับและไม่สามารถแสดงโฆษณาได้อีกต่อไป การลงทะเบียนอุปกรณ์ทดสอบจะทำให้มีการแสดง "Test Mode" หรือ "Test Ad" (โฆษณาเนทีฟ) ในขณะแสดงโฆษณา ในการจัดจำหน่ายเชิงพาณิชย์ คุณต้องปิดการใช้งานอุปกรณ์ทดสอบ
แบนเนอร์, โฆษณาหน้าแรก หรือโฆษณาแบบมีรางวัล
โฆษณาพื้นเมือง
การใช้เมธอด Adiz.setTestDevice()¶
ในการลงทะเบียนอุปกรณ์ทดสอบ คุณต้องตรวจสอบ ID อุปกรณ์ทดสอบก่อน ในสภาพแวดล้อม Android ของเอนจิน Unity ID อุปกรณ์ทดสอบ (ตัวอย่าง: 33BE2250B43518CCDA7DE426D04EE231
) สามารถตรวจสอบได้ด้วย 2 วิธีด้านล่าง
-
ตรวจสอบบันทึก Logcat หลังจากเรียกใช้
Adiz.Initialize()
: -
หลังจากเรียก
Adiz.Initialize()
ไม่ว่าจะเป็นประเภทโฆษณาใดก็ตาม ให้เรียกinitialize()
→load()
จากนั้นตรวจสอบบันทึก Logcat:
สามารถตรวจสอบ ID อุปกรณ์ทดสอบในสภาพแวดล้อม iOS ของเอนจิน Unity (ตัวอย่าง: B74F6468-1516-467C-99AD-CC5973C5DB52
) ได้ด้วย 2 วิธีดังต่อไปนี้
-
ตรวจสอบบันทึก Logcat หลังจากเรียกใช้
Adiz.Initialize()
: -
หลังจากเรียก
Adiz.Initialize()
ไม่ว่าจะเป็นประเภทโฆษณาใด ๆ ให้เรียกinitialize()
→load()
แล้วตรวจสอบบันทึก Logcat:
ตรวจสอบ ID อุปกรณ์ทดสอบ จากนั้นเพิ่มบรรทัด Adiz.setTestDevice(DEVICE_ID)
ก่อนที่จะเรียกใช้ Adiz.initialize
ในโค้ดการรีเซ็ต Adiz ที่มีอยู่ DEVICE_ID
ให้ใส่ ID อุปกรณ์ทดสอบที่คัดลอกมา
using hiveAdiz;
public void Initialize() {
// 테스트 디바이스 설정
Adiz.SetTestDevice("33BE2250B43518CCDA7DE426D04EE231");
Adiz.Initialize(new CommonHandlers.Builder()
.OnResult(InitResultCB)
.Build());
}
เครื่องมือการตรวจสอบโฆษณา¶
เครื่องมือการตรวจสอบโฆษณาคือเครื่องมือโอเวอร์เลย์ในแอปที่วิเคราะห์กระบวนการเรียกดูโฆษณาจริงในอุปกรณ์ทดสอบแบบเรียลไทม์หลังจากที่มีการร้องขอโฆษณา มันจะแจ้งเวลาที่ใช้ในการโหลดโฆษณา และหากการแสดงผลล้มเหลว มันจะแจ้งสาเหตุของความล้มเหลว นอกจากนี้ยังสามารถระบุเครือข่ายโฆษณาเฉพาะเพื่อยืนยันว่าโฆษณาแสดงผลได้ดีหรือไม่ และหากมีปัญหา สามารถทำการดีบักในระดับโค้ดได้ กระบวนการทั้งหมดนี้จะดำเนินการควบคู่ไปกับ UI การตรวจสอบโฆษณา รวมอยู่ใน Google Mobile Ads SDK Android 20.0.0 และ Google Mobile Ads SDK iOS 7.68.0 ขึ้นไป และสามารถใช้งานได้โดยการเรียก AdizDeveloperTool.OpenAdInspector
เพื่อใช้เครื่องมือทดสอบโฆษณา คุณต้องลงทะเบียน อุปกรณ์ทดสอบ
การตั้งค่า Adiz AppID¶
ตั้งค่า Adiz AppID ที่ลงทะเบียนใน AppCenter ของ Hive หากไม่ได้ตั้งค่า จะใช้ Package Name หรือ Bundle ID
Adiz.SetAppId(appId);
Hive การตั้งค่าเซิร์ฟเวอร์คอนโซล¶
ตั้งค่าเซิร์ฟเวอร์คอนโซล Hive ที่จะใช้ ค่าเริ่มต้นคือ REAL
แม้ว่าจะใช้เซิร์ฟเวอร์เชิงพาณิชย์ หากเปิดใช้งานโหมดทดสอบ จะมีการแสดงโฆษณาทดสอบเท่านั้น
- Hive เซิร์ฟเวอร์คอนโซลทดสอบ:
ZoneType.TEST
- Hive เซิร์ฟเวอร์คอนโซลแซนด์บ็อกซ์:
ZoneType.SANDBOX
- Hive เซิร์ฟเวอร์คอนโซลเชิงพาณิชย์:
ZoneType.REAL
ZoneType selectZone = ZoneType.REAL;
Adiz.SetZone((int)selectZone);
การแสดงโฆษณาที่ปรับให้เหมาะกับผู้ใช้¶
การนำเสนอ ATT (App Tracking Transparency) ใน iOS 14.5+ ได้เสริมสร้างความเป็นส่วนตัวของข้อมูล ดังนั้น หากผู้ใช้ยอมรับการติดตามกิจกรรมในป๊อปอัปการยินยอม ATT จะสามารถแสดงโฆษณาที่ปรับให้เหมาะกับผู้ใช้ได้เท่านั้น เพื่อเพิ่มรายได้จากโฆษณาให้สูงสุด จำเป็นต้องเขียนข้อความ IDFA (Identifier for Advertisers)
AdMob แนะนำให้คุณเขียนข้อความตามคำแนะนำ IDFA ด้านล่างในแดชบอร์ดและเผยแพร่ข้อความนั้น
เมื่อโพสต์ข้อความ IDFA บนแดชบอร์ด AdMob ข้อความ IDFA จะถูกแสดงโดยอัตโนมัติเมื่อเริ่มต้น Adiz บน iOS 14.5+ เมื่อผู้ใช้คลิก "ดำเนินการต่อ" ในหน้าต่างข้อความ IDFA จะมีการแสดงป๊อปอัปการยินยอม ATT
เมื่อผู้ใช้คลิก "อนุญาต" ในป๊อปอัปการยินยอม ATT IDFA จะถูกเปิดใช้งานและโฆษณาที่ปรับให้เหมาะกับผู้ใช้จะถูกแสดง
Note
ผู้ใช้ที่เข้าถึงจากยุโรปและสหราชอาณาจักรจะเห็นป๊อปอัปการยินยอม GDPR หากผู้ใช้ไม่เคยยินยอมในรายการ GDPR ป๊อปอัปการยินยอม GDPR จะปรากฏขึ้นและจะไม่มีการแสดงข้อความ IDFA แต่จะมีการแสดงป๊อปอัปการยินยอม ATT ทันที หากผู้ใช้เคยยินยอมในรายการ GDPR ข้อความ IDFA จะถูกแสดงตามปกติและหลังจากนั้นจะมีการแสดงป๊อปอัปการยินยอม ATT
การแสดงป๊อปอัพการยินยอม GDPR (ยุโรป, สหราชอาณาจักร)¶
หากเกมของคุณมีเป้าหมายที่ยุโรปและสหราชอาณาจักร (EEA & UK) จะต้องแสดงป๊อปอัพการยินยอม GDPR (กฎการปกป้องข้อมูลทั่วไปของสหภาพยุโรป) ป๊อปอัพการยินยอม GDPR จะถูกแสดงเฉพาะเมื่อที่อยู่ IP ของอุปกรณ์ผู้ใช้เป็นที่อยู่ IP ของยุโรปและสหราชอาณาจักร (EEA & UK) Adiz สนับสนุน Google UMP (User Messaging Platform) สำหรับการแสดงป๊อปอัพการยินยอม GDPR หลังจากที่คุณสร้างข้อความ GDPR ใน AdMob Console แล้วให้ เริ่มต้น Adiz ป๊อปอัพ GDPR จะถูกแสดงให้กับผู้ใช้ที่เข้าถึงจากภูมิภาคยุโรปและสหราชอาณาจักร
Warning
หากคุณกำลังมุ่งเป้าไปที่พื้นที่นอกยุโรปและสหราชอาณาจักร เช่น หากคุณวางแผนที่จะให้บริการเฉพาะในประเทศ การแสดงป๊อปอัพการยินยอม GDPR (ยุโรป, สหราชอาณาจักร) คุณสามารถข้ามขั้นตอนนี้และใช้ Adiz.InitializeForNonGDPR()
เพื่อทำการเริ่มต้น
หากคุณใช้ Adiz.Initialize()
เพื่อทำการเริ่มต้น คุณจะต้องสร้างข้อความ GDPR ในคอนโซล AdMob เพื่อให้การเริ่มต้น Adiz ดำเนินการได้อย่างถูกต้อง
การเขียนข้อความ GDPR¶
เข้าสู่ระบบ Google AdMob Console เพื่อเขียนข้อความ GDPR ก่อนที่คุณจะเขียนข้อความ GDPR โปรดดูที่ คู่มือการเขียนข้อความ GDPR
หากคุณได้เขียนข้อความ GDPR แล้ว การเริ่มต้น Adiz จะทำให้ป๊อปอัปการยินยอม GDPR แสดงขึ้นโดยอัตโนมัติ
Warning
หากคุณใช้ Hive SDK คุณต้องเรียกใช้ AuthV4.setup
หลังจากเสร็จสิ้นการเริ่มต้น Hive Adiz หากมีการแสดงการแจ้งเตือนการยินยอม ATT (APP Tracking Transparency) และหน้าจอยินยอม GDPR ปรากฏขึ้น แอปอาจถูกปฏิเสธในการตรวจสอบแอปของ Apple
การดำเนินการยินยอมและการถอนยินยอมตาม GDPR¶
รายการในป๊อปอัปการยินยอมตาม GDPR จะต้องมีฟังก์ชันการแก้ไขเพื่อให้ผู้ใช้สามารถปรับเปลี่ยนการยินยอมได้ทุกเมื่อ ตัวอย่างเช่น ผู้ใช้อาจไม่ยินยอมตาม GDPR ในตอนแรก แต่ต้องการยินยอมอีกครั้งเพื่อดูโฆษณาที่ปรับแต่ง หรือในทางกลับกัน ผู้ใช้อาจยินยอมตาม GDPR ในตอนแรก แต่ไม่ต้องการให้ข้อมูลส่วนตัวอีกต่อไปและต้องการถอนการยินยอม ในสถานการณ์เหล่านี้ ผู้พัฒนาแอปจะต้องดำเนินการฟังก์ชันในการยินยอมอีกครั้งหรือถอนการยินยอมที่มีอยู่สำหรับแต่ละรายการ การดำเนินการฟังก์ชันการยินยอม/ถอนยินยอมตาม GDPR ต้องปฏิบัติตามขั้นตอนต่อไปนี้
- สร้าง UI ปุ่มในแอปเพื่อเรียกดูหน้าต่างป๊อปอัพการยินยอม GDPR อีกครั้ง
- เมื่อทำการ เริ่มต้น Adiz ให้เรียกใช้
isPrivacyOptionsRequired()
เพื่อแสดง UI ปุ่มดังกล่าวให้กับผู้ใช้ที่เข้าถึงจากยุโรปและสหราชอาณาจักร และไม่แสดงหากไม่ใช่กรณีนี้ หากผู้ใช้จากยุโรปและสหราชอาณาจักรกดปุ่มดังกล่าว ให้เรียกใช้showPrivacyOptionsForm
เพื่อเรียกดูหน้าต่างป๊อปอัพการยินยอม GDPR อีกครั้ง หลังจากนั้น ผู้ใช้สามารถกดปุ่ม "Manage Options" หรือปุ่มอื่น ๆ ในแอปเพื่อปรับเปลี่ยนการยินยอมในรายละเอียด GDPR ได้ทุกเมื่อshowPrivacyOptionsForm
ด้านล่างนี้เป็นวิธีที่สร้างขึ้นแบบสุ่มเพื่อเป็นตัวอย่าง และบริษัทพัฒนาสามารถเปลี่ยนแปลงการใช้งานได้ตามต้องการ// .... private void InitResultCB(AdizError error, string jsonString) { // ฟังก์ชัน callback หลังการเริ่มต้นเสร็จสิ้น Debug.Log(TAG + "::InitResultCB:: errorCode : "+error.errorCode+" errorMessage : "+error.errorMessage+" json : "+jsonString); if(error.isSuccess()) { bool isPrivacyOptionsRequired = AdizConsentManager.IsPrivacyOptionsRequired(); if(isPrivacyOptionsRequired) { // แสดงปุ่มตัวเลือกความเป็นส่วนตัว คลิกเพื่อเรียก ShowPrivacyOptionsForm } else { // ซ่อนปุ่มตัวเลือกความเป็นส่วนตัว } } } private void ShowPrivacyOptionsForm() { // เรียกแบบฟอร์มตัวเลือกความเป็นส่วนตัว if(AdizConsentManager.IsPrivacyOptionsRequired()) { AdizConsentManager.ShowPrivacyOptionsForm(new CommonHandlers.Builder() .OnResult(CommonResultCB) .Build()); } } // ....
การตั้งค่าแท็กสำหรับผู้ใช้ที่อายุต่ำกว่าที่ตกลง GDPR (TFUA)¶
สามารถตั้งค่าแท็ก (Tag For Under the Age of Consent, TFUA) เพื่อจัดการผู้ใช้ที่อาศัยอยู่ในเขตเศรษฐกิจยุโรป (EEA), สหราชอาณาจักร และสวิตเซอร์แลนด์ให้เป็นกลุ่มเป้าหมายการประมวลผลข้อมูลจำกัดเมื่อมีการขอการโฆษณา สำหรับแอปที่ให้บริการเด็ก สามารถใช้ AdizConsentManager.setUserPrivacySettings
เพื่อตั้งค่าผู้ใช้ว่าอยู่ต่ำกว่าขอบเขตอายุที่ต้องได้รับความยินยอม กฎหมาย GDPR กำหนดอายุที่ต้องได้รับความยินยอมไว้ที่ต่ำกว่า 16 ปี โดยต้องมีความยินยอมจากผู้ปกครอง แม้ว่าจะมีความแตกต่างกันในแต่ละประเทศในยุโรป แต่การตั้งค่าต่ำกว่าขอบเขตอายุที่ต้องได้รับความยินยอมจะต้องตั้งค่าก่อนที่จะเรียกใช้ Adiz.initialize
Warning
หากตั้งค่าธง setTagForUnderAgeOfConsent
สำหรับผู้ที่อายุต่ำกว่าความยินยอม GDPR และตั้งค่าธง setTagForChildDirectedTreatment
สำหรับเด็กตาม COPPA เป็น true
พร้อมกัน การตั้งค่าธงสำหรับเด็กตาม COPPA setTagForChildDirectedTreatment
จะถูกนำมาใช้ก่อน ดังนั้นโปรดอย่าตั้งค่าทั้งสองเป็น true
พร้อมกัน
Note
Hive SDK v4 24.2.0 ขึ้นไปและ Adiz 2.0.1 ขึ้นไป เมื่อใช้งานร่วมกัน Hive SDK จะนำไปใช้โดยอัตโนมัติสำหรับผู้ใช้ที่ต่ำกว่าช่วงอายุที่ตั้งค่าไว้ ดังนั้นจึงไม่จำเป็นต้องเรียก AdizConsentManager.setUserPrivacySettings
using hiveAdiz;
public void Initialize() {
bool isTagForUnderAgeOfConsent = false; // 어린이인 경우 true로 변경
PrivacySettings settings = new PrivacySettings.Builder()
.SetTagForUnderAgeOfConsent(isTagForUnderAgeOfConsent)
.Build();
AdizConsentManager.SetUserPrivacySettings(settings);
Adiz.Initialize(new CommonHandlers.Builder()
.OnResult(InitResultCB)
.Build());
}
การตั้งค่าอุปกรณ์ทดสอบ GDPR¶
ป๊อปอัปการยินยอม GDPR จะแสดงเฉพาะเมื่อที่อยู่ IP ของอุปกรณ์เป็นที่อยู่ IP ของยุโรปและสหราชอาณาจักร ในระยะพัฒนาจะสามารถบังคับให้แสดงป๊อปอัปการยินยอม GDPR โดยไม่คำนึงถึงที่อยู่ IP เพื่อทดสอบการแสดงป๊อปอัป และเพื่อสิ่งนี้ต้องตั้งค่าอุปกรณ์ทดสอบ GDPR โปรดทำตามขั้นตอนด้านล่าง การตั้งค่าอุปกรณ์ทดสอบ GDPR จะเหมือนกับวิธีการ แสดงโฆษณาบนอุปกรณ์ทดสอบ
- ทำการเริ่มต้น Adiz โดยเป็นการเริ่มต้นเพื่อตรวจสอบ ID อุปกรณ์ทดสอบ และไม่จำเป็นต้องเขียนข้อความขอความยินยอม GDPR
พิมพ์บันทึกของ Android Studio หรือ Xcode เพื่อตรวจสอบ ID อุปกรณ์ ตัวอย่างบันทึกมีดังนี้
- Android: ที่
ใช้ ConsentDebugSettings.Builder().addTestDeviceHashedId("33BE2250B43518CCDA7DE426D04EE231") เพื่อกำหนดอุปกรณ์นี้เป็นอุปกรณ์ดีบัก
33BE2250B43518CCDA7DE426D04EE231
- iOS: ที่
<UMP SDK>ในการเปิดใช้งานโหมดดีบักสำหรับอุปกรณ์นี้ ให้ตั้งค่า: UMPDebugSettings.testDeviceIdentifiers = @[B74F6468-1516-467C-99AD-CC5973C5DB52]
B74F6468-1516-467C-99AD-CC5973C5DB52
- คัดลอก ID อุปกรณ์
- เพิ่ม
AdizGDPRManager.setTestDevice(DEVICE_ID)
ก่อนเรียกใช้Adiz.initialize
ในโค้ดการเริ่มต้น Adiz ที่มีอยู่ - เขียนข้อความขอความยินยอม GDPR และเริ่มต้น Adiz ใหม่เพื่อให้แน่ใจว่าป๊อปอัพขอความยินยอม GDPR แสดงขึ้นอย่างถูกต้อง
using hiveAdiz; public void Initialize() { // การตั้งค่าอุปกรณ์ทดสอบ GDPR AdizGDPRManager.SetTestDevice("33BE2250B43518CCDA7DE426D04EE231"); Adiz.Initialize(new CommonHandlers.Builder() .OnResult(InitResultCB) .Build()); }
การตั้งค่าแท็กการจัดการสำหรับเด็ก COPPA¶
ตามกฎหมายการปกป้องข้อมูลส่วนบุคคลออนไลน์สำหรับเด็ก (COPPA) นักพัฒนาแอปสามารถกำหนดได้ว่า Google จะจัดการเนื้อหาเป็นเนื้อหาสำหรับเด็กหรือไม่ โดยการตั้งค่าแท็กการจัดการสำหรับเด็ก (tagForChildDirectedTreatment, TFCD) เมื่อมีการขอโฆษณา หากต้องการให้จัดการเป็นเนื้อหาสำหรับเด็ก จะต้องเรียกใช้ AdizConsentManager.SetUserPrivacySettings
ก่อนที่จะเรียกใช้ Adiz.initialize
เมื่อใช้ Adiz ร่วมกับ Hive SDK แท็กการจัดการสำหรับเด็กจะถูกนำไปใช้โดยอัตโนมัติ ดังนั้นจึงไม่จำเป็นต้องตั้งค่าเพิ่มเติม
using hiveAdiz;
public void Initialize() {
bool isTagForChildDirectedTreatment = false; // เปลี่ยนเป็น true หากเป็นเด็ก
PrivacySettings settings = new PrivacySettings.Builder()
.SetTagForChildDirectedTreatment(isTagForChildDirectedTreatment)
.Build();
AdizConsentManager.SetUserPrivacySettings(settings);
Adiz.Initialize(new CommonHandlers.Builder()
.OnResult(InitResultCB)
.Build());
}
การเพิ่มการจัดการโฆษณา¶
Adiz สามารถแสดงโฆษณาโดยใช้การจัดการโฆษณาของ AdMob ได้ เพื่อเพิ่มการจัดการโฆษณาให้ทำตามขั้นตอนด้านล่าง
การเพิ่มการจัดการ AdMob¶
ดำเนินการเชื่อมต่อแหล่งโฆษณาในคอนโซล AdMob ตามตารางด้านล่าง
AppLovin | Pangle | Unity Ads | Meta | |
---|---|---|---|---|
ขั้นตอนที่ 1: การตั้งค่า | Android iOS | Android iOS | Android iOS | Android iOS |
ขั้นตอนที่ 2: เพิ่มแหล่งโฆษณา | Android iOS | Android iOS | Android iOS | Android iOS |
ขั้นตอนที่ 3 | เพิ่ม Adiz อะแดปเตอร์ |
เพิ่ม Adiz อแดปเตอร์¶
Assets/HiveAdiz/Editor/Adiz_DefaultDependencies.xmlเพิ่มการพึ่งพาห้องสมุด
<dependencies>
<androidPackages>
<repositories>
<repository>https://repo.maven.apache.org/maven2</repository>
<repository>https://artifact.bytedance.com/repository/pangle/</repository>
</repositories>
<androidPackage spec="com.com2us.android.adiz:hive-adiz:2.1.0"/>
<!-- AppLovin -->
<androidPackage spec="com.com2us.android.adiz:hive-adiz-adapter-applovin:2.1.0"/>
<!-- Pangle -->
<androidPackage spec="com.com2us.android.adiz:hive-adiz-adapter-pangle:2.1.0"/>
<!-- Unity Ads -->
<androidPackage spec="com.com2us.android.adiz:hive-adiz-adapter-unityads:2.1.0"/>
<!-- Meta -->
<androidPackage spec="com.com2us.android.adiz:hive-adiz-adapter-meta:2.1.0"/>
</androidPackages>
<iosPods>
<sources>
<source>https://github.com/Com2uSPlatformCorp/HiveAdiz-iOS.git</source>
</sources>
<iosPod name="HiveAdizUnityPlugin" version="2.1.0"/>
<iosPod name="HiveAdizAdapterAppLovin" version="2.1.0"/>
<iosPod name="HiveAdizAdapterPangle" version="2.1.0"/>
<iosPod name="HiveAdizAdapterUnityAds" version="2.1.0"/>
<iosPod name="HiveAdizAdapterMeta" version="2.1.0"/>
</iosPods>
</dependencies>
เพื่อยืนยันว่าการกำหนดค่า Adiz อนุกรมถูกต้อง ให้เรียกใช้แอปพลิเคชันแล้วตรวจสอบรายการการกำหนดค่าในหน้าจอ ตรวจสอบโฆษณา。
การเริ่มต้น Adiz¶
เป็นขั้นตอนที่จำเป็นต้องดำเนินการก่อนที่จะเปิดเผยโฆษณาทุกประเภท หากทำการเริ่มต้น Adiz จะได้รับโฆษณาคีย์ที่จำเป็นสำหรับการแสดงโฆษณา หากเปิดใช้งานโหมดทดสอบ จะได้รับคีย์ทดสอบ หากคุณกำลังใช้ SDK Hive ให้ดำเนินการเริ่มต้น Adiz หลังจากเรียก AuthV4.setup
Warning
หากคุณใช้การตั้งค่า GDPR คุณต้องเรียบร้อยการตั้งค่า Hive Adiz หลังจากนั้นให้เรียกใช้ AuthV4.setup
หากแสดงการแจ้งเตือนการยินยอม ATT (APP Tracking Transparency) และหน้าจอยินยอม GDPR ปรากฏขึ้น แอปของคุณอาจถูกปฏิเสธในการตรวจสอบแอปของ Apple
using hiveAdiz;
public void Start() {
/* 생략 */
// เพื่อใช้การเรียกกลับ HiveAdiz จะต้องลงทะเบียน AdizCallbackManager เป็น GameObject.
Adiz.InitPlugin();
}
Adiz.Initialize(new CommonHandlers.Builder()
.OnResult(InitResultCB)
.Build());
// เริ่มต้นฟังการตอบกลับ
private void InitResultCB(AdizError error, string jsonString) {
Debug.Log(TAG + "::InitResultCB:: errorCode : "+error.errorCode+" errorMessage : "+error.errorMessage+" json : "+jsonString);
if(error.isSuccess()) {
JSONObject resJsonObject = new JSONObject (jsonString);
JSONObject jsonArray = resJsonObject.GetField ("keys");
if (jsonArray != null && jsonArray.count > 0) {
List interstitialKeyList = new List();
List bannerKeyList = new List();
List nativeKeyList = new List();
List rewardedKeyList = new List();
List rewardedInterstitialKeyList = new List();
List appOpenKeyList = new List();
List jsonList = jsonArray.list;
foreach (JSONObject jsonItem in jsonList) {
bool isDefault = false;
jsonItem.GetField(ref isDefault, "is_default");
// นี่คือตัวอย่างการสร้างรายการคีย์ที่มี is_default เป็น false เมื่อป้อนคีย์โฆษณาโดยตรงในเกม
if(isDefault == false) {
string hiveAdKey = null;
jsonItem.GetField(ref hiveAdKey, "key");
string form = null;
jsonItem.GetField(ref form, "form");
switch (form) {
case "interstitial":
interstitialKeyList.Add(hiveAdKey);
break;
case "banner":
bannerKeyList.Add(hiveAdKey);
break;
case "native":
nativeKeyList.Add(hiveAdKey);
break;
case "rewarded":
rewardedKeyList.Add(hiveAdKey);
break;
case "rewarded_interstitial":
rewardedInterstitialKeyList.Add(hiveAdKey);
break;
case "app_open":
appOpenKeyList.Add(hiveAdKey);
break;
}
}
}
foreach(string hiveAdKey in interstitialKeyList) {
Debug.Log("onSdkInitialize interstitialKeyList "+hiveAdKey);
}
foreach(string hiveAdKey in bannerKeyList) {
Debug.Log("onSdkInitialize bannerKeyList "+hiveAdKey);
}
foreach(string hiveAdKey in nativeKeyList) {
Debug.Log("onSdkInitialize nativeKeyList "+hiveAdKey);
}
foreach(string hiveAdKey in rewardedKeyList) {
Debug.Log("onSdkInitialize rewardedKeyList "+hiveAdKey);
}
foreach(string hiveAdKey in rewardedInterstitialKeyList) {
Debug.Log("onSdkInitialize rewardedInterstitialKeyList "+hiveAdKey);
}
foreach(string hiveAdKey in appOpenKeyList) {
Debug.Log("onSdkInitialize appOpenKeyList "+hiveAdKey);
}
}
}
}
ไฟล์ JSON ที่ได้รับจากการเรียกใช้งานการเริ่มต้นมีรายการคีย์โฆษณาอยู่ รายการคีย์โฆษณามีรูปแบบดังนี้:
{
"keys":[
{
"mediation_id":5,
"key":"ca-app-pub-3940256099942544/5354046379",
"form":"rewarded_interstitial",
"is_default":true,
"placement_id":"lobby01"
},
{
"mediation_id":4,
"key":"ca-app-pub-3940256099942544/5224354917",
"form":"rewarded",
"is_default":true,
"placement_id":"game02"
},
{
"mediation_id":3,
"key":"ca-app-pub-3940256099942544/2247696110",
"form":"native",
"is_default":true,
"placement_id":"event01"
},
{
"mediation_id":1,
"key":"ca-app-pub-3940256099942544/1033173712",
"form":"interstitial",
"is_default":true,
"placement_id":"mission01"
},
{
"mediation_id":2,
"key":"ca-app-pub-3940256099942544/6300978111",
"form":"banner",
"is_default":true,
"placement_id":"main01"
},
{
"mediation_id":6,
"key":"ca-app-pub-3940256099942544/9257395921",
"form":"app_open",
"is_default":true,
"placement_id":"appopen01"
}
]
}
หากทำการเริ่มต้นในโหมดทดสอบ จะได้รับรายการคีย์โฆษณาทดสอบแม้ว่าจะไม่ได้ลงทะเบียนคีย์โฆษณา AdMob ในคอนโซล Hive หากทำการเริ่มต้นในโหมดเชิงพาณิชย์ จะได้รับรายการคีย์โฆษณา AdMob ที่ลงทะเบียนในคอนโซล Hive
โฆษณาประเภท(form
)แต่ละประเภทจะมีโฆษณาหนึ่งรายการที่ใช้เป็น โฆษณาหลัก(โฆษณาที่มี "is_default":true
) เมื่อมีการลงทะเบียนโฆษณาประเภทใดประเภทหนึ่งเป็นครั้งแรก โฆษณาที่ลงทะเบียนครั้งแรกจะกลายเป็นโฆษณาหลัก โฆษณาหลักไม่จำเป็นต้องป้อนคีย์โฆษณา(hiveAdKey
)เมื่อสร้างอินสแตนซ์โฆษณา(initialize()
) หากต้องการเปลี่ยนโฆษณาหลัก ต้องลบโฆษณาหลักเดิมใน HiveHive คอนโซลและลงทะเบียนโฆษณาใหม่
การตั้งค่า Listener การโทรกลับโฆษณา¶
เมื่อสร้างอินสแตนซ์โฆษณาแต่ละรายการ หากคุณใช้ AdizListener
คุณจะสามารถรับการโทรกลับตามการเปลี่ยนแปลงสถานะโฆษณาได้
ชื่อ | คำอธิบาย | การดำเนินการที่จำเป็น |
---|---|---|
.OnAdLoad(OnAdLoadCB) | โหลดโฆษณาสำเร็จ | O |
.OnAdFail(OnAdLoadFailedCB) | ล้มเหลว(`error.errorCode()` และ `error.errorMessage()` สามารถทราบเหตุผลที่ล้มเหลว) | O |
.OnAdShow(OnAdShowCB) | ความสำเร็จในการแสดงโฆษณา | O |
.OnAdClick(OnAdClickCB) | คลิกโฆษณา | O |
.OnAdPaidEvent(OnAdPaidEventCB) | จุดเวลาที่ได้รับ paid event หลังจากการแสดงโฆษณา ซึ่งข้อมูลรายได้จากโฆษณาจะถูกส่ง | O |
.OnAdClose(OnAdCloseCB) | ปิดโฆษณา
| X |
.OnAdReward(OnAdRewardCB) | จุดที่ผู้ใช้ได้รับรางวัลหลังจากการแสดงโฆษณาในโฆษณาที่มีรางวัล (`rewarded`, `rewarded interstitial`) | X |
private void OnAdLoadCB()
{
// 광고가 로드되면 호출됩니다.
// 광고 로드가 성공했다면 원하는 시점에 광고 인스턴스의 .show()를 호출하여 광고를 노출해야 합니다.
Debug.Log(TAG + "::OnAdLoadCB");
// แสดงหลังจากโหลด AdizInterstitial เสร็จสิ้น
// requestShowAd();
}
private void OnAdLoadFailedCB(AdizError error) {
// การโหลดโฆษณาล้มเหลวหรือไม่สามารถแสดงโฆษณาได้ aused by อื่น ๆ จะถูกเรียกใช้
Debug.Log(TAG + "::OnAdLoadFailedCB errorCode "+error.errorCode);
Debug.Log(TAG + "::OnAdLoadFailedCB errorMessage "+error.errorMessage);
}
private void OnAdShowCB()
{
// จะถูกเรียกเมื่อโฆษณาแสดง
Debug.Log(TAG + "::OnAdShowCB");
}
private void OnAdCloseCB()
{
// จะถูกเรียกเมื่อโฆษณาถูกปิด
Debug.Log(TAG + "::OnAdCloseCB");
// การลบโฆษณา AdizInterstitial หลังจากแสดง
// requestDestroyAd();
}
private void OnAdClickCB()
{
// ถูกเรียกเมื่อคลิกโฆษณา
Debug.Log(TAG + "::OnAdClickCB");
}
private void OnAdRewardCB(RewardItem rewardItem)
{
// การเรียกใช้เมื่อมีการให้รางวัลสำหรับการดูโฆษณาในโฆษณาแบบให้รางวัลและโฆษณาแบบเต็มหน้าจอ
Debug.Log(TAG + "::OnAdRewardCB:: rewardItem.itemType : " + rewardItem.getItemType() + " rewardItem.itemAmount : " + rewardItem.getItemAmount());
// จะถูกส่งเฉพาะในโฆษณาแบบให้รางวัลและ rewardedInterstitial
}
private void OnAdPaidEventCB(AdRevenueData adRevenueData)
{
// จะถูกเรียกเมื่อมีรายได้จากโฆษณาเกิดขึ้น
Debug.Log(TAG + "::OnAdPaidEventCB:: adRevenueData.revenue : " + adRevenueData.getRevenue() + " adRevenueData.currency : " + adRevenueData.getCurrency());
}
รหัสข้อผิดพลาด¶
เมื่อได้รับ OnAdFail()
จาก Adiz.Initialize
และ AdizListener
รหัสข้อผิดพลาด AdizError
และข้อความข้อผิดพลาดมีดังนี้
รหัสทั่วไป¶
หมายเลข | กรณี | คำอธิบาย |
---|---|---|
0 | สำเร็จ | สำเร็จ |
รหัสข้อผิดพลาด Adiz¶
หมายเลข | กรณี | คำอธิบาย |
---|---|---|
-1 | InvalidParam | พารามิเตอร์ไม่ถูกต้อง |
-2 | NotSupported | ไม่รองรับ |
-3 | InProgress | สถานะกำลังดำเนินการ |
-4 | Network | ข้อผิดพลาดเครือข่าย |
-5 | NeedInitialize | ต้องการการเริ่มต้น |
-6 | ResponseFail | การตอบสนองล้มเหลว |
-7 | Timeout | หมดเวลาเครือข่าย |
-99 | Unknown | ข้อผิดพลาดที่ไม่รู้จัก |
รหัสข้อผิดพลาดแพลตฟอร์มโฆษณา¶
หมายเลข | กรณี | คำอธิบาย |
---|---|---|
-101 | NeedLoad | โฆษณายังไม่ได้โหลด |
-102 | NeedReload | ต้องโหลดใหม่เนื่องจากเวลาการแสดงโฆษณาหมดอายุ |
-103 | NotEnoughInventory | การตอบสนองของการจัดการสำเร็จ แต่ไม่มีโฆษณาที่เติมเต็มเนื่องจากขาดแคลนสินค้าคงคลัง |
-104 | MissingAppId | ข้อผิดพลาด AppID สำหรับคำขอการจัดการ |
-105 | InternalNetworkError | ข้อผิดพลาดที่เกี่ยวข้องกับเครือข่ายการจัดการ |
-106 | InvalidUnitId | หมายเลขหน่วยไม่ถูกต้อง |
-107 | MediationNoFill | ตัวปรับการจัดการไม่สามารถจัดการคำขอโฆษณาได้ |
-108 | AlreadyLoaded | สถานะได้ถูกโหลดแล้ว |
-109 | CannotRequestAds | ไม่สามารถขอโฆษณาได้ |
-201 | GdprConsentError | ข้อผิดพลาดการยินยอม GDPR |
-202 | IsNotPrivacyOptionsRequired | ไม่สามารถแสดงป๊อปอัพการยินยอม GDPR หรือไม่จำเป็นต้องแสดง |
การแสดงโฆษณาและการสิ้นสุดโฆษณา¶
ในการแสดงและสิ้นสุดโฆษณา ให้ทำตามขั้นตอนต่อไปนี้
- สร้างอินสแตนซ์โฆษณาจากคลาสโฆษณาตามประเภทโฆษณาที่ต้องการแสดง หากโฆษณาที่ต้องการแสดงไม่ใช่ โฆษณาพื้นฐาน คุณจะต้องป้อนคีย์โฆษณาหรือ ID ตำแหน่งที่ได้รับจาก การเริ่มต้น หากไม่ป้อนคีย์โฆษณา (
hiveAdKey
) หรือ ID ตำแหน่ง (placementId
) จะสร้างอินสแตนซ์โฆษณาพื้นฐาน ID ตำแหน่งสามารถตั้งค่าได้จากคอนโซล Hive และสำหรับข้อมูลเพิ่มเติมโปรดดูที่หน้า การตั้งค่า Admob ในคู่มือคอนโซล - โหลดโฆษณาที่ต้องการแสดง (
load()
) - โหลดโฆษณาที่ต้องการแสดง (
load()
) - แสดงโฆษณาที่โหลดแล้ว (
show()
) หากต้องการแสดงโฆษณาอีกครั้งจะต้องเรียกload()
อีกครั้งแล้วจึงเรียกshow()
- หากต้องการสิ้นสุดโฆษณาให้เรียก
destroy()
โฆษณาเต็มหน้าจอ (Interstitial)¶
โฆษณาที่ครอบคลุมทั้งหน้าจอ
// Create AdizInterstitial Instance
private AdizInterstitial InterstitialAd = null;
public void requestInitAd(string interstitialAdKey) {
AdEventHandlers eventHandlers = new AdEventHandlers.Builder()
.OnAdLoad(OnAdLoadCB)
.OnAdShow(OnAdShowCB)
.OnAdClose(OnAdCloseCB)
.OnAdClick(OnAdClickCB)
.OnAdFail(OnAdLoadFailedCB)
.OnAdPaidEvent(OnAdPaidEventCB)
.Build();
if(string.IsNullOrEmpty(interstitialAdKey)) {
// Initialize Default AdizInterstitial Instance (AdEventHandlers)
InterstitialAd = AdizInterstitial.Initialize(eventHandlers);
} else {
// Initialize AdizInterstitial Instance (hiveAdKey, AdEventHandlers)
InterstitialAd = AdizInterstitial.Initialize(interstitialAdKey, eventHandlers);
}
}
public void requestInitAdWithPlacementId(string interstitialPlacementId) {
AdEventHandlers eventHandlers = new AdEventHandlers.Builder()
.OnAdLoad(OnAdLoadCB)
.OnAdShow(OnAdShowCB)
.OnAdClose(OnAdCloseCB)
.OnAdClick(OnAdClickCB)
.OnAdFail(OnAdLoadFailedCB)
.OnAdPaidEvent(OnAdPaidEventCB)
.Build();
if(string.IsNullOrEmpty(interstitialPlacementId)) {
// เริ่มต้น AdizInterstitial Instance เริ่มต้น (AdEventHandlers)
InterstitialAd = AdizInterstitial.Initialize(eventHandlers);
} else {
// เริ่มต้น AdizInterstitial Instance (placementId, AdEventHandlers)
InterstitialAd = AdizInterstitial.InitializeWithPlacementId(interstitialPlacementId, eventHandlers);
}
}
public void requestLoadAd() {
// Load AdizInterstitial
if(InterstitialAd != null && InterstitialAd.IsInitialized()) InterstitialAd.Load();
}
public void requestShowAd() {
// Show AdizInterstitial
if(InterstitialAd != null && InterstitialAd.IsLoaded()) InterstitialAd.Show();
}
public void requestDestroyAd() {
// ทำลาย AdizInterstitial
if(InterstitialAd != null) InterstitialAd.Destroy();
InterstitialAd = null;
}
โฆษณาแบนเนอร์ (Banner)¶
นี่คือโฆษณาแบนเนอร์ที่แสดงแบนเนอร์ขนาดเฉพาะ โฆษณาแบนเนอร์จะไม่รับ OnAdClose()
คอลแบ็ก ดังนั้นคุณต้องเรียกใช้ destroy()
จากตำแหน่งอื่นเพื่อสิ้นสุดโฆษณา
BannerSize
เป็นขนาดแบนเนอร์มาตรฐาน
ขนาดพ้อย (กว้างxสูง) | คำอธิบาย | กลุ่มเป้าหมาย | ค่าคงที่ BannerSize |
---|---|---|---|
320x50 | แบนเนอร์ | โทรศัพท์มือถือและแท็บเล็ต | BannerSize.NORMAL |
320x100 | แบนเนอร์ขนาดใหญ่ | โทรศัพท์มือถือและแท็บเล็ต | BannerSize.MEDIUM |
300x250 | IAB ขนาดกลางสี่เหลี่ยมผืนผ้า | โทรศัพท์มือถือและแท็บเล็ต | BannerSize.LARGE |
468 x 60 | IAB แบนเนอร์ขนาดเต็ม | แท็บเล็ต | BannerSize.FULL |
PositionType
คือด้านบนสุดหรือล่างสุด ค่าเริ่มต้นคือด้านล่างสุด
การจัดเรียง | คำอธิบาย | ค่าคงที่ PositionType |
---|---|---|
การจัดเรียงที่ด้านบนสุด | กำหนดการจัดเรียงที่ด้านบนสุดของหน้าจอ (iOS กำหนดการจัดเรียงที่ด้านบนสุดตาม SafeArea) | PositionType.TOP |
การจัดเรียงที่ด้านล่างสุด (ค่าเริ่มต้น) | กำหนดการจัดเรียงที่ด้านล่างสุดของหน้าจอ (iOS กำหนดการจัดเรียงที่ด้านล่างสุดตาม SafeArea) | PositionType.BOTTOM |
// สร้าง AdizBanner Instance
private AdizBanner BannerAd = null;
public void requestInitAd(string bannerAdKey) {
// ตั้งค่าขนาดแบนเนอร์
private BannerSize bannerSize = BannerSize.NORMAL;
AdEventHandlers eventHandlers = new AdEventHandlers.Builder()
.OnAdLoad(OnAdLoadCB)
.OnAdShow(OnAdShowCB)
.OnAdClose(OnAdCloseCB)
.OnAdClick(OnAdClickCB)
.OnAdFail(OnAdLoadFailedCB)
.OnAdPaidEvent(OnAdPaidEventCB)
.Build();
if(string.IsNullOrEmpty(bannerAdKey)) {
// Initialize Default AdizBanner Instance (AdEventHandlers)
BannerAd = AdizBanner.Initialize(bannerSize, eventHandlers);
} else {
// Initialize AdizBanner Instance (hiveAdKey, AdEventHandlers)
BannerAd = AdizBanner.Initialize(bannerAdKey, bannerSize, eventHandlers);
}
}
public void requestInitAdWithPlacementId(string bannerPlacementId) {
// Set banner size
private BannerSize bannerSize = BannerSize.NORMAL;
AdEventHandlers eventHandlers = new AdEventHandlers.Builder()
.OnAdLoad(OnAdLoadCB)
.OnAdShow(OnAdShowCB)
.OnAdClose(OnAdCloseCB)
.OnAdClick(OnAdClickCB)
.OnAdFail(OnAdLoadFailedCB)
.OnAdPaidEvent(OnAdPaidEventCB)
.Build();
if(string.IsNullOrEmpty(bannerPlacementId)) {
// เริ่มต้นตัวอย่าง AdizBanner เริ่มต้น (AdEventHandlers)
BannerAd = AdizBanner.Initialize(bannerSize, eventHandlers);
} else {
// เริ่มต้นตัวอย่าง AdizBanner (placementId, AdEventHandlers)
BannerAd = AdizBanner.InitializeWithPlacementId(bannerPlacementId, bannerSize, eventHandlers);
}
}
public void requestLoadAd() {
// Load AdizBanner
if(BannerAd != null && BannerAd.IsInitialized()) BannerAd.Load();
}
public void requestShowAd() {
// Set position type
private PositionType bannerPosition = PositionType.TOP;
// แสดง AdizBanner
if(BannerAd != null && BannerAd.IsLoaded()) BannerAd.Show(bannerPosition);
}
public void requestDestroyAd() {
// ทำลาย AdizBanner
if(BannerAd != null) BannerAd.Destroy();
BannerAd = null;
}
โฆษณาเนทีฟ (Native)¶
โฆษณาเนทีฟที่แสดงเทมเพลตเนทีฟขนาดเฉพาะ โฆษณาเนทีฟได้รับการปรับให้เหมาะสมสำหรับหน้าจอแนวตั้ง ดังนั้นจึงแนะนำให้ใช้ในเกมแนวตั้ง (เกมหน้าจอแนวตั้ง) โฆษณาเนทีฟจะไม่รับ OnAdClose()
คอลแบ็ก ดังนั้นจึงต้องเรียก destroy()
ที่ตำแหน่งอื่นเพื่อปิดโฆษณา
เทมเพลตปัจจุบันรองรับขนาด small
หรือ medium
ขนาดพอยต์ (ความกว้างxความสูง) | เทมเพลต | การจัดเรียง | ค่าคงที่ BannerSize |
---|---|---|---|
355x91 (ปรับอัตราส่วน) | ขนาดเล็ก | ด้านบน / ด้านล่าง | BannerSize.NORMAL |
355x370 (ปรับอัตราส่วน) | ขนาดกลาง | กลาง (คงที่) | BannerSize.MEDIUM, BannerSize.LARGE, BannerSize.FULL |
ในเทมเพลต small
PositionType
จะอยู่ที่ด้านบนสุดหรือด้านล่างสุด โดยค่าพื้นฐานคือด้านล่างสุด
การจัดเรียง | คำอธิบาย | ค่าคงที่ PositionType |
---|---|---|
การจัดเรียงที่ด้านบนสุด | กำหนดการจัดเรียงที่ด้านบนสุดของหน้าจอ (iOS กำหนดการจัดเรียงที่ด้านบนสุดตาม SafeArea) | PositionType.TOP |
การจัดเรียงที่ด้านล่างสุด (ค่าเริ่มต้น) | กำหนดการจัดเรียงที่ด้านล่างสุดของหน้าจอ (iOS กำหนดการจัดเรียงที่ด้านล่างสุดตาม SafeArea) | PositionType.BOTTOM |
เทมเพลต medium
ไม่สามารถเลือกการจัดเรียงได้ และจะใช้การจัดเรียงกลางเป็นค่าเริ่มต้น
// สร้าง AdizNative Instance
private AdizNative NativeAd = null;
public void requestInitAd(string nativeAdKey) {
// Set banner size
private BannerSize bannerSize = BannerSize.NORMAL;
AdEventHandlers eventHandlers = new AdEventHandlers.Builder()
.OnAdLoad(OnAdLoadCB)
.OnAdShow(OnAdShowCB)
.OnAdClose(OnAdCloseCB)
.OnAdClick(OnAdClickCB)
.OnAdFail(OnAdLoadFailedCB)
.OnAdPaidEvent(OnAdPaidEventCB)
.Build();
if(string.IsNullOrEmpty(nativeAdKey)) {
// เริ่มต้น AdizNative Instance เริ่มต้น (AdEventHandlers)
NativeAd = AdizNative.Initialize(bannerSize, eventHandlers);
} else {
// เริ่มต้น AdizNative Instance (hiveAdKey, AdEventHandlers)
NativeAd = AdizNative.Initialize(nativeAdKey, bannerSize, eventHandlers);
}
}
public void requestInitAdWithPlacementId(string nativePlacementId) {
// ตั้งค่าขนาดแบนเนอร์
private BannerSize bannerSize = BannerSize.NORMAL;
AdEventHandlers eventHandlers = new AdEventHandlers.Builder()
.OnAdLoad(OnAdLoadCB)
.OnAdShow(OnAdShowCB)
.OnAdClose(OnAdCloseCB)
.OnAdClick(OnAdClickCB)
.OnAdFail(OnAdLoadFailedCB)
.OnAdPaidEvent(OnAdPaidEventCB)
.Build();
if(string.IsNullOrEmpty(nativePlacementId)) {
// เริ่มต้น AdizNative Instance เริ่มต้น (AdEventHandlers)
NativeAd = AdizNative.Initialize(bannerSize, eventHandlers);
} else {
// เริ่มต้น AdizNative Instance (placementId, AdEventHandlers)
NativeAd = AdizNative.InitializeWithPlacementId(nativePlacementId, bannerSize, eventHandlers);
}
}
public void requestLoadAd() {
// Load AdizNative
if(NativeAd != null && NativeAd.IsInitialized()) NativeAd.Load();
}
public void requestShowAd() {
// Set position type
private PositionType bannerPosition = PositionType.TOP;
// แสดง AdizNative
if(NativeAd != null && NativeAd.IsLoaded()) NativeAd.Show(bannerPosition);
}
public void requestDestroyAd() {
// ทำลาย AdizNative
if(NativeAd != null) NativeAd.Destroy();
NativeAd = null;
}
โฆษณาแบบมีรางวัล (Rewarded)¶
โฆษณาที่ให้รางวัลเมื่อผู้ใช้ดูโฆษณานานกว่าที่กำหนด เมื่อการจ่ายรางวัลเสร็จสิ้น จะได้รับข้อมูลเกี่ยวกับรางวัลผ่าน OnAdReward()
คอลแบ็ก
// สร้าง AdizRewarded Instance
private AdizRewarded RewardVideoAd = null;
public void requestInitAd(string rewardedAdKey) {
AdEventHandlers eventHandlers = new AdEventHandlers.Builder()
.OnAdLoad(OnAdLoadCB)
.OnAdShow(OnAdShowCB)
.OnAdClose(OnAdCloseCB)
.OnAdClick(OnAdClickCB)
.OnAdFail(OnAdLoadFailedCB)
.OnAdReward(OnAdRewardCB)
.OnAdPaidEvent(OnAdPaidEventCB)
.Build();
if(string.IsNullOrEmpty(rewardedAdKey)) {
// เริ่มต้น AdizRewarded Instance เริ่มต้น (AdEventHandlers)
RewardVideoAd = AdizRewarded.Initialize(eventHandlers);
} else {
// เริ่มต้น AdizRewarded Instance (hiveAdKey, AdEventHandlers)
RewardVideoAd = AdizRewarded.Initialize(rewardedAdKey, eventHandlers);
}
}
public void requestInitAdWithPlacementId(string rewardedPlacementId) {
AdEventHandlers eventHandlers = new AdEventHandlers.Builder()
.OnAdLoad(OnAdLoadCB)
.OnAdShow(OnAdShowCB)
.OnAdClose(OnAdCloseCB)
.OnAdClick(OnAdClickCB)
.OnAdFail(OnAdLoadFailedCB)
.OnAdReward(OnAdRewardCB)
.OnAdPaidEvent(OnAdPaidEventCB)
.Build();
if(string.IsNullOrEmpty(rewardedPlacementId)) {
// เริ่มต้น AdizRewarded Instance เริ่มต้น (AdEventHandlers)
RewardVideoAd = AdizRewarded.Initialize(eventHandlers);
} else {
// เริ่มต้น AdizRewarded Instance (placementId, AdEventHandlers)
RewardVideoAd = AdizRewarded.InitializeWithPlacementId(rewardedPlacementId, eventHandlers);
}
}
public void requestLoadAd() {
// Load AdizRewarded
if(RewardVideoAd != null && RewardVideoAd.IsInitialized()) RewardVideoAd.Load();
}
public void requestShowAd() {
// Show AdizRewarded
if(RewardVideoAd != null && RewardVideoAd.IsLoaded()) RewardVideoAd.Show();
}
public void requestDestroyAd() {
// ทำลาย AdizRewarded
if(RewardVideoAd != null) RewardVideoAd.Destroy();
RewardVideoAd = null;
}
โฆษณาเต็มหน้าจอแบบมีรางวัล (Rewarded Interstitial)¶
โฆษณาเต็มหน้าจอแบบมีรางวัลที่ผู้ใช้จะได้รับรางวัลเมื่อดูโฆษณานานกว่าที่กำหนด เมื่อการจ่ายรางวัลเสร็จสิ้น จะได้รับข้อมูลเกี่ยวกับรางวัลผ่าน OnAdReward()
คอลแบ็ก
// Create AdizRewardedInterstitial Instance
private AdizRewardedInterstitial RewardedInterstitialAd = null;
public void requestInitAd(string rewardedInterstitialAdKey) {
AdEventHandlers eventHandlers = new AdEventHandlers.Builder()
.OnAdLoad(OnAdLoadCB)
.OnAdShow(OnAdShowCB)
.OnAdClose(OnAdCloseCB)
.OnAdClick(OnAdClickCB)
.OnAdFail(OnAdLoadFailedCB)
.OnAdReward(OnAdRewardCB)
.OnAdPaidEvent(OnAdPaidEventCB)
.Build();
if(string.IsNullOrEmpty(rewardedInterstitialAdKey)) {
// เริ่มต้น AdizRewardedInterstitial เริ่มต้น (AdEventHandlers)
RewardedInterstitialAd = AdizRewardedInterstitial.Initialize(eventHandlers);
} else {
// เริ่มต้น AdizRewardedInterstitial เริ่มต้น (hiveAdKey, AdEventHandlers)
RewardedInterstitialAd = AdizRewardedInterstitial.Initialize(rewardedInterstitialAdKey, eventHandlers);
}
}
public void requestInitAdWithPlacementId(string rewardedInterstitialPlacementId) {
AdEventHandlers eventHandlers = new AdEventHandlers.Builder()
.OnAdLoad(OnAdLoadCB)
.OnAdShow(OnAdShowCB)
.OnAdClose(OnAdCloseCB)
.OnAdClick(OnAdClickCB)
.OnAdFail(OnAdLoadFailedCB)
.OnAdReward(OnAdRewardCB)
.OnAdPaidEvent(OnAdPaidEventCB)
.Build();
if(string.IsNullOrEmpty(rewardedInterstitialPlacementId)) {
// Initialize Default AdizRewardedInterstitial Instance (AdEventHandlers)
RewardedInterstitialAd = AdizRewardedInterstitial.Initialize(eventHandlers);
} else {
// Initialize AdizRewardedInterstitial Instance (placementId, AdEventHandlers)
RewardedInterstitialAd = AdizRewardedInterstitial.InitializeWithPlacementId(rewardedInterstitialPlacementId, eventHandlers);
}
}
public void requestLoadAd() {
// Load AdizRewardedInterstitial
if(RewardedInterstitialAd != null && RewardedInterstitialAd.IsInitialized()) RewardedInterstitialAd.Load();
}
public void requestShowAd() {
// Show AdizRewardedInterstitial
if(RewardedInterstitialAd != null && RewardedInterstitialAd.IsLoaded()) RewardedInterstitialAd.Show();
}
public void requestDestroyAd() {
// ทำลาย AdizRewardedInterstitial
if(RewardedInterstitialAd != null) RewardedInterstitialAd.Destroy();
RewardedInterstitialAd = null;
}
โฆษณาเปิดแอป (AppOpen)¶
โฆษณาเปิดแอปคือโฆษณาที่แสดงเมื่อสถานะของแอปเปลี่ยนจากพื้นหลังไปยังพื้นหน้า โดยจะมีการโหลดโฆษณาล่วงหน้า (load()
) เมื่อโหลดโฆษณาแล้ว หากเรียก show()
หลังจากผ่านไป 3 ชั่วโมง โฆษณาจะถูกโหลดใหม่โดยอัตโนมัติและแสดงโฆษณา หากแสดงโฆษณาไปแล้วอย่างน้อยหนึ่งครั้ง โฆษณาจะไม่โหลดโดยอัตโนมัติอีกต่อไป
// สร้าง AdizAppOpen Instance
private AdizAppOpen AppOpenAd = null;
public void requestInitAd(string appOpenAdKey) {
AdEventHandlers eventHandlers = new AdEventHandlers.Builder()
.OnAdLoad(OnAdLoadCB)
.OnAdShow(OnAdShowCB)
.OnAdClose(OnAdCloseCB)
.OnAdFail(OnAdLoadFailedCB)
.OnAdClick(OnAdClickCB)
.OnAdPaidEvent(OnAdPaidEventCB)
.Build();
if(string.IsNullOrEmpty(appOpenAdKey)) {
// Initialize Default AdizAppOpen Instance (AdEventHandlers)
AppOpenAd = AdizAppOpen.Initialize(eventHandlers);
} else {
// Initialize AdizAppOpen Instance (hiveAdKey, AdEventHandlers)
AppOpenAd = AdizAppOpen.Initialize(appOpenAdKey, eventHandlers);
}
}
public void requestInitAdWithPlacementId(string appOpenPlacementId) {
AdEventHandlers eventHandlers = new AdEventHandlers.Builder()
.OnAdLoad(OnAdLoadCB)
.OnAdShow(OnAdShowCB)
.OnAdClose(OnAdCloseCB)
.OnAdFail(OnAdLoadFailedCB)
.OnAdClick(OnAdClickCB)
.OnAdPaidEvent(OnAdPaidEventCB)
.Build();
if(string.IsNullOrEmpty(appOpenPlacementId)) {
// เริ่มต้น AdizAppOpen Instance เริ่มต้น (AdEventHandlers)
AppOpenAd = AdizAppOpen.Initialize(eventHandlers);
} else {
// เริ่มต้น AdizAppOpen Instance (placementId, AdEventHandlers)
AppOpenAd = AdizAppOpen.InitializeWithPlacementId(appOpenPlacementId, eventHandlers);
}
}
public void requestLoadAd() {
// Load AdizAppOpen
if(AppOpenAd != null && AppOpenAd.IsInitialized()) AppOpenAd.Load();
}
public void requestShowAd() {
// Show AdizAppOpen
Debug.Log("[appOpenAd] appOpenAd don't request Show");
}
public void requestDestroyAd() {
// ทำลาย AdizAppOpen
if(AppOpenAd != null) AppOpenAd.Destroy();
AppOpenAd = null;
}
ลบ HiveAdiz¶
หากต้องการลบ HiveAdiz ให้ลบโฟลเดอร์ด้านล่างในโปรเจกต์ Unity ของคุณ
- ทรัพย์สิน/HiveAdiz
- ทรัพย์สิน/HiveAdiz_ตัวอย่าง