Unity
Adiz Unity¶
Adiz Unity เป็นโมดูลโฆษณาสำหรับ Unity ที่จัดทำโดย Hive SDK ซึ่งทำให้การใช้ฟีเจอร์โฆษณาที่เสนอโดย AdMob ง่ายขึ้น ประเภทของโฆษณาที่เสนอโดย Adiz Unity มีดังนี้:
- โฆษณาแบบแทรก
- โฆษณาแบบแบนเนอร์
- โฆษณาแบบเนทีฟ
- โฆษณาแบบให้รางวัล
- โฆษณาแบบแทรกที่ให้รางวัล
- โฆษณาเปิดแอป
ในการติดตั้งและใช้งาน Adiz Unity ให้ทำตามคำแนะนำด้านล่างนี้
การติดตั้งหรืออัปเดต¶
- ตั้งค่า สภาพแวดล้อมนักพัฒนา Adiz Unity.
- ดาวน์โหลดเวอร์ชันล่าสุดของ Adiz ที่นี่ และแตกไฟล์ออก.
-
ใน Unity ให้ไปที่ Assets > Import Package > Custom Package…, เลือกไฟล์ .unitypackage และคลิก Import.
4. ตรวจสอบว่าไฟล์และโฟลเดอร์ Adiz ได้ถูกสร้างขึ้นภายใต้โฟลเดอร์ Assets หรือไม่.
5. ดาวน์โหลดและติดตั้งเวอร์ชันล่าสุดของ EDM4U. EDM4U รวมอยู่ใน Hive SDK v4. หากคุณใช้ 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>
ตรวจสอบการใช้ Jetifier ในการตั้งค่า Android Resolver ของ Unity (Assets > External Dependency Manager > Android Resolver > Settings).
ในหน้าจอการตั้งค่า Player > Player > การตั้งค่าการสร้าง ให้ตรวจสอบสามรายการต่อไปนี้。
เมื่อใช้ Proguard กฎ Proguard สำหรับ Adiz ได้รวมอยู่ในโมดูล Adiz แล้ว ดังนั้นจึงไม่จำเป็นต้องเพิ่มกฎ Proguard ลงในโปรเจกต์ของคุณ
ตรวจสอบเวอร์ชัน Gradle ปัจจุบันของคุณ สำหรับการสร้าง Android ที่เสถียร เวอร์ชัน Gradle ควรเป็น 6.7.1 หรือสูงกว่า และเวอร์ชันปลั๊กอิน Gradle ควรเป็น 4.2.0 หรือสูงกว่า นี่คือวิธีการเปลี่ยนเวอร์ชัน Gradle และเวอร์ชันปลั๊กอิน Gradle:
-
ใช้เทมเพลต Gradle พื้นฐานที่กำหนดเอง.
- ตรวจสอบการตั้งค่า Build > การตั้งค่าโปรเจกต์ > ผู้เล่น > เทมเพลต Gradle พื้นฐานที่กำหนดเอง.
- Assets/Plugins/Android/baseProjectTemplate.gradle จะถูกสร้างขึ้น.
-
เปลี่ยนเวอร์ชันของ Gradle Plugin. เปิดไฟล์ Assets/Plugins/Android/baseProjectTemplate.gradle* และเปลี่ยนเวอร์ชันเป็น
com.android.tools.build:gradle:4.2.0
. - ดาวน์โหลด เวอร์ชันที่ต้องการของ Gradle จากนั้นแตกไฟล์ในเส้นทางที่คุณต้องการ.
- เปลี่ยนเส้นทางการติดตั้ง Gradle ใน Unity.
- ยกเลิกการเลือก Preferences > External Tools > Gradle Installed with Unity.
- ตั้งค่าเส้นทางที่คุณแตกไฟล์ Gradle.
- ตรวจสอบว่า Target API Level เป็น 33 หรือสูงกว่าใน Player > Other Settings > Identification > Target API Level ก่อนที่จะสร้าง.
iOS¶
ยกเลิกการเลือกการตั้งค่า static_framework
ใน *Assets > External Dependency Manager > iOS Resolver > Settings.
กำหนดค่า 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.0.1'
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 อนุญาตให้คุณแสดงโฆษณาทดสอบได้สองวิธี。
- เปิดโหมดทดสอบ: แสดงโฆษณาทดสอบที่ออกโดย AdMob เท่านั้น.
- ลงทะเบียนอุปกรณ์ทดสอบและแสดงโฆษณา: แสดงโฆษณาจริงเพื่อวัตถุประสงค์ในการทดสอบ ลงทะเบียนอุปกรณ์เพื่อแสดงโฆษณาทดสอบเพื่อให้แน่ใจว่าไม่มีการเข้าชมที่ไม่ถูกต้องเกิดขึ้นระหว่างการทดสอบ.
เปิดโหมดทดสอบ¶
ในระยะการพัฒนา ให้เปิดโหมดทดสอบเพื่อป้องกันไม่ให้เรียกเก็บเงินจากผู้โฆษณาเมื่อมีการคลิกโฆษณาทดสอบ เมื่อเปิดโหมดทดสอบ จะมีการแสดงโฆษณาทดสอบเท่านั้น ในโหมดทดสอบ คุณสามารถแสดงโฆษณาทดสอบได้โดยไม่ต้องป้อนคีย์โฆษณา AdMob ใน Hive Console ปิดโหมดทดสอบสำหรับการจัดจำหน่ายเชิงพาณิชย์.
Note
การคลิกโฆษณาอย่างมากเกินไปเมื่อไม่ได้อยู่ในโหมดทดสอบในระหว่างขั้นตอนการพัฒนาอาจถือว่าเป็นการเข้าชมที่ไม่ถูกต้องและอาจทำให้บัญชี AdMob ของคุณถูกรายงานและไม่สามารถแสดงโฆษณาได้
using hiveAdiz;
// Enable test mode. Comment out the below line when distributing commercially.
Adiz.SetTestMode(true);
// Enable logging for the Adiz module. Logging should only be used in test mode. Comment out the below line when distributing commercially.
Adiz.SetLogEnable(true);
การแสดงโฆษณาบนอุปกรณ์ทดสอบ¶
ในสถานการณ์ต่อไปนี้ จำเป็นต้องลงทะเบียนอุปกรณ์ทดสอบเพื่อแสดงโฆษณาทดสอบ:
- เมื่อตรวจสอบว่า AdMob ad key ที่ลงทะเบียนใน Hive Console ทำงานได้อย่างถูกต้อง
- เมื่อต้องการเขียน GDPR message และต้องการตรวจสอบว่า GDPR consent popup ทำงานอย่างถูกต้อง
- เมื่อต้องการเรียกใช้ Ad Inspector เพื่อวิเคราะห์และแก้ไขปัญหาคำขอแอด
หากคุณทดสอบโดยการแสดงโฆษณาจริงโดยไม่ลงทะเบียนอุปกรณ์ทดสอบ อาจถูกพิจารณาว่าเป็นการเข้าชมที่ไม่ถูกต้อง ส่งผลให้บัญชี AdMob ของคุณถูกบล็อกและโฆษณาจะไม่แสดงอีกต่อไป เมื่อคุณลงทะเบียนอุปกรณ์ทดสอบ โหมดทดสอบหรือโฆษณาทดสอบ (สำหรับโฆษณาเนทีฟ) จะถูกแสดงเมื่อแสดงโฆษณา ตรวจสอบให้แน่ใจว่าได้ปิดการใช้งานอุปกรณ์ทดสอบสำหรับการเผยแพร่เชิงพาณิชย์
แบนเนอร์, อินเตอร์สเตเชียล, หรือโฆษณาแบบให้รางวัล
ในการลงทะเบียนอุปกรณ์ทดสอบ ให้ระบุหมายเลขประจำอุปกรณ์ทดสอบก่อน บนอุปกรณ์ Android หมายเลขประจำอุปกรณ์ทดสอบ (เช่น 33BE2250B43518CCDA7DE426D04EE231
) สามารถระบุได้โดยใช้สองวิธีดังต่อไปนี้:
- ตรวจสอบบันทึก Logcat หลังจากเรียก
Adiz.Initialize()
:ใช้ใหม่ ConsentDebugSettings.Builder().addTestDeviceHashedI ("33BE2250B43518CCDA7DE426D04EE231") เพื่อตั้งค่านี้เป็นอุปกรณ์ดีบัก.
- ตรวจสอบบันทึก Logcat หลังจากเรียก
initialize()
→load()
โดยไม่คำนึงถึงประเภทโฆษณาหลังจากเรียก
Adiz.Initialize()
: I/Ads: ใช้
RequestConfiguration.Builder.setTestDeviceIds(Arrays.asList("33BE2250B43518CCDA7DE426D04EE231")) เพื่อรับโฆษณาทดสอบบนอุปกรณ์นี้.
บน iOS, รหัสอุปกรณ์ทดสอบ (เช่น, B74F6468-1516-467C-99AD-CC5973C5DB52
) สามารถระบุได้โดยใช้สองวิธีต่อไปนี้:
- ตรวจสอบบันทึก Logcat หลังจากเรียก
Adiz.Initialize()
:เพื่อเปิดใช้งานโหมดดีบักสำหรับอุปกรณ์นี้ ให้ตั้งค่า: UMPDebugSettings.testDeviceIdentifiers = @[B74F6468-1516-467C-99AD-CC5973C5DB52]
- ตรวจสอบบันทึก Logcat หลังจากเรียก
initialize()
→load()
โดยไม่คำนึงถึงประเภทโฆษณาหลังจากเรียกAdiz.Initialize()
:GADMobileAds.sharedInstance().requestConfiguration.testDeviceIdentifiers = [ "B74F6468-1516-467C-99AD-CC5973C5DB52" ]
หลังจากระบุ 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());
}
การใช้เครื่องมือวิเคราะห์โฆษณา¶
เครื่องมือวิเคราะห์โฆษณาคือเครื่องมือที่แสดงผลในแอปพลิเคชันซึ่งวิเคราะห์กระบวนการขอและแสดงโฆษณาจริงบนอุปกรณ์ทดสอบแบบเรียลไทม์ มันจะแจ้งให้คุณทราบถึงเวลาที่ใช้ในการโหลดโฆษณา และหากโฆษณาล้มเหลวในการแสดง มันจะให้เหตุผลสำหรับความล้มเหลวนั้น คุณยังสามารถระบุเครือข่ายโฆษณาเฉพาะเพื่อตรวจสอบว่าโฆษณากำลังแสดงผลอย่างถูกต้องหรือไม่ และแก้ไขปัญหาที่ระดับโค้ดหากมีปัญหา กระบวนการทั้งหมดนี้ดำเนินการผ่าน UI ของเครื่องมือวิเคราะห์โฆษณา มันรวมอยู่ใน Google Mobile Ads SDK Android 20.0.0 และ Google Mobile Ads SDK iOS 7.68.0 หรือเวอร์ชันที่ใหม่กว่า และสามารถใช้งานได้โดยการเรียก AdizDeveloperTool.OpenAdInspector
.
ในการใช้ Ad Inspector คุณต้องปฏิบัติตามสองเงื่อนไขต่อไปนี้:
- ตั้งค่า อุปกรณ์ทดสอบ ด้วย Adiz.SetTestDevice
- ทำ การเริ่มต้น ให้เสร็จสิ้นด้วย Adiz.Initialize
การกำหนดค่า Adiz AppID¶
ตั้งค่า Adiz AppID ที่ลงทะเบียนใน Hive Console AppCenter หากไม่ได้ตั้งค่า จะใช้ชื่อแพ็คเกจหรือ Bundle ID
Hive การกำหนดค่าคอนโซลเซิร์ฟเวอร์¶
กำหนดค่าคอนโซลเซิร์ฟเวอร์ Hive ที่คุณต้องการใช้ ค่าเริ่มต้นคือ REAL
แม้ว่าคุณจะใช้เซิร์ฟเวอร์เชิงพาณิชย์ แต่จะมีการแสดงโฆษณาทดสอบเท่านั้นหากโหมดทดสอบเปิดใช้งาน
- เซิร์ฟเวอร์คอนโซลทดสอบ:
ZoneType.TEST
- เซิร์ฟเวอร์คอนโซลแซนด์บ็อกซ์:
ZoneType.SANDBOX
- เซิร์ฟเวอร์คอนโซลเชิงพาณิชย์:
ZoneType.REAL
การแสดงโฆษณาที่เฉพาะเจาะจงสำหรับผู้ใช้¶
ด้วยการเปิดตัว ATT (App Tracking Transparency) ใน iOS 14.5+ การปกป้องความเป็นส่วนตัวได้รับการเสริมสร้างขึ้น ดังนั้น โฆษณาที่เฉพาะเจาะจงสำหรับผู้ใช้สามารถแสดงได้ก็ต่อเมื่อผู้ใช้ยินยอมให้ติดตามกิจกรรมในหน้าต่างยินยอม ATT เท่านั้น เพื่อเพิ่มรายได้จากโฆษณาโดยการแสดงโฆษณาที่เฉพาะเจาะจงสำหรับผู้ใช้ จำเป็นต้องสร้างข้อความ IDFA (Identifier for Advertisers) สร้างและเผยแพร่ข้อความ IDFA ของคุณตามคำแนะนำในแดชบอร์ด AdMob
เมื่อข้อความ IDFA ถูกเผยแพร่บนแดชบอร์ด AdMob มันจะถูกแสดงโดยอัตโนมัติในระหว่างการเริ่มต้นของ 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 รองรับGoogle’s UMP (User Messaging Platform) สำหรับการแสดงป๊อปอัปการยินยอมGDPR.
หลังจากสร้าง ข้อความ GDPR ใน คอนโซล AdMob แล้ว ป๊อปอัพ GDPR จะถูกแสดงให้กับผู้ใช้ที่เข้าถึงจากยุโรปและสหราชอาณาจักรเมื่อคุณ เริ่มต้น Adiz.
Warning
แม้ว่าคุณจะมุ่งเป้าไปยังภูมิภาคนอกยุโรปและสหราชอาณาจักร คุณต้องสร้างข้อความ GDPR ในคอนโซล AdMob เพื่อให้การเริ่มต้นของ Adiz ทำงานได้อย่างถูกต้อง.
การสร้างข้อความ GDPR¶
เข้าถึงคอนโซล Google AdMob เพื่อสร้างข้อความ GDPR ก่อนที่จะสร้างข้อความ GDPR ให้ดูที่ คู่มือการสร้างข้อความ GDPR
หลังจากสร้างข้อความ GDPR แล้ว ป๊อปอัพการยินยอม GDPR จะถูกแสดงโดยอัตโนมัติในระหว่างการ เริ่มต้นของ Adiz
การดำเนินการตัวเลือกสำหรับการยินยอม/ถอนการยินยอมตาม GDPR¶
ป๊อปอัพการยินยอมตาม GDPR ควรอนุญาตให้ผู้ใช้ปรับเปลี่ยนการยินยอมของตนได้ทุกเมื่อ ตัวอย่างเช่น ผู้ใช้ที่ในตอนแรกไม่ได้ยินยอมตาม GDPR แต่ต้องการรับโฆษณาที่ปรับให้เหมาะสม อาจต้องการยินยอม หรือในทางกลับกัน เพื่อรองรับสถานการณ์ดังกล่าว นักพัฒนาจำเป็นต้องดำเนินการฟังก์ชันการทำงานเพื่อให้ผู้ใช้สามารถยินยอมอีกครั้งหรือถอนการยินยอมก่อนหน้านี้ได้ เพื่อดำเนินการฟังก์ชันการยินยอม/ถอนการยินยอมตาม GDPR ให้ทำตามขั้นตอนเหล่านี้:
- สร้าง UI ปุ่มในแอปของคุณเพื่อโหลดหน้าต่างป๊อปอัพการยินยอม GDPR ใหม่
-
เมื่อทำการ เริ่มต้นการใช้งาน Adiz ให้เรียกใช้
isPrivacyOptionsRequired()
เพื่อแสดง UI ปุ่มด้านบนสำหรับผู้ใช้ที่เข้าถึงจากยุโรปและสหราชอาณาจักร และไม่แสดงในกรณีอื่น หากผู้ใช้จากยุโรปและสหราชอาณาจักรกดปุ่ม ให้เรียกใช้showPrivacyOptionsForm
เพื่อโหลดหน้าต่างป๊อปอัพการยินยอม GDPR ใหม่ ซึ่งอนุญาตให้ผู้ใช้ปรับเปลี่ยนการยินยอมสำหรับรายละเอียด GDPR ได้ตลอดเวลาผ่านปุ่ม "จัดการตัวเลือก" หรือปุ่มที่คล้ายกันภายในแอป วิธีการshowPrivacyOptionsForm
ที่ให้ไว้ด้านล่างเป็นเพียงตัวอย่างและสามารถนำไปใช้ในรูปแบบใดก็ได้ตามที่นักพัฒนาต้องการusing hiveAdiz; public void Initialize() { // ... skipped // เริ่มต้น Adiz Adiz.Initialize(new CommonHandlers.Builder() .OnResult(InitResultCB) .Build()); } 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()); } } private void CommonResultCB(AdizError error, string jsonString) { // Privacy options form call complete callback. No additional error handling needed Debug.Log(TAG + "::CommonResultCB:: errorCode : "+error.errorCode+" errorMessage : "+error.errorMessage); }
การตั้งค่า tag สำหรับผู้ใช้ under อายุ consent (TFUA)¶
คุณสามารถใช้ Tag สำหรับ Under อายุ Consent (TFUA) เพื่อจัดการผู้ใช้ที่อาศัยอยู่ในเขตเศรษฐกิจยุโรป (EEA), UK และสวิตเซอร์แลนด์ในฐานะที่เป็นหัวข้อของการประมวลผลข้อมูลที่จำกัดเมื่อทำการขอโฆษณา สำหรับแอปที่ให้บริการเด็ก คุณสามารถตั้งค่าผู้ใช้ให้ต่ำกว่าจำนวนอายุตามกฎหมายโดยใช้ AdizConsentManager.SetUserPrivacySettings
แม้ว่าจะมีความแตกต่างกันระหว่างประเทศในยุโรป แต่ GDPR กำหนดอายุที่ต่ำกว่า 16 ปีต้องได้รับความยินยอมจากผู้ปกครอง การตั้งค่า under-age-of-consent จะต้องถูกกำหนดก่อนที่จะดำเนินการ Adiz.initialize
.
Warning
หากทั้งแท็ก GDPR under-age-of-consent 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; // Change to true if user is a child
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:
33BE2250B43518CCDA7DE426D04EE231
ในใช้ใหม่ ConsentDebugSettings.Builder().addTestDeviceHashedId("33BE2250B43518CCDA7DE426D04EE231") เพื่อตั้งค่านี้เป็นอุปกรณ์ดีบัก.
iOS:
B74F6468-1516-467C-99AD-CC5973C5DB52
ในเพื่อเปิดโหมดดีบักสำหรับอุปกรณ์นี้ ให้ตั้งค่า: UMPDebugSettings.testDeviceIdentifiers = @[B74F6468-1516-467C-99AD-CC5973C5DB52]
-
คัดลอก ID อุปกรณ์
- เพิ่ม
Adiz.setTestDevice(DEVICE_ID)
ก่อนที่จะดำเนินการAdiz.initialize
ในโค้ดการเริ่มต้น Adiz ที่มีอยู่ -
สร้างข้อความขอความยินยอม GDPR และเริ่มต้น Adiz ใหม่เพื่อให้แน่ใจว่าป๊อปอัปขอความยินยอม GDPR ปรากฏอย่างถูกต้อง
การตั้งค่า COPPA tag สำหรับการดูแลที่มุ่งเป้าไปที่เด็ก¶
ตามที่พระราชบัญญัติคุ้มครองความเป็นส่วนตัวออนไลน์ของเด็ก (COPPA) นักพัฒนาแอปสามารถระบุได้ว่า Google ควรจัดการเนื้อหาเป็นเนื้อหาที่มุ่งเป้าไปที่เด็กเมื่อทำการขอโฆษณาโดยการตั้งค่า tagForChildDirectedTreatment (TFCD) หากคุณต้องการจัดการเนื้อหาเป็นเนื้อหาที่มุ่งเป้าไปที่เด็ก คุณต้องเรียกใช้ AdizConsentManager.SetUserPrivacySettings
ก่อนที่จะดำเนินการ Adiz.initialize
เมื่อใช้ Adiz กับ Hive SDK แท็กสำหรับการจัดการเนื้อหาที่มุ่งเป้าไปที่เด็กจะถูกนำไปใช้โดยอัตโนมัติ ดังนั้นจึงไม่จำเป็นต้องตั้งค่าเพิ่มเติม
using hiveAdiz;
public void Initialize() {
bool isTagForChildDirectedTreatment = false; // Change to true if child-directed
PrivacySettings settings = new PrivacySettings.Builder()
.SetTagForChildDirectedTreatment(isTagForChildDirectedTreatment)
.Build();
AdizConsentManager.SetUserPrivacySettings(settings);
Adiz.Initialize(new CommonHandlers.Builder()
.OnResult(InitResultCB)
.Build());
}
การเพิ่ม ad mediation¶
Adiz สามารถให้บริการโฆษณาโดยใช้ AdMob mediation ได้ ทำตามขั้นตอนด้านล่างเพื่อเพิ่ม AdMob mediation.
การเพิ่ม AdMob mediation¶
รวมแหล่งโฆษณาในคอนโซล 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 Adapter |
เพิ่ม Adiz adapter¶
เพิ่มการพึ่งพาห้องสมุดใน 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.0.1"/>
<!-- AppLovin -->
<androidPackage spec="com.com2us.android.adiz:hive-adiz-adapter-applovin:2.0.1"/>
<!-- Pangle -->
<androidPackage spec="com.com2us.android.adiz:hive-adiz-adapter-pangle:2.0.1"/>
<!-- Unity Ads -->
<androidPackage spec="com.com2us.android.adiz:hive-adiz-adapter-unityads:2.0.1"/>
<!-- Meta -->
<androidPackage spec="com.com2us.android.adiz:hive-adiz-adapter-meta:2.0.1"/>
</androidPackages>
<iosPods>
<sources>
<source>https://github.com/Com2uSPlatformCorp/HiveAdiz-iOS.git</source>
</sources>
<iosPod name="HiveAdizUnityPlugin" version="2.0.1"/>
<iosPod name="HiveAdizAdapterAppLovin" version="2.0.1"/>
<iosPod name="HiveAdizAdapterPangle" version="2.0.1"/>
<iosPod name="HiveAdizAdapterUnityAds" version="2.0.1"/>
<iosPod name="HiveAdizAdapterMeta" version="2.0.1"/>
</iosPods>
</dependencies>
เพื่อตรวจสอบว่า การกำหนดค่า Adiz ของอะแดปเตอร์ถูกนำไปใช้อย่างถูกต้อง ให้เรียกใช้แอปและตรวจสอบรายการการกำหนดค่าบนหน้าจอ Ad Inspector.
การเริ่มต้น Adiz¶
การเริ่มต้น Adiz เป็นขั้นตอนที่จำเป็นก่อนที่จะเปิดเผยโฆษณาในรูปแบบใดก็ตาม การเริ่มต้น Adiz จะช่วยให้คุณได้รับกุญแจโฆษณาที่จำเป็นสำหรับการแสดงโฆษณา หากโหมดทดสอบเปิดใช้งาน คุณจะได้รับกุญแจทดสอบ หากคุณกำลังใช้ SDK ของ Hive ให้ดำเนินการเริ่มต้น Adiz หลังจากเรียกใช้ AuthV4.setup
using hiveAdiz;
public void Start() {
/* omitted */
// To use Adiz callbacks, you need to register AdizCallbackManager as a GameObject.
Adiz.InitPlugin();
}
Adiz.Initialize(new CommonHandlers.Builder()
.OnResult(InitResultCB)
.Build());
// Initialize Callback listener
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");
// This is an example of constructing a list of keys where is_default is false, in case you want to enter the ad keys directly in the game.
if(isDefault) {
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
},
{
"mediation_id":4,
"key":"ca-app-pub-3940256099942544/5224354917",
"form":"rewarded",
"is_default":true
},
{
"mediation_id":3,
"key":"ca-app-pub-3940256099942544/2247696110",
"form":"native",
"is_default":true
},
{
"mediation_id":1,
"key":"ca-app-pub-3940256099942544/1033173712",
"form":"interstitial",
"is_default":true
},
{
"mediation_id":2,
"key":"ca-app-pub-3940256099942544/6300978111",
"form":"banner",
"is_default":true
},
{
"mediation_id":6,
"key":"ca-app-pub-3940256099942544/9257395921",
"form":"app_open",
"is_default":true
}
]
}
เมื่อเริ่มต้นในโหมดทดสอบ คุณจะได้รับรายการของคีย์โฆษณาทดสอบ แม้ว่าคุณจะยังไม่ได้ลงทะเบียนคีย์โฆษณา AdMob ใน Hive Console เมื่อเริ่มต้นในโหมดเชิงพาณิชย์ คุณจะได้รับรายการของคีย์โฆษณา AdMob ที่ลงทะเบียนใน Hive Console.
สำหรับแต่ละประเภทโฆษณา (form
), โฆษณาหนึ่งรายการจะถูกใช้เป็นโฆษณาเริ่มต้น (โฆษณาที่มี "is_default":true
). เมื่อคุณลงทะเบียนประเภทโฆษณาใด ๆ เป็นครั้งแรก, โฆษณาที่ลงทะเบียนแรกจะกลายเป็นโฆษณาเริ่มต้น. คุณไม่จำเป็นต้องป้อนคีย์โฆษณา (hiveAdKey
) เมื่อสร้างอินสแตนซ์โฆษณา (initialize()
) สำหรับโฆษณาเริ่มต้น. เพื่อเปลี่ยนโฆษณาเริ่มต้น, คุณต้องลบโฆษณาเริ่มต้นที่มีอยู่ใน Hive Console และลงทะเบียนโฆษณาใหม่.
การกำหนดค่าผู้ฟังการเรียกกลับโฆษณา¶
โดยการใช้ AdizListener
เมื่อสร้างตัวอย่างโฆษณาแต่ละตัว คุณสามารถรับการเรียกกลับตามการเปลี่ยนแปลงสถานะของโฆษณา
ชื่อ | คำอธิบาย | จำเป็น |
---|---|---|
.OnAdLoad(OnAdLoadCB) | โหลดโฆษณาสำเร็จ | O |
.OnAdFail(OnAdLoadFailedCB) | ล้มเหลว (คุณสามารถทราบเหตุผลของความล้มเหลวได้ผ่าน error.errorCode() และ error.errorMessage() ) | O |
.OnAdShow(OnAdShowCB) | โฆษณาแสดงผลสำเร็จ | O |
.OnAdClick(OnAdClickCB) | คลิกโฆษณา | O |
.OnAdPaidEvent(OnAdPaidEventCB) | ขณะรับเหตุการณ์ที่จ่ายเงินหลังจากการแสดงโฆษณา ซึ่งข้อมูลรายได้จากโฆษณาจะถูกส่ง | O |
.OnAdClose(OnAdCloseCB) | ปิดโฆษณา * หลังจากปิดโฆษณา หากต้องการแสดงโฆษณาเดียวกันอีกครั้ง คุณต้องเรียก load() ใหม่และจากนั้น show() * หากคุณไม่ต้องการแสดงโฆษณาอีกต่อไป ให้เรียก destroy() เพื่อลบอินสแตนซ์โฆษณา | X |
.OnAdReward(OnAdRewardCB) | ขณะผู้ใช้ได้รับรางวัลหลังจากการแสดงโฆษณาในโฆษณาที่มีรางวัล (rewarded , rewarded interstitial ) | X |
private void OnAdLoadCB()
{
// Called when the ad is loaded.
// If the ad load is successful, you should call .show() of the ad instance at the desired moment to display the ad.
Debug.Log(TAG + "::OnAdLoadCB");
// Expose after AdizInterstitial is loaded
// requestShowAd();
}
private void OnAdLoadFailedCB(AdizError error) {
// Called when the ad load fails or the ad exposure fails for another reason.
Debug.Log(TAG + "::OnAdLoadFailedCB errorCode " + error.errorCode);
Debug.Log(TAG + "::OnAdLoadFailedCB errorMessage " + error.errorMessage);
}
private void OnAdShowCB()
{
// Called when the ad is exposed.
Debug.Log(TAG + "::OnAdShowCB");
}
private void OnAdCloseCB()
{
// Called when the ad is closed.
Debug.Log(TAG + "::OnAdCloseCB");
// Remove AdizInterstitial ad after exposure
// requestDestroyAd();
}
private void OnAdClickCB()
{
// Called when the ad is clicked.
Debug.Log(TAG + "::OnAdClickCB");
}
private void OnAdRewardCB(RewardItem rewardItem)
{
// Called when a reward is granted for watching an ad in rewarded or rewarded interstitial ads.
Debug.Log(TAG + "::OnAdRewardCB:: rewardItem.itemType : " + rewardItem.getItemType() + " rewardItem.itemAmount : " + rewardItem.getItemAmount());
// Delivered only in rewarded, rewardedInterstitial ads
}
private void OnAdPaidEventCB(AdRevenueData adRevenueData)
{
// Called when revenue is generated for the ad.
Debug.Log(TAG + "::OnAdPaidEventCB:: adRevenueData.revenue : " + adRevenueData.getRevenue() + " adRevenueData.currency : " + adRevenueData.getCurrency());
}
รหัสข้อผิดพลาด¶
รหัสข้อผิดพลาดและข้อความ AdizError
ที่ได้รับจาก Adiz.Initialize
และ AdizListener
สำหรับ OnAdFail()
มีดังนี้:
รหัสทั่วไป¶
หมายเลข | กรณี | คำอธิบาย |
---|---|---|
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 |
การแสดงโฆษณาและการยุติ¶
ในการแสดงและยุติโฆษณา ให้ทำตามขั้นตอนเหล่านี้:
- สร้างอินสแตนซ์โฆษณาจากคลาสโฆษณาสำหรับแต่ละประเภทโฆษณาที่คุณต้องการแสดง หากโฆษณาที่คุณต้องการแสดงไม่ใช่ โฆษณาเริ่มต้น คุณต้องป้อนคีย์โฆษณาที่ได้รับจาก การเริ่มต้น หากคุณไม่ป้อนคีย์โฆษณา (
hiveAdKey
) จะมีการสร้างอินสแตนซ์โฆษณาเริ่มต้น - โหลด (
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 requestLoadAd() {
// Load AdizInterstitial
if(InterstitialAd != null) InterstitialAd.Load();
}
public void requestShowAd() {
// Show AdizInterstitial
if(InterstitialAd != null) InterstitialAd.Show();
}
public void requestDestroyAd() {
// Destroy AdizInterstitial
if(InterstitialAd != null) InterstitialAd.Destroy();
InterstitialAd = null;
}
โฆษณาแบนเนอร์ (Banner)¶
โฆษณาแบนเนอร์จะแสดงแบนเนอร์ขนาดเฉพาะ โฆษณาแบนเนอร์จะไม่ได้รับการเรียกกลับ OnAdClose()
ดังนั้นคุณต้องเรียก destroy()
จากที่อื่นเพื่อยุติโฆษณา
BannerSize
ปฏิบัติตามขนาดแบนเนอร์มาตรฐาน.
ขนาดจุด (ความกว้าง x ความสูง) | คำอธิบาย | อุปกรณ์ที่รองรับ | ค่าขนาดแบนเนอร์ |
---|---|---|---|
320x50 | แบนเนอร์ | โทรศัพท์และแท็บเล็ต | BannerSize.NORMAL |
320x100 | แบนเนอร์ขนาดใหญ่ | โทรศัพท์และแท็บเล็ต | BannerSize.MEDIUM |
300x250 | IAB ขนาดกลางสี่เหลี่ยม | โทรศัพท์และแท็บเล็ต | BannerSize.LARGE |
468x60 | IAB แบนเนอร์ขนาดเต็ม | แท็บเล็ต | BannerSize.FULL |
PositionType
คือด้านบนหรือล่าง ค่าเริ่มต้นคือด้านล่าง.
การจัดตำแหน่ง | คำอธิบาย | ค่าคงที่ประเภทตำแหน่ง |
---|---|---|
การจัดตำแหน่งด้านบน | ระบุการจัดตำแหน่งที่ด้านบนของหน้าจอ (สำหรับ iOS ระบุการจัดตำแหน่งด้านบนตาม SafeArea) | PositionType.TOP |
การจัดตำแหน่งด้านล่าง (ค่าเริ่มต้น) | ระบุการจัดตำแหน่งที่ด้านล่างของหน้าจอ (สำหรับ iOS ระบุการจัดตำแหน่งด้านล่างตาม SafeArea) | PositionType.BOTTOM |
// Create AdizBanner Instance
private AdizBanner BannerAd = null;
public void requestInitAd(string bannerAdKey) {
// 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(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 requestLoadAd() {
// Load AdizBanner
if(BannerAd != null) BannerAd.Load();
}
public void requestShowAd() {
// Set position type
private PositionType bannerPosition = PositionType.TOP;
// Show AdizBanner
if(BannerAd != null) BannerAd.Show(bannerPosition);
}
public void requestDestroyAd() {
// Destroy AdizBanner
if(BannerAd != null) BannerAd.Destroy();
BannerAd = null;
}
โฆษณาพื้นเมือง (Native)¶
โฆษณาพื้นเมืองจะแสดงเทมเพลตพื้นเมืองที่มีขนาดเฉพาะ โฆษณาพื้นเมืองได้รับการปรับให้เหมาะสมสำหรับหน้าจอแนวตั้ง ดังนั้นจึงแนะนำให้ใช้ในเกมโหมดแนวตั้ง (เกมหน้าจอแนวตั้ง) โฆษณาพื้นเมืองจะไม่ได้รับการเรียกกลับ OnAdClose()
ดังนั้นคุณต้องเรียก destroy()
ในตำแหน่งที่แตกต่างกันเพื่อยุติโฆษณา
ขณะนี้ เทมเพลตสนับสนุนขนาด เล็ก
หรือ กลาง
ขนาดจุด (ความกว้าง x ความสูง) | เทมเพลต | การจัดตำแหน่ง | ค่าคงที่ BannerSize |
---|---|---|---|
355x91 (ปรับอัตราส่วน) | ขนาดเล็ก | ด้านบน / ด้านล่าง | BannerSize.NORMAL |
355x370 (ปรับอัตราส่วน) | ขนาดกลาง | ตรงกลาง (คงที่) | BannerSize.MEDIUM, BannerSize.LARGE, BannerSize.FULL |
ในเทมเพลต small
ประเภท PositionType
จะอยู่ที่ด้านบนหรือล่าง โดยค่าเริ่มต้นคือด้านล่าง
การจัดตำแหน่ง | คำอธิบาย | ค่าคงที่ PositionType |
---|---|---|
การจัดตำแหน่งด้านบน | ระบุการจัดตำแหน่งไปยังด้านบนของหน้าจอ (iOS จะจัดตำแหน่งไปยังด้านบนของ SafeArea) | PositionType.TOP |
การจัดตำแหน่งด้านล่าง (ค่าเริ่มต้น) | ระบุการจัดตำแหน่งไปยังด้านล่างของหน้าจอ (iOS จะจัดตำแหน่งไปยังด้านล่างของ SafeArea) | PositionType.BOTTOM |
เทมเพลต medium
ไม่อนุญาตให้เลือกการจัดแนวและจัดแนกลางโดยค่าเริ่มต้น
// Create 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 requestLoadAd() {
// Load AdizNative
if(NativeAd != null) NativeAd.Load();
}
public void requestShowAd() {
// Set position type
private PositionType bannerPosition = PositionType.TOP;
// Show AdizNative
if(NativeAd != null) NativeAd.Show(bannerPosition);
}
public void requestDestroyAd() {
// Destroy AdizNative
if(NativeAd != null) NativeAd.Destroy();
NativeAd = null;
}
โฆษณาที่ได้รับรางวัล (Rewarded)¶
โฆษณาที่ได้รับรางวัลคือโฆษณาที่ผู้ใช้ได้รับรางวัลสำหรับการดูโฆษณาเป็นระยะเวลาหนึ่ง เมื่อมีการแจกจ่ายรางวัล คุณจะได้รับข้อมูลรายการรางวัลผ่านการเรียกกลับ 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 requestLoadAd() {
// Load AdizRewarded
if(RewardVideoAd != null) RewardVideoAd.Load();
}
public void requestShowAd() {
// Show AdizRewarded
if(RewardVideoAd != null) RewardVideoAd.Show();
}
public void requestDestroyAd() {
// Destroy 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)) {
// Initialize Default AdizRewardedInterstitial Instance (AdEventHandlers)
RewardedInterstitialAd = AdizRewardedInterstitial.Initialize(eventHandlers);
} else {
// Initialize AdizRewardedInterstitial Instance (hiveAdKey, AdEventHandlers)
RewardedInterstitialAd = AdizRewardedInterstitial.Initialize(rewardedInterstitialAdKey, eventHandlers);
}
}
public void requestLoadAd() {
// Load AdizRewardedInterstitial
if(RewardedInterstitialAd != null) RewardedInterstitialAd.Load();
}
public void requestShowAd() {
// Show AdizRewardedInterstitial
if(RewardedInterstitialAd != null) RewardedInterstitialAd.Show();
}
public void requestDestroyAd() {
// Destroy AdizRewardedInterstitial
if(RewardedInterstitialAd != null) RewardedInterstitialAd.Destroy();
RewardedInterstitialAd = null;
}
โฆษณาเปิดแอป (appopen)¶
โฆษณาเปิดแอปจะแสดงเมื่อสถานะของแอปเปลี่ยนจากพื้นหลังไปยังพื้นหน้าโดยใช้โฆษณาที่โหลดล่วงหน้า (load()
). หากคุณเรียกใช้ show()
หลังจากการโหลดโฆษณาเป็นเวลา 3 ชั่วโมง โฆษณาจะถูกโหลดใหม่โดยอัตโนมัติก่อนที่จะถูกแสดง. เมื่อโฆษณาแสดงอย่างน้อยหนึ่งครั้ง มันจะไม่โหลดอีกครั้งโดยอัตโนมัติ.
// 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 requestLoadAd() {
// Load AdizAppOpen
if(AppOpenAd != null) 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;
}
การถอนการติดตั้ง¶
ในการถอนการติดตั้ง Adiz ให้ลบโฟลเดอร์ต่อไปนี้ออกจากโปรเจกต์ Unity ของคุณ:
- สินทรัพย์/HiveAdiz
- สินทรัพย์/HiveAdiz_Example