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 (Assets > External Dependency Manager > Android Resolver > Settings) ของ Unity.
การตั้งค่าผู้เล่น > ผู้เล่น > สร้าง หน้าจอการตั้งค่า ตรวจสอบสี่รายการต่อไปนี้
เมื่อใช้ Proguard กฎ ProGuard สำหรับโมดูล Adiz จะถูกนำเข้ามา ดังนั้นจึงไม่จำเป็นต้องเพิ่มกฎ ProGuard ลงในโปรเจกต์
iOS¶
ใน Assets > External Dependency Manager > iOS Resolver > Settings ให้ยกเลิกการเลือกการตั้งค่า static_framework
build.
เปิดไฟล์ 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', '3.0.0
end
target 'Unity-iPhone' do
end
use_frameworks!
# fix for dyld issue in pods when using Project
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
# xcode 15 Toolchain Issue
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 }
# end
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 the line below for production deployment.
Adiz.SetTestMode(true);
// เปิดใช้งานการบันทึกโมดูล Adiz การบันทึกควรใช้เฉพาะในโหมดทดสอบ คอมเมนต์บรรทัดด้านล่างสำหรับการปรับใช้ในผลิตภัณฑ์.
Adiz.SetLogEnable(true);
การโฆษณาอุปกรณ์ทดสอบ¶
คุณต้องลงทะเบียนอุปกรณ์ทดสอบเพื่อแสดงโฆษณาทดสอบในสถานการณ์ต่อไปนี้
- ทดสอบว่า AdMob ad key ที่ลงทะเบียนในคอนโซล Hive ทำงานได้อย่างถูกต้อง
- เขียนข้อความ GDPR และตรวจสอบว่าหน้าต่างขอความยินยอม GDPR ทำงานได้อย่างถูกต้อง
- รัน ad inspector เพื่อวิเคราะห์และแก้ไขข้อผิดพลาดในการร้องขอโฆษณา
มีสองวิธีในการแสดงโฆษณาบนอุปกรณ์ทดสอบ.
-
หลังจากลงทะเบียนอุปกรณ์ทดสอบในคอนโซล Hive ให้ตั้งค่าเป็น ใช้หมายเลข ID หน่วยโฆษณา (แนะนำ):
กรุณาอ้างอิงไปที่ส่วน การจัดการอุปกรณ์ทดสอบ ของคู่มือคอนโซล. -
ใช้ 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() {
// set test device
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)
เขียนและเผยแพร่ข้อความ IDFA บน แดชบอร์ด Google AdMob ตามที่แสดงด้านล่าง
เมื่อเขียนข้อความ IDFA คุณสามารถอ้างอิงจากคู่มือต่อไปนี้
- IDFA Implementation Guide
- IDFA Message Creation Guide
- Explanation about IDFA Messages and ATT Notifications
เมื่อคุณโพสต์ข้อความ IDFA บนแดชบอร์ด AdMob ข้อความ IDFA จะถูกแสดงโดยอัตโนมัติระหว่างการเริ่มต้น Adiz บน iOS 14.5 ขึ้นไป เมื่อผู้ใช้คลิก "ดำเนินการต่อ" ในหน้าต่างข้อความ IDFA จะมีป๊อปอัปการยินยอม ATT แสดงขึ้น
เมื่อผู้ใช้คลิก "อนุญาต" บนป๊อปอัปความยินยอม ATT IDFA จะถูกเปิดใช้งาน และโฆษณาที่เฉพาะเจาะจงสำหรับผู้ใช้จะแสดงผล
Note
ผู้ใช้ที่เข้าถึงจากยุโรปและสหราชอาณาจักรจะเห็นป๊อปอัปการยินยอม GDPR หากผู้ใช้ไม่เคยยินยอมต่อรายการ GDPR ป๊อปอัปการยินยอม ATT จะถูกแสดงทันทีหลังจากป๊อปอัปการยินยอม GDPR โดยไม่แสดงข้อความ IDFA หากผู้ใช้เคยยินยอมต่อรายการ GDPR ข้อความ IDFA จะถูกแสดงตามปกติก่อนที่จะมีการแสดงป๊อปอัปการยินยอม ATT
การแสดงป๊อปอัพการยินยอม GDPR (ยุโรป, สหราชอาณาจักร)¶
หากเกมของคุณมุ่งเป้าไปที่ยุโรปและสหราชอาณาจักร (EEA & UK) คุณต้องแสดงป๊อปอัพการยินยอม GDPR (กฎระเบียบทั่วไปว่าด้วยการคุ้มครองข้อมูล) ป๊อปอัพการยินยอม GDPR จะถูกแสดงเฉพาะเมื่อที่อยู่ IP ของอุปกรณ์ของผู้ใช้มาจากยุโรปและสหราชอาณาจักร (EEA & UK) Adiz รองรับการแสดงป๊อปอัพการยินยอม GDPR ผ่าน Google UMP (User Messaging Platform) หลังจากสร้างข้อความ GDPR ในคอนโซล AdMob ให้ เริ่มต้น Adiz เพื่อแสดงป๊อปอัพ GDPR ให้กับผู้ใช้ที่เข้าถึงจากยุโรปและสหราชอาณาจักร.
Warning
หากคุณกำลังมุ่งเป้าไปที่ภูมิภาคนอกยุโรปและสหราชอาณาจักร เช่น หากคุณวางแผนที่จะให้บริการเฉพาะในประเทศ คุณสามารถข้ามขั้นตอน การเปิดเผยป๊อปอัปความยินยอม GDPR (ยุโรป, สหราชอาณาจักร) และดำเนินการเริ่มต้นด้วยวิธี Adiz.InitializeForNonGDPR()
ได้
หากคุณดำเนินการเริ่มต้นด้วยวิธี Adiz.Initialize()
คุณต้องสร้างข้อความ GDPR ในคอนโซล AdMob เพื่อให้การเริ่มต้น Adiz ดำเนินไปตามปกติ
Warning
หากคุณกำลังใช้ SDK ของ Hive คุณต้องเรียกใช้ AuthV4.setup
หลังจากเสร็จสิ้นการเริ่มต้น Hive Adiz หากหน้าจอการยินยอม GDPR ปรากฏขึ้นหลังจากแสดงการแจ้งเตือนการยินยอม ATT (App Tracking Transparency) แอปของคุณอาจถูกปฏิเสธในระหว่างการตรวจสอบแอปของ Apple.
การเขียนข้อความ GDPR¶
เข้าถึงคอนโซล Google AdMob เพื่อเขียนข้อความ GDPR ก่อนเขียนข้อความ GDPR โปรดดูที่ คู่มือการเขียนข้อความ GDPR.
เมื่อสร้างข้อความ GDPR คุณต้องเพิ่มการไกล่เกลี่ยที่คุณต้องการใช้ลงในรายชื่อพันธมิตรโฆษณา นี่คือวิธีการเพิ่มการไกล่เกลี่ย.
1) ไปที่แท็บ ความเป็นส่วนตัวและการส่งข้อความ > กฎระเบียบของยุโรป > การตั้งค่า ในแดชบอร์ด Google AdMob จากนั้นคลิกที่ไอคอนแก้ไขสำหรับ 'การตรวจสอบพันธมิตรโฆษณา > พันธมิตรโฆษณาที่กำหนดเอง. 2) เลือกพันธมิตรการจัดการทั้งหมดที่ได้รับการรับรองโดย Google ภายใต้ GDPR เพื่อเพิ่มในกลุ่ม หรือเลือกเฉพาะพันธมิตรการจัดการที่ต้องการและคลิก เพิ่ม.
หากคุณได้เขียนข้อความ GDPR แล้ว ป๊อปอัปการยินยอม GDPR จะปรากฏขึ้นโดยอัตโนมัติเมื่อ Adiz ถูกเริ่มต้น.
การดำเนินการของฟังก์ชันการยินยอมและการถอนการยินยอมตาม 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() { // Call privacy options form 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 จะถูกนำไปใช้โดยอัตโนมัติสำหรับผู้ใช้ที่อายุต่ำกว่าการยินยอม
อย่างไรก็ตาม หากผู้ใช้เรียกใช้ API AdizConsentManager.setUserPrivacySettings
ด้วยตนเองก่อนการเริ่มต้น Adiz.initialize
การตั้งค่าอายุการยินยอมจาก Hive SDK จะไม่ถูกนำไปใช้ และค่าที่ตั้งไว้ในระหว่างการเรียก API 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
ใช้ new 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; // เปลี่ยนเป็น true หากเป็นสำหรับเด็ก
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 | Liftoff Monetize | Meta Audience Network | Pangle | Unity Ads | ironSource | |
---|---|---|---|---|---|---|
ขั้นตอนที่ 1: ตั้งค่า | Android iOS | Android iOS | Android iOS | Android iOS | Android iOS | Android iOS |
ขั้นตอนที่ 2: เพิ่มแหล่งโฆษณา | Android iOS | Android iOS | 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:3.0.0"/>
<!-- AppLovin -->
<androidPackage spec="com.com2us.android.adiz:hive-adiz-adapter-applovin:3.0.0"/>
<!-- Liftoff -->
<androidPackage spec="com.com2us.android.adiz:hive-adiz-adapter-liftoff:3.0.0"/>
<!-- Meta -->
<androidPackage spec="com.com2us.android.adiz:hive-adiz-adapter-meta:3.0.0"/>
<!-- Pangle -->
<androidPackage spec="com.com2us.android.adiz:hive-adiz-adapter-pangle:3.0.0"/>
<!-- Unity Ads -->
<androidPackage spec="com.com2us.android.adiz:hive-adiz-adapter-unityads:3.0.0"/>
<!-- ironSource -->
<androidPackage spec="com.com2us.android.adiz:hive-adiz-adapter-ironsource:3.0.0"/>
</androidPackages>
<iosPods>
<sources>
<source>https://github.com/Com2uSPlatformCorp/HiveAdiz-iOS.git</source>
</sources>
<iosPod name="HiveAdizUnityPlugin" version="3.0.0"/>
<iosPod name="HiveAdizAdapterAppLovin" version="3.0.0"/>
<iosPod name="HiveAdizAdapterLiftoff" version="3.0.0"/>
<iosPod name="HiveAdizAdapterMeta" version="3.0.0"/>
<iosPod name="HiveAdizAdapterPangle" version="3.0.0"/>
<iosPod name="HiveAdizAdapterUnityAds" version="3.0.0"/>
<iosPod name="HiveAdizAdapterIronSource" version="3.0.0"/>
</iosPods>
</dependencies>
เพื่อตรวจสอบว่าการกำหนดค่าของ Adiz adapter ได้ถูกนำไปใช้ถูกต้องหรือไม่ ให้เรียกใช้แอปและตรวจสอบรายการการกำหนดค่าบนหน้าจอ Ad Inspector.
การเริ่มต้น Adiz เป็นขั้นตอนที่จำเป็นต้องดำเนินการก่อนที่จะมีการแสดงโฆษณาในรูปแบบใด ๆ การเริ่มต้น Adiz จะทำให้คุณได้รับกุญแจโฆษณาที่จำเป็นสำหรับการแสดงโฆษณา หากโหมดทดสอบเปิดใช้งาน คุณจะได้รับกุญแจทดสอบ
Warning
หากคุณกำลังใช้การตั้งค่า GDPR คุณต้องเรียกใช้ AuthV4.setup
หลังจากเสร็จสิ้นการเริ่มต้น Hive Adiz หากหน้าจอขอความยินยอม GDPR ปรากฏขึ้นหลังจากแสดงการแจ้งเตือนการขอความยินยอม ATT (App Tracking Transparency) แอปของคุณอาจถูกปฏิเสธระหว่างการตรวจสอบแอปของ Apple
Warning
การเรียก API ทั้งหมดไปยังโมดูล Adiz Android จะต้องทำในเธรดหลักของ Unity หากคุณเรียก API ของ Adiz จาก Task.Run()
หรือเธรดทำงานแยกต่างหากแทนที่จะเป็นเธรดหลัก ฟีเจอร์ของ Adiz อาจไม่ทำงานอย่างถูกต้อง หากคุณต้องเรียกจากนอกเธรดหลัก ให้ใช้ Adiz.RunOnMainThread
เพื่อเรียก API
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) {
// นี่ถูกเรียกเมื่อการโหลดโฆษณาล้มเหลวหรือไม่สามารถแสดงได้ aus อื่นๆ
Debug.Log(TAG + "::OnAdLoadFailedCB errorCode "+error.errorCode);
Debug.Log(TAG + "::OnAdLoadFailedCB errorMessage "+error.errorMessage);
}
private void OnAdShowCB()
{
// This is called when the ad is displayed.
Debug.Log(TAG + "::OnAdShowCB");
}
private void OnAdCloseCB()
{
// This is called when the ad is closed.
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 หรืออยู่ในสถานะที่ไม่จำเป็นต้องแสดง |
การแสดงโฆษณาและการสิ้นสุดโฆษณา¶
ปฏิบัติตามขั้นตอนด้านล่างเพื่อแสดงและสิ้นสุดโฆษณา.
- สร้างอินสแตนซ์โฆษณาในคลาสโฆษณาสำหรับแต่ละประเภทของโฆษณาที่คุณต้องการแสดง หากโฆษณาที่คุณต้องการแสดงไม่ใช่ โฆษณาเริ่มต้น คุณต้องป้อนคีย์โฆษณาหรือ 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)) {
// 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;
}
<
โฆษณาแบนเนอร์¶
นี่คือโฆษณาแบนเนอร์ที่แสดงแบนเนอร์ขนาดเฉพาะ โฆษณาแบนเนอร์จะไม่ได้รับการเรียกคืน 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)) {
// เริ่มต้นอินสแตนซ์ 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;
}
การโฆษณาแบบเนทีฟ¶
นี่คือโฆษณาเนทีฟที่แสดงเทมเพลตเนทีฟขนาดเฉพาะ โฆษณาเนทีฟได้รับการปรับให้เหมาะสมสำหรับหน้าจอแนวตั้ง ดังนั้นจึงแนะนำให้ใช้ในเกมแนวตั้ง (เกมหน้าจอแนวตั้ง) โฆษณาเนทีฟจะไม่ได้รับการเรียกคืน OnAdClose()
ดังนั้นคุณต้องเรียกใช้ destroy()
จากตำแหน่งอื่นเพื่อปิดโฆษณา
เทมเพลตปัจจุบันสนับสนุนขนาด เล็ก
หรือ กลาง
ขนาดจุด (ความกว้าง x ความสูง) | เทมเพลต | การจัดแนว | ค่าคงที่ BannerSize |
---|---|---|---|
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) {
// กำหนดขนาดแบนเนอร์
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)) {
// Initialize Default AdizNative Instance (AdEventHandlers)
NativeAd = AdizNative.Initialize(bannerSize, eventHandlers);
} else {
// Initialize 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;
}
โฆษณาที่ได้รับรางวัล¶
นี่คือโฆษณาที่ได้รับรางวัลซึ่งผู้ใช้จะได้รับรางวัลเมื่อดูโฆษณาเป็นระยะเวลาหนึ่ง เมื่อได้รับรางวัล ข้อมูลรายการรางวัลจะถูกส่งผ่านการเรียกกลับ OnAdReward()
// Create 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)) {
// Initialize Default AdizRewarded Instance (AdEventHandlers)
RewardVideoAd = AdizRewarded.Initialize(eventHandlers);
} else {
// Initialize 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() {
// Show 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()
หากเวลาผ่านไปมากกว่า 3 ชั่วโมงนับตั้งแต่โหลดโฆษณา โฆษณาจะไม่แสดงและจะถูกโหลดใหม่โดยอัตโนมัติ โฆษณาจะถูกแสดงในครั้งถัดไปที่แอปเคลื่อนที่ไปยังพื้นหน้า หลังจากที่โฆษณาแสดงครั้งหนึ่งแล้ว จะไม่ถูกโหลดใหม่โดยอัตโนมัติ ดังนั้นคุณต้องเรียกใช้ load()
อีกครั้งเพื่อเตรียมโฆษณาถัดไป
// 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)) {
// 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)) {
// 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() {
// Destroy AdizAppOpen
if(AppOpenAd != null) AppOpenAd.Destroy();
AppOpenAd = null;
}
ถอนการติดตั้ง HiveAdiz¶
ในการถอนการติดตั้ง HiveAdiz ให้ลบโฟลเดอร์ด้านล่างภายในโปรเจกต์ Unity ของคุณ.
- Assets/HiveAdiz
- Assets/HiveAdiz_Example
ฟีเจอร์เพิ่มเติม¶
การเรียกจากเธรดหลักของ Android¶
API ที่เกี่ยวข้องกับ JNI ของ Android ต้องถูกเรียกจากเธรดหลักของ Unity หากคุณเรียกจากนอกเธรดหลัก ฟีเจอร์ของ Adiz อาจไม่ทำงานอย่างถูกต้อง หากคุณต้องเรียกจากเธรดที่ไม่ใช่หลัก ให้ใช้ Adiz.RunOnMainThread
เพื่อให้แน่ใจว่าตรรกะทำงานบนเธรดหลัก