Unity
Adiz Unity¶
Adiz Unity เป็นโมดูลโฆษณาสำหรับ Unity ที่จัดทำโดย Hive เพื่อทำให้การใช้ฟีเจอร์การแสดงโฆษณาที่เสนอโดย AdMob ง่ายขึ้น ประเภทของโฆษณาที่จัดทำโดย Adiz Unity มีดังต่อไปนี้
- โฆษณาแบบ Interstitial
- โฆษณาแบบ Banner
- โฆษณาแบบ Native
- โฆษณาแบบ Rewarded
- โฆษณาแบบ Interstitial ที่ให้รางวัล
- โฆษณาแบบ App Open
โปรดดูที่คู่มือด้านล่างเพื่อทำการติดตั้งและใช้งาน Adiz Unity.
การติดตั้งหรืออัปเดต¶
- ตั้งค่าสภาพแวดล้อมการพัฒนา Adiz Unity.
- ดาวน์โหลดเวอร์ชันล่าสุดของ Adiz จาก ที่นี่ และแตกไฟล์ออก.
- ใน Unity ให้เลือกตัวเลือก Assets > Import Package > Custom Package… เลือกไฟล์ .unitypackage และคลิก Import.
- ตรวจสอบว่าไฟล์และโฟลเดอร์ของ Adiz ได้ถูกสร้างขึ้นภายใต้โฟลเดอร์ Assets.
- ดาวน์โหลดและติดตั้งเวอร์ชันล่าสุดของ EDM4U. SDK v4 ของ Hive รวม EDM4U. หากคุณใช้ SDK v4 ของ Hive คุณไม่จำเป็นต้องติดตั้ง 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>
ตรวจสอบ ใช้ Jetifier. ใน การตั้งค่า Android Resolver ของ Unity (Assets > External Dependency Manager > Android Resolver > Settings).
การตั้งค่าเพลเยอร์ > เพลเยอร์ > การสร้าง หน้าจอการตั้งค่า ตรวจสอบสี่รายการต่อไปนี้
เมื่อใช้ Proguard กฎ ProGuard สำหรับโมดูล Adiz จะถูกนำเข้าไปด้วย ดังนั้นจึงไม่จำเป็นต้องเพิ่มกฎ ProGuard ลงในโปรเจกต์
iOS¶
ใน Assets > External Dependency Manager > iOS Resolver > Settings ให้ปิดการตั้งค่า static_framework
build setting.
เปิดไฟล์ 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.1
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
เพิ่มคีย์ GADApplicationIdentifier
ลงในไฟล์ Info.plist ของโปรเจกต์ Xcode ที่สร้างขึ้นระหว่างการสร้าง Unity และใส่ค่า AdMobId
(ในรูปแบบ ca-app-pub-XXXXX~YYYYY) เป็นค่าคีย์ นอกจากนี้คุณยังสามารถยกเลิกการคอมเมนต์บรรทัดการตั้งค่า GADApplicationIdentifier
ภายในไฟล์ Assets/HiveAdiz/Editor/AdizPostProcess.cs และเพิ่ม AdMobId
ซึ่งจะถูกตั้งค่าโดยอัตโนมัติ
นอกจากนี้ สำหรับ iOS 14 ขึ้นไป โปรดดูที่ คู่มือการอัปเดต info.plist ของคุณ เพื่อเพิ่มรายการ SKAdNetwork
ลงในไฟล์ Info.plist ไฟล์ Assets/HiveAdiz/Editor/AdizPostProcess.cs จะเพิ่มมันลงในไฟล์ Info.plist โดยอัตโนมัติในระหว่างกระบวนการสร้าง
การตั้งค่าโฆษณาทดสอบ¶
Adiz สามารถแสดงโฆษณาทดสอบได้สองวิธี 1. เปิดใช้งานโหมดทดสอบ: แสดงเฉพาะโฆษณาทดสอบที่ออกโดย AdMob 2. ลงทะเบียนอุปกรณ์ทดสอบและแสดงโฆษณา: แสดงโฆษณาจริงสำหรับการทดสอบ โดยมั่นใจว่าไม่มีการเกิดการเข้าชมที่ไม่ถูกต้อง และดำเนินการโดยการลงทะเบียนอุปกรณ์ที่จะทำการแสดงโฆษณาทดสอบ
การเปิดใช้งานโหมดทดสอบ¶
ในระยะการพัฒนา เปิดใช้งานโหมดทดสอบเพื่อให้การคลิกที่โฆษณาทดสอบไม่เรียกเก็บเงินจากผู้โฆษณา เมื่อเปิดใช้งานโหมดทดสอบ จะมีการแสดงโฆษณาทดสอบเท่านั้น ในโหมดทดสอบ โฆษณาทดสอบจะแสดงโดยไม่ต้องป้อนคีย์โฆษณา AdMob ในคอนโซล ปิดโหมดทดสอบระหว่างการจัดจำหน่ายเชิงพาณิชย์.
มีสองวิธีในการเปิดใช้งานโหมดทดสอบ.
- หลังจากลงทะเบียนอุปกรณ์ทดสอบในคอนโซล Hive ให้ตั้งค่าเป็น โฆษณาสาธิต (แนะนำ):
โปรดดูที่ส่วน การจัดการอุปกรณ์ทดสอบ ของคู่มือคอนโซล - ใช้ คลาส Adiz และเมธอด
setTestMode()
:
โปรดดูที่ โค้ดตัวอย่างด้านล่าง.
Warning
เมื่อไม่ได้อยู่ในโหมดทดสอบในระหว่างขั้นตอนการพัฒนา การคลิกโฆษณาอย่างมากอาจถูกพิจารณาว่าเป็นการเข้าชมที่ไม่ถูกต้อง และบัญชี AdMob ของคุณอาจถูกแจ้งรายงาน ส่งผลให้โฆษณาไม่แสดง
การใช้วิธี Adiz.SetTestMode()¶
using hiveAdiz; // Activate test mode. Comment out this line for production deployment.
Adiz.SetTestMode(true);
// เปิดใช้งานการบันทึกโมดูล Adiz การบันทึกควรใช้เฉพาะในโหมดทดสอบ ให้คอมเมนต์บรรทัดด้านล่างสำหรับการปรับใช้ในผลิตภัณฑ์.
Adiz.SetLogEnable(true);
การโฆษณาอุปกรณ์ทดสอบ¶
ในสถานการณ์ต่อไปนี้ คุณต้องลงทะเบียนอุปกรณ์ทดสอบเพื่อแสดงโฆษณาทดสอบ.
- ทดสอบว่า AdMob ad key ที่ลงทะเบียนในคอนโซล Hive ทำงานได้อย่างถูกต้อง
- เขียนข้อความ GDPR และตรวจสอบว่าหน้าต่างขอความยินยอม GDPR ทำงานได้อย่างถูกต้อง
- รัน ad inspector เพื่อวิเคราะห์และแก้ไขข้อผิดพลาดในการขอโฆษณา
มีสองวิธีในการแสดงโฆษณาบนอุปกรณ์ทดสอบ.
<
-
หลังจากลงทะเบียนอุปกรณ์ทดสอบในคอนโซล Hive ให้ตั้งค่าเป็น ใช้หมายเลขประจำหน่วยโฆษณา (แนะนำ):
โปรดดูที่ส่วน การจัดการอุปกรณ์ทดสอบ ของคู่มือคอนโซล. -
ใช้ Adiz คลาส's
setTestDevice()
วิธีการ:
โปรดดูที่ ตัวอย่างโค้ด ด้านล่าง.
Note
หากคุณทำการทดสอบที่แสดงโฆษณาจริงโดยไม่ลงทะเบียนอุปกรณ์ทดสอบ อาจถือว่าเป็นการเข้าชมที่ไม่ถูกต้อง และบัญชี AdMob ของคุณอาจถูกบล็อก ทำให้ไม่สามารถแสดงโฆษณาได้อีกต่อไป เมื่อคุณลงทะเบียนอุปกรณ์ทดสอบ โหมด "ทดสอบ" หรือ "โฆษณาทดสอบ" (สำหรับโฆษณาแบบเนทีฟ) จะถูกแสดงระหว่างการแสดงโฆษณา คุณต้องปิดการใช้งานอุปกรณ์ทดสอบระหว่างการจัดจำหน่ายเชิงพาณิชย์.
แบนเนอร์, โฆษณาแบบเต็มหน้าจอ, หรือโฆษณาแบบให้รางวัล
การโฆษณาพื้นเมือง
การใช้วิธี Adiz.setTestDevice()¶
ในการลงทะเบียนอุปกรณ์ทดสอบ คุณต้องตรวจสอบ ID อุปกรณ์ทดสอบก่อน ในสภาพแวดล้อม Android ของเอนจิน Unity ID อุปกรณ์ทดสอบ (เช่น: 33BE2250B43518CCDA7DE426D04EE231
) สามารถตรวจสอบได้ในสองวิธีดังต่อไปนี้
-
ตรวจสอบบันทึก Logcat หลังจากเรียกใช้
Adiz.Initialize()
: -
หลังจากเรียกใช้
Adiz.Initialize()
ไม่ว่าจะเป็นประเภทโฆษณาใด ให้เรียกใช้initialize()
→load()
และตรวจสอบบันทึก Logcat:
รหัสอุปกรณ์ทดสอบในสภาพแวดล้อม iOS ของเอนจิน Unity (เช่น B74F6468-1516-467C-99AD-CC5973C5DB52
) สามารถตรวจสอบได้ในสองวิธีดังต่อไปนี้
-
ตรวจสอบบันทึก Logcat หลังจากเรียกใช้
Adiz.Initialize()
: -
หลังจากเรียกใช้
Adiz.Initialize()
ไม่ว่าจะเป็นประเภทโฆษณาใด ให้เรียกใช้initialize()
→load()
และตรวจสอบบันทึก Logcat:
หลังจากตรวจสอบ ID อุปกรณ์ทดสอบแล้ว ให้เพิ่มบรรทัด Adiz.setTestDevice(DEVICE_ID)
ก่อนที่จะดำเนินการ Adiz.initialize
ในโค้ดการเริ่มต้น Adiz ที่มีอยู่ ป้อน ID อุปกรณ์ทดสอบที่คัดลอกมาใน DEVICE_ID
using hiveAdiz;
public void Initialize() {
// 테스트 디바이스 설정
Adiz.SetTestDevice("33BE2250B43518CCDA7DE426D04EE231");
Adiz.Initialize(new CommonHandlers.Builder()
.OnResult(InitResultCB)
.Build());
}
การใช้งาน Ad Inspector¶
Ad Inspector เป็นเครื่องมือแบบ overlay ในแอปที่วิเคราะห์กระบวนการขอและแสดงโฆษณาจริงบนอุปกรณ์ทดสอบแบบเรียลไทม์ มันจะแจ้งให้คุณทราบถึงเวลาที่ใช้ในการโหลดโฆษณาและให้เหตุผลสำหรับความล้มเหลวหากโฆษณาไม่แสดง คุณยังสามารถระบุเครือข่ายโฆษณาเฉพาะเพื่อตรวจสอบว่าโฆษณาแสดงผลถูกต้องหรือไม่ และหากมีปัญหา คุณสามารถดีบักที่ระดับโค้ด ทั้งหมดนี้ทำควบคู่ไปกับ UI ของ Ad Inspector มันรวมอยู่ใน Google Mobile Ads SDK Android 20.0.0 และ Google Mobile Ads SDK iOS 7.68.0 ขึ้นไป และสามารถใช้งานได้โดยการเรียกใช้ AdizDeveloperTool.OpenAdInspector
.
ในการใช้ตัวตรวจสอบโฆษณา ต้องตั้งค่าการลงทะเบียนอุปกรณ์ทดสอบ
การกำหนดค่า Adiz AppID¶
ตั้งค่า Adiz AppID ที่ลงทะเบียนในคอนโซล Hive AppCenter หากไม่ได้ตั้งค่า จะใช้ชื่อแพ็คเกจหรือ 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 ป๊อปอัปการยินยอม ATT จะถูกแสดงทันทีหลังจากป๊อปอัปการยินยอม GDPR โดยไม่แสดงข้อความ IDFA หากผู้ใช้เคยตกลงกับรายการ GDPR มาก่อน ข้อความ IDFA จะถูกแสดงตามปกติก่อนที่จะแสดงป๊อปอัปการยินยอม ATT
การแสดงป๊อปอัพการยินยอม GDPR (ยุโรป, สหราชอาณาจักร)¶
หากเกมมีเป้าหมายที่ยุโรปและสหราชอาณาจักร (EEA & สหราชอาณาจักร) จะต้องแสดงป๊อปอัพการยินยอม GDPR (กฎระเบียบการคุ้มครองข้อมูลทั่วไป) ป๊อปอัพการยินยอม GDPR จะแสดงเฉพาะเมื่อที่อยู่ IP ของอุปกรณ์ของผู้ใช้มาจากยุโรปหรือสหราชอาณาจักร (EEA & สหราชอาณาจักร) Adiz รองรับการแสดงป๊อปอัพการยินยอม GDPR ผ่าน Google UMP (User Messaging Platform) หลังจากสร้างข้อความ GDPR ในคอนโซล AdMob ให้ เริ่มต้น Adiz เพื่อแสดงป๊อปอัพ GDPR ให้กับผู้ใช้ที่เข้าถึงจากยุโรปและสหราชอาณาจักร.
Warning
หากคุณกำลังมุ่งเป้าไปยังพื้นที่นอกยุโรปและสหราชอาณาจักร เช่น หากคุณวางแผนที่จะให้บริการภายในประเทศเท่านั้น คุณสามารถข้ามขั้นตอน การเปิดเผยป๊อปอัปความยินยอม GDPR (ยุโรป, สหราชอาณาจักร) และดำเนินการเริ่มต้นด้วยวิธี Adiz.InitializeForNonGDPR()
ได้.
หากคุณดำเนินการเริ่มต้นด้วยวิธี Adiz.Initialize()
คุณต้องสร้างข้อความ GDPR ในคอนโซล AdMob เพื่อให้การเริ่มต้น Adiz ดำเนินการตามปกติ
การเขียนข้อความ GDPR¶
เข้าถึงคอนโซล Google AdMob เพื่อเขียนข้อความ GDPR ของคุณ ก่อนที่จะเขียนข้อความ GDPR โปรดดูที่ คู่มือการเขียนข้อความ GDPR.
หากคุณได้เขียนข้อความ GDPR แล้ว ป๊อปอัปการยินยอม GDPR จะปรากฏขึ้นโดยอัตโนมัติเมื่อ Adiz ถูกเริ่มต้น.
Warning
หากคุณกำลังใช้ SDK ของ Hive คุณต้องเรียกใช้ AuthV4.setup
หลังจากเสร็จสิ้นการเริ่มต้น Hive Adiz หากหน้าจอการยินยอม GDPR ปรากฏขึ้นหลังจากแสดงการแจ้งเตือนการยินยอม ATT (App Tracking Transparency) แอปของคุณอาจถูกปฏิเสธระหว่างการตรวจสอบแอปของ Apple.
การดำเนินการฟังก์ชันการยินยอมและการถอนการยินยอมตาม GDPR¶
รายการในป๊อปอัพการยินยอมตาม GDPR ควรมีฟีเจอร์การแก้ไขเพื่อให้ผู้ใช้สามารถเปลี่ยนสถานะการยินยอมได้ทุกเมื่อ ตัวอย่างเช่น ผู้ใช้อาจไม่ยินยอมตาม GDPR ในตอนแรก แต่ต่อมาต้องการยินยอมอีกครั้งเพื่อดูโฆษณาที่ปรับให้เหมาะสม หรือในทางกลับกัน ผู้ใช้อาจเคยยินยอมตาม GDPR แต่ไม่ต้องการให้ข้อมูลส่วนบุคคลอีกต่อไปและต้องการถอนการยินยอมของตน เพื่อจัดการกับสถานการณ์เหล่านี้ นักพัฒนาแอปต้องดำเนินการฟังก์ชันที่อนุญาตให้ผู้ใช้ยินยอมใหม่ต่อแต่ละรายการหรือถอนการยินยอมที่มีอยู่ เพื่อดำเนินการฟังก์ชันการยินยอม/การถอนการยินยอมตาม GDPR ให้ทำตามขั้นตอนเหล่านี้
- สร้าง UI ปุ่มในแอปที่สามารถเปิดหน้าต่างการยินยอม GDPR ใหม่ได้
- เมื่อทำการติดตั้ง การเริ่มต้น Adiz ให้เรียก
isPrivacyOptionsRequired()
เพื่อแสดง UI ปุ่มสำหรับผู้ใช้ที่เข้าถึงจากยุโรปและสหราชอาณาจักร และไม่แสดงสำหรับผู้ใช้อื่น หากผู้ใช้จากยุโรปหรือสหราชอาณาจักรคลิกปุ่ม ให้เรียกshowPrivacyOptionsForm
เพื่อเปิดหน้าต่างการยินยอม GDPR ใหม่ หลังจากนั้น ผู้ใช้สามารถแก้ไขการยินยอมสำหรับรายละเอียด 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
การตั้งค่าแท็กความยินยอมของผู้เยาว์ตาม GDPR setTagForUnderAgeOfConsent
และการตั้งค่า COPPA ที่มุ่งเป้าไปที่เด็ก setTagForChildDirectedTreatment
เป็น 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 ของอุปกรณ์มาจากยุโรปหรือสหราชอาณาจักร ในระหว่างขั้นตอนการพัฒนา ป๊อปอัปการยินยอม GDPR สามารถแสดงได้โดยบังคับไม่ว่าที่อยู่ IP จะเป็นอย่างไรเพื่อทดสอบการแสดงป๊อปอัป และเพื่อทำเช่นนี้ คุณต้องตั้งค่าอุปกรณ์ทดสอบ GDPR โปรดทำตามขั้นตอนด้านล่างเพื่อทำการตั้งค่าอุปกรณ์ทดสอบ GDPR เนื้อหาต่อไปนี้เหมือนกับวิธีการ แสดงโฆษณาบนอุปกรณ์ทดสอบ.
- เริ่มต้น Adiz โดย เริ่มต้น นี่คือการเริ่มต้นเพื่อตรวจสอบ ID อุปกรณ์ทดสอบ และไม่มีความจำเป็นต้องเขียนข้อความยินยอม GDPR.
ส่งออกบันทึกจาก Android Studio หรือ Xcode เพื่อตรวจสอบ ID อุปกรณ์ ตัวอย่างบันทึกมีดังนี้.
- Android: from
ใช้ 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 กับ SDK Hive แท็กการกำหนดเป้าหมายเด็กจะถูกนำไปใช้โดยอัตโนมัติ ดังนั้นจึงไม่จำเป็นต้องมีการกำหนดค่าเพิ่มเติม
using hiveAdiz;
public void Initialize() {
bool isTagForChildDirectedTreatment = false; // Change to true if it is for children
PrivacySettings settings = new PrivacySettings.Builder()
.SetTagForChildDirectedTreatment(isTagForChildDirectedTreatment)
.Build();
AdizConsentManager.SetUserPrivacySettings(settings);
Adiz.Initialize(new CommonHandlers.Builder()
.OnResult(InitResultCB)
.Build());
}
เพิ่มการไกล่เกลี่ย¶
Adiz สามารถแสดงโฆษณาโดยใช้การไกล่เกลี่ย AdMob เพื่อเพิ่มการไกล่เกลี่ย AdMob ให้ทำตามขั้นตอนด้านล่าง
การเพิ่มการจัดการโฆษณา AdMob¶
เราจะดำเนินการรวมแหล่งโฆษณาในคอนโซล AdMob โปรดทำตามตารางด้านล่างเพื่อดำเนินการต่อ
AppLovin | Pangle | Unity Ads | |||
---|---|---|---|---|---|
ขั้นตอนที่ 1: การตั้งค่า | Android iOS | Android iOS | Android iOS | Android iOS | Android iOS |
ขั้นตอนที่ 2: เพิ่มแหล่งโฆษณา | Android iOS | Android iOS | Android iOS | Android iOS | |
ขั้นตอนที่ 3 | เพิ่ม Adiz Adapter |
การเพิ่มอะแดปเตอร์ 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.1"/>
<!-- AppLovin -->
<androidPackage spec="com.com2us.android.adiz:hive-adiz-adapter-applovin:2.1.1"/>
<!-- Liftoff -->
<androidPackage spec="com.com2us.android.adiz:hive-adiz-adapter-liftoff:2.1.1"/>
<!-- Meta -->
<androidPackage spec="com.com2us.android.adiz:hive-adiz-adapter-meta:2.1.1"/>
<!-- Pangle -->
<androidPackage spec="com.com2us.android.adiz:hive-adiz-adapter-pangle:2.1.1"/>
<!-- Unity Ads -->
<androidPackage spec="com.com2us.android.adiz:hive-adiz-adapter-unityads:2.1.1"/>
</androidPackages>
<iosPods>
<sources>
<source>https://github.com/Com2uSPlatformCorp/HiveAdiz-iOS.git</source>
</sources>
<iosPod name="HiveAdizUnityPlugin" version="2.1.1"/>
<iosPod name="HiveAdizAdapterAppLovin" version="2.1.1"/>
<iosPod name="HiveAdizAdapterLiftoff" version="2.1.1"/>
<iosPod name="HiveAdizAdapterMeta" version="2.1.1"/>
<iosPod name="HiveAdizAdapterPangle" version="2.1.1"/>
<iosPod name="HiveAdizAdapterUnityAds" version="2.1.1"/>
</iosPods>
</dependencies>
เพื่อตรวจสอบว่าการตั้งค่าอะแดปเตอร์ Adiz ได้ถูกนำไปใช้ถูกต้องหรือไม่ ให้เรียกใช้แอปและตรวจสอบรายการการตั้งค่าบนหน้าจอ Ad Inspector.
การเริ่มต้น Adiz¶
นี่คือขั้นตอนที่ต้องดำเนินการก่อนแสดงโฆษณาทุกประเภท โดยการเริ่มต้น Adiz คุณจะได้รับคีย์โฆษณาที่จำเป็นสำหรับการแสดงโฆษณา หากคุณอยู่ในโหมดทดสอบ คุณจะได้รับคีย์ทดสอบ หากคุณกำลังใช้ SDK Hive ให้ดำเนินการเริ่มต้น Adiz หลังจากเรียกใช้ AuthV4.setup
Warning
หากคุณกำลังใช้การตั้งค่า GDPR คุณต้องเรียกใช้ AuthV4.setup
หลังจากเสร็จสิ้นการเริ่มต้น Hive Adiz หากหน้าจอขอความยินยอม GDPR ปรากฏขึ้นหลังจากแสดงการแจ้งเตือนความยินยอม ATT (App Tracking Transparency) แอปอาจถูกปฏิเสธในระหว่างการตรวจสอบแอปของ Apple.
using hiveAdiz;
public void Start() {
/* omitted */
// เพื่อใช้การเรียกกลับ HiveAdiz คุณต้องลงทะเบียน AdizCallbackManager เป็น GameObject.
Adiz.InitPlugin();
}
Adiz.Initialize(new CommonHandlers.Builder()
.OnResult(InitResultCB)
.Build());
// เริ่มต้นตัวฟัง Callback
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 คอนโซลและลงทะเบียนโฆษณาใหม่.
การตั้งค่าผู้ฟังการเรียกกลับโฆษณา¶
โดยการใช้ AdizListener
เมื่อสร้างอินสแตนซ์โฆษณาแต่ละรายการ คุณสามารถรับการเรียกกลับตามการเปลี่ยนแปลงในสถานะโฆษณา。
ชื่อ | คำอธิบาย | การดำเนินการที่จำเป็น |
---|---|---|
.OnAdLoad(OnAdLoadCB) | โหลดโฆษณาสำเร็จ | O |
.OnAdFail(OnAdLoadFailedCB) | ความล้มเหลว (สาเหตุของความล้มเหลวสามารถทราบได้ผ่าน `error.errorCode()` และ `error.errorMessage()`) | O |
.OnAdShow(OnAdShowCB) | การแสดงโฆษณาสำเร็จ | O |
.OnAdClick(OnAdClickCB) | คลิกโฆษณา | O |
.OnAdPaidEvent(OnAdPaidEventCB) | มันคือจุดที่ได้รับเหตุการณ์ที่ชำระเงินหลังจากการแสดงโฆษณา และข้อมูลรายได้จากการโฆษณาจะถูกส่งมอบ | O |
.OnAdClose(OnAdCloseCB) | โฆษณาสิ้นสุด
| X |
.OnAdReward(OnAdRewardCB) | จุดที่ผู้ใช้ได้รับรางวัลหลังจากการแสดงโฆษณาในโฆษณาที่มีรางวัล (`rewarded`, `rewarded interstitial`) | X |
private void OnAdLoadCB()
{
// This will be called when the ad is loaded.
// If the ad load is successful, you should call the ad instance's .show() at the desired time to display the ad.
Debug.Log(TAG + "::OnAdLoadCB");
// AdizInterstitial โหลดและพร้อมที่จะแสดง
// requestShowAd();
}
private void OnAdLoadFailedCB(AdizError error) {
// This is called when the ad load fails or when the ad fails to show for other reasons.
Debug.Log(TAG + "::OnAdLoadFailedCB errorCode "+error.errorCode);
Debug.Log(TAG + "::OnAdLoadFailedCB errorMessage "+error.errorMessage);
}
private void OnAdShowCB()
{
// This will be called when the ad is displayed.
Debug.Log(TAG + "::OnAdShowCB");
}
private void OnAdCloseCB()
{
// นี่คือการเรียกเมื่อโฆษณาถูกปิด.
Debug.Log(TAG + "::OnAdCloseCB");
// ลบหลังจากแสดงโฆษณา AdizInterstitial
// requestDestroyAd();
}
private void OnAdClickCB()
{
// This is called when the ad is clicked.
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 หรืออยู่ในสถานะที่ไม่จำเป็นต้องแสดง |
การเปิดเผยโฆษณาและการยุติโฆษณา\nปฏิบัติตามขั้นตอนเหล่านี้เพื่อเปิดเผยและยุติโฆษณา.¶
- สร้างอินสแตนซ์โฆษณาในคลาสโฆษณาสำหรับแต่ละประเภทของโฆษณาที่คุณต้องการแสดง หากโฆษณาที่คุณต้องการแสดงไม่ใช่ โฆษณาเริ่มต้น คุณต้องป้อนคีย์โฆษณาหรือ ID การวางที่ได้รับจาก การเริ่มต้น หากคุณไม่ป้อนคีย์โฆษณา (
hiveAdKey
) หรือ ID การวาง (placementId
) จะมีการสร้างอินสแตนซ์โฆษณาเริ่มต้นขึ้น ID การวางสามารถตั้งค่าได้ในคอนโซล Hive และสำหรับรายละเอียดเพิ่มเติมโปรดดูที่ หน้าการตั้งค่า Admob ในคู่มือคอนโซล - โหลดโฆษณาที่คุณต้องการแสดง (
load()
). - โหลดโฆษณาที่คุณต้องการแสดง (
load()
). - แสดงโฆษณาที่โหลดแล้ว (
show()
) หากต้องการแสดงโฆษณาอีกครั้งคุณต้องเรียกload()
อีกครั้งแล้วจึงเรียกshow()
. - หากต้องการปิดโฆษณาให้เรียก
destroy()
.
โฆษณาแบบแทรก¶
โฆษณาขนาดเต็มหน้าจอที่ครอบคลุมทั้งหน้าจอ.
// 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)) {
// Initialize Default AdizInterstitial Instance (AdEventHandlers)
InterstitialAd = AdizInterstitial.Initialize(eventHandlers);
} else {
// Initialize AdizInterstitial Instance (placementId, AdEventHandlers)
InterstitialAd = AdizInterstitial.InitializeWithPlacementId(interstitialPlacementId, eventHandlers);
}
}
public void requestLoadAd() {
// Load AdizInterstitial
if(InterstitialAd != null && InterstitialAd.IsInitialized()) InterstitialAd.Load();
}
public void requestShowAd() {
// แสดง 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 Medium Rectangle | โทรศัพท์มือถือและแท็บเล็ต | BannerSize.LARGE |
468 x 60 | IAB Full-Size Banner | แท็บเล็ต | BannerSize.FULL |
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) {
// กำหนดขนาดแบนเนอร์
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)) {
// Initialize Default AdizBanner Instance (AdEventHandlers)
BannerAd = AdizBanner.Initialize(bannerSize, eventHandlers);
} else {
// Initialize AdizBanner Instance (placementId, AdEventHandlers)
BannerAd = AdizBanner.InitializeWithPlacementId(bannerPlacementId, bannerSize, eventHandlers);
}
}
public void requestLoadAd() {
// Load AdizBanner
if(BannerAd != null && BannerAd.IsInitialized()) BannerAd.Load();
}
public void requestShowAd() {
// ตั้งค่าประเภทตำแหน่ง
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 ความสูง) | แม่แบบ | การจัดตำแหน่ง | ค่าคงที่ขนาดแบนเนอร์ |
---|---|---|---|
355x91 (ปรับอัตราส่วน) | ขนาดเล็ก | ด้านบน / ด้านล่าง | BannerSize.NORMAL |
355x370 (ปรับอัตราส่วน) | ขนาดกลาง | กลาง (คงที่) | BannerSize.MEDIUM, BannerSize.LARGE, BannerSize.FULL |
ในเทมเพลต small
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)) {
// Initialize Default AdizNative Instance (AdEventHandlers)
NativeAd = AdizNative.Initialize(bannerSize, eventHandlers);
} else {
// Initialize AdizNative Instance (hiveAdKey, AdEventHandlers)
NativeAd = AdizNative.Initialize(nativeAdKey, bannerSize, eventHandlers);
}
}
public void requestInitAdWithPlacementId(string nativePlacementId) {
// 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(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() {
// ตั้งค่าประเภทตำแหน่ง
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;
}
โฆษณาที่ได้รับรางวัล¶
นี่คือโฆษณาที่ได้รับรางวัลซึ่งผู้ใช้จะได้รับรางวัลสำหรับการดูโฆษณาเป็นระยะเวลาหนึ่ง เมื่อได้รับรางวัล ข้อมูลรายการรางวัลจะถูกส่งผ่านการเรียกกลับ 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)) {
// Initialize Default AdizRewarded Instance (AdEventHandlers)
RewardVideoAd = AdizRewarded.Initialize(eventHandlers);
} else {
// Initialize AdizRewarded Instance (placementId, AdEventHandlers)
RewardVideoAd = AdizRewarded.InitializeWithPlacementId(rewardedPlacementId, eventHandlers);
}
}
public void requestLoadAd() {
// Load AdizRewarded
if(RewardVideoAd != null && RewardVideoAd.IsInitialized()) RewardVideoAd.Load();
}
public void requestShowAd() {
// แสดง AdizRewarded
if(RewardVideoAd != null && RewardVideoAd.IsLoaded()) RewardVideoAd.Show();
}
public void requestDestroyAd() {
// ทำลาย AdizRewarded
if(RewardVideoAd != null) RewardVideoAd.Destroy();
RewardVideoAd = null;
}
โฆษณาแบบแทรกที่ได้รับรางวัล¶
นี่คือโฆษณาแบบแทรกที่ผู้ใช้จะได้รับรางวัลสำหรับการดูโฆษณาเป็นระยะเวลาหนึ่ง เมื่อได้รับรางวัล ข้อมูลรายการรางวัลจะถูกส่งผ่านการเรียกกลับ 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)) {
// Initialize Default AdizRewardedInterstitial Instance (AdEventHandlers)
RewardedInterstitialAd = AdizRewardedInterstitial.Initialize(eventHandlers);
} else {
// Initialize AdizRewardedInterstitial Instance (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)) {
// เริ่มต้น AdizRewardedInterstitial เริ่มต้น (AdEventHandlers)
RewardedInterstitialAd = AdizRewardedInterstitial.Initialize(eventHandlers);
} else {
// เริ่มต้น AdizRewardedInterstitial (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 ชั่วโมงนับตั้งแต่โหลดโฆษณา โฆษณาจะถูกโหลดใหม่โดยอัตโนมัติก่อนที่จะแสดง Once an ad has been displayed at least once, it will not reload automatically.
// Create 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)) {
// เริ่มต้น AdizAppOpen Instance เริ่มต้น (AdEventHandlers)
AppOpenAd = AdizAppOpen.Initialize(eventHandlers);
} else {
// เริ่มต้น 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)) {
// Initialize Default AdizAppOpen Instance (AdEventHandlers)
AppOpenAd = AdizAppOpen.Initialize(eventHandlers);
} else {
// Initialize 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 ของคุณ.
- Assets/HiveAdiz
- Assets/HiveAdiz_Example