ข้ามไปที่เนื้อหา

Unity

Adiz Unity

Adiz Unity เป็นโมดูลโฆษณาสำหรับ Unity ที่ Hive จัดเตรียมไว้เพื่อให้สามารถใช้ฟังก์ชันการแสดงโฆษณาที่ AdMob มีให้ได้อย่างสะดวกยิ่งขึ้น รูปแบบโฆษณาที่ Adiz Unity มีให้บริการมีดังนี้

  • โฆษณาเต็มหน้า (Interstitial)
  • โฆษณาแบนเนอร์ (Banner)
  • โฆษณาเนทีฟ (Native)
  • โฆษณาแบบมีรางวัล (Rewarded)
  • โฆษณาเต็มหน้าที่มีรางวัล (Rewarded Interstitial)
  • โฆษณาเปิดแอป (AppOpen)

โปรดอ้างอิงตามคำแนะนำด้านล่างเพื่อทำการติดตั้งและใช้งาน Adiz Unity

การติดตั้งหรืออัปเดต

  1. ตั้งค่า Adiz Unity development environment.
  2. ดาวน์โหลดเวอร์ชันล่าสุดของ Adiz และแตกไฟล์.
  3. ใน Unity ให้เลือกไฟล์ .unitypackage ที่ Assets > Import Package > Custom Package… และคลิก Import.
  4. ตรวจสอบว่าไฟล์และโฟลเดอร์ Adiz ถูกสร้างขึ้นภายใต้โฟลเดอร์ Assets หรือไม่.
  5. ดาวน์โหลดและติดตั้งเวอร์ชันล่าสุดของ EDM4U. Hive SDK v4 รวม EDM4U อยู่ด้วย หากคุณใช้ Hive SDK v4 จะไม่จำเป็นต้องติดตั้ง EDM4U แยกต่างหาก.

 

หากต้องการอัปเดตเวอร์ชัน Adiz ที่กำลังใช้งานอยู่ ให้ลบ Adiz ออก และดาวน์โหลดเวอร์ชันล่าสุดแล้วติดตั้ง

การตั้งค่า Unity

Android

โปรดเพิ่มค่า AdMobId ในรูปแบบ ca-app-pub-XXXXX~YYYYY ในไฟล์ Assets/Plugins/Android/AndroidManifest.xml ที่สร้างขึ้นในโปรเจกต์ Unity

    <manifest>
        <application>
            <!-- Sample AdMob app ID: ca-app-pub-3940256099942544~3347511713 -->
            <meta-data
                    android:name="com.google.android.gms.ads.APPLICATION_ID"
                    android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
        </application>
    </manifest>

 

ต้องเปิดใช้งานการเร่งฮาร์ดแวร์เพื่อแสดงโฆษณาวิดีโอ เพิ่มการตั้งค่าสำหรับการเร่งฮาร์ดแวร์ในไฟล์ AndroidManifest.xml หากเพิ่มในแท็ก application จะใช้การเร่งฮาร์ดแวร์สำหรับแอปพลิเคชันทั้งหมด หากเพิ่มในแท็ก activity จะใช้การเร่งฮาร์ดแวร์เฉพาะสำหรับ Activity ที่ต้องการแสดงโฆษณา

    <application android:hardwareAccelerated="true">
            <!-- For activities that use ads, hardwareAcceleration should be true. -->
            <activity android:hardwareAccelerated="true" />
    </application>

 

ใน Unity의 Android Resolver Settings(Assets > External Dependency Manager > Android Resolver > Settings) ให้ทำการติ๊กที่ Use Jetifier.

 

การตั้งค่าเกม > ผู้เล่น > สร้าง ในหน้าจอการตั้งค่าจะมีให้เลือก 4 รายการด้านล่างนี้

 

เมื่อใช้ Proguard โมดูล Adiz จะรวมกฎ ProGuard ไว้ด้วย ดังนั้นจึงไม่จำเป็นต้องเพิ่มกฎ ProGuard ลงในโครงการ

iOS

ใน Assets > External Dependency Manager > iOS Resolver > Settings ให้ยกเลิกการตั้งค่า static_framework บิลด์

 

เปิดไฟล์ Podfile ที่สร้างขึ้นระหว่างการสร้าง Unity และจัดรูปแบบตามด้านล่าง


source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/Com2uSPlatformCorp/HiveAdiz-iOS.git'
platform :ios, '12.0'

target 'UnityFramework' do
  pod 'HiveAdizUnityPlugin', '2.1.0
end
target 'Unity-iPhone' do
end
use_frameworks!

# แก้ไขปัญหา dyld ใน pods เมื่อใช้ Project
post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      # ปัญหา Toolchain xcode 15
      xcconfig_path = config.base_configuration_reference.real_path
      xcconfig = File.read(xcconfig_path)
      xcconfig_mod = xcconfig.gsub(/DT_TOOLCHAIN_DIR/, "TOOLCHAIN_DIR")
      File.open(xcconfig_path, "w") { |file| file << xcconfig_mod }
      # สิ้นสุด

      config.build_settings["BUILD_LIBRARY_FOR_DISTRIBUTION"] = "YES"
      if config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'].to_f < 12.0
        config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'
      end
    end
  end
end

 

ในไฟล์ Info.plist ของโปรเจกต์ Xcode ที่สร้างขึ้นเมื่อทำการสร้าง Unity ให้เพิ่มคีย์ GADApplicationIdentifier ตามด้านล่าง และใส่ค่า AdMobId (ในรูปแบบ ca-app-pub-XXXXX~YYYYY) เป็นค่าของคีย์ หากต้องการสามารถยกเลิกการคอมเมนต์ในบรรทัดการตั้งค่า GADApplicationIdentifier ภายในไฟล์ Assets/HiveAdiz/Editor/AdizPostProcess.cs และเพิ่ม AdMobId จะถูกตั้งค่าโดยอัตโนมัติ

\<key>GADApplicationIdentifier</key>
\<string>ca-app-pub-XXXXX~YYYYY</string>

 

นอกจากนี้ ใน iOS 14 ขึ้นไป ให้ดูที่ Update your info.plist เพื่อเพิ่มรายการ SKAdNetwork ลงในไฟล์ Info.plist ไฟล์ Assets/HiveAdiz/Editor/AdizPostProcess.cs จะถูกใช้เพื่อเพิ่มลงในไฟล์ Info.plist โดยอัตโนมัติในระหว่างการสร้าง

การตั้งค่าโฆษณาทดสอบ

Adiz สามารถแสดงโฆษณาทดสอบได้ 2 วิธี 1. เปิดโหมดทดสอบ: แสดงเฉพาะโฆษณาทดสอบที่ออกโดย AdMob 2. ลงทะเบียนอุปกรณ์ทดสอบแล้วแสดงโฆษณา: แสดงโฆษณาจริงเพื่อการทดสอบ โดยไม่ให้เกิดการเข้าชมที่ไม่ถูกต้อง และลงทะเบียนอุปกรณ์ที่จะทำการแสดงโฆษณาทดสอบ

เปิดใช้งานโหมดทดสอบ

ในระยะพัฒนาจะเปิดใช้งานโหมดทดสอบเพื่อไม่ให้เรียกเก็บเงินจากผู้โฆษณาเมื่อคลิกโฆษณาทดสอบ เมื่อเปิดใช้งานโหมดทดสอบจะมีการแสดงโฆษณาทดสอบเท่านั้น ในโหมดทดสอบไม่จำเป็นต้องป้อนคีย์โฆษณา AdMob ลงในคอนโซลเพื่อแสดงโฆษณาทดสอบ ในการเผยแพร่เชิงพาณิชย์จะปิดใช้งานโหมดทดสอบ.

วิธีเปิดโหมดทดสอบมี 2 วิธี

Warning

หากคลิกโฆษณามากเกินไปในโหมดทดสอบในระหว่างการพัฒนา จะถือว่าเป็นการเข้าชมที่ไม่ถูกต้องและบัญชี AdMob อาจถูกแจ้งเตือนทำให้ไม่สามารถแสดงโฆษณาได้


การใช้เมธอด Adiz.SetTestMode()


using hiveAdiz; // เปิดใช้งานโหมดทดสอบ เมื่อต้องการเผยแพร่ในเชิงพาณิชย์ ให้คอมเมนต์บรรทัดด้านล่าง
Adiz.SetTestMode(true);

// เปิดใช้งานการบันทึกโมดูล Adiz การบันทึกควรใช้เฉพาะในโหมดทดสอบ เท่านั้น เมื่อต้องการเผยแพร่ในเชิงพาณิชย์ให้แสดงความคิดเห็นในบรรทัดด้านล่าง  
Adiz.SetLogEnable(true);

การแสดงโฆษณาบนอุปกรณ์ทดสอบ

ในสถานการณ์ด้านล่างนี้ คุณต้องลงทะเบียนอุปกรณ์ทดสอบเพื่อแสดงโฆษณาทดสอบ

  • Hive ลงทะเบียน AdMob โฆษณาในคอนโซลเพื่อทดสอบว่าคีย์ทำงานได้ดีหรือไม่
  • หากต้องการเขียน GDPR ข้อความ และตรวจสอบว่าป๊อปอัปการยินยอม GDPR ทำงานได้ดีหรือไม่
  • หากต้องการเรียกใช้ ตัวตรวจสอบโฆษณา เพื่อวิเคราะห์และดีบักคำขอโฆษณา

วิธีการแสดงโฆษณาบนอุปกรณ์ทดสอบมี 2 วิธี

Note

หากคุณทำการทดสอบโดยไม่ลงทะเบียนอุปกรณ์ทดสอบและแสดงโฆษณาจริง จะถือว่าเป็นการเข้าชมที่ไม่ถูกต้องและอาจทำให้บัญชี AbMob ถูกระงับและไม่สามารถแสดงโฆษณาได้อีกต่อไป การลงทะเบียนอุปกรณ์ทดสอบจะทำให้มีการแสดง "Test Mode" หรือ "Test Ad" (โฆษณาเนทีฟ) ในขณะแสดงโฆษณา ในการจัดจำหน่ายเชิงพาณิชย์ คุณต้องปิดการใช้งานอุปกรณ์ทดสอบ


แบนเนอร์, โฆษณาหน้าแรก หรือโฆษณาแบบมีรางวัล

โฆษณาพื้นเมือง

การใช้เมธอด Adiz.setTestDevice()

ในการลงทะเบียนอุปกรณ์ทดสอบ คุณต้องตรวจสอบ ID อุปกรณ์ทดสอบก่อน ในสภาพแวดล้อม Android ของเอนจิน Unity ID อุปกรณ์ทดสอบ (ตัวอย่าง: 33BE2250B43518CCDA7DE426D04EE231) สามารถตรวจสอบได้ด้วย 2 วิธีด้านล่าง

  • ตรวจสอบบันทึก Logcat หลังจากเรียกใช้ Adiz.Initialize():

    ใช้ใหม่
    ConsentDebugSettings.Builder().addTestDeviceHashedId("33BE2250B43518CCDA7DE426D04EE231") เพื่อกำหนดสิ่งนี้เป็นอุปกรณ์ดีบัก
    
  • หลังจากเรียก Adiz.Initialize() ไม่ว่าจะเป็นประเภทโฆษณาใดก็ตาม ให้เรียก initialize()load() จากนั้นตรวจสอบบันทึก Logcat:

    `I/Ads: ใช้ RequestConfiguration.Builder.setTestDeviceIds(Arrays.asList("33BE2250B43518CCDA7DE426D04EE231")) เพื่อรับโฆษณาทดสอบบนอุปกรณ์นี้.
    


สามารถตรวจสอบ ID อุปกรณ์ทดสอบในสภาพแวดล้อม iOS ของเอนจิน Unity (ตัวอย่าง: B74F6468-1516-467C-99AD-CC5973C5DB52) ได้ด้วย 2 วิธีดังต่อไปนี้

  • ตรวจสอบบันทึก Logcat หลังจากเรียกใช้ Adiz.Initialize() :

    เพื่อเปิดใช้งานโหมดดีบักสำหรับอุปกรณ์นี้ ให้ตั้งค่า: UMPDebugSettings.testDeviceIdentifiers = @[B74F6468-1516-467C-99AD-CC5973C5DB52]
    
  • หลังจากเรียก Adiz.Initialize() ไม่ว่าจะเป็นประเภทโฆษณาใด ๆ ให้เรียก initialize()load() แล้วตรวจสอบบันทึก Logcat:

    GADMobileAds.sharedInstance().requestConfiguration.testDeviceIdentifiers = [ "B74F6468-1516-467C-99AD-CC5973C5DB52" ]
    


ตรวจสอบ ID อุปกรณ์ทดสอบ จากนั้นเพิ่มบรรทัด Adiz.setTestDevice(DEVICE_ID) ก่อนที่จะเรียกใช้ Adiz.initialize ในโค้ดการรีเซ็ต Adiz ที่มีอยู่ DEVICE_ID ให้ใส่ ID อุปกรณ์ทดสอบที่คัดลอกมา

using hiveAdiz;

public void Initialize() {

    // 테스트 디바이스 설정
    Adiz.SetTestDevice("33BE2250B43518CCDA7DE426D04EE231");

    Adiz.Initialize(new CommonHandlers.Builder()
                                            .OnResult(InitResultCB)
                                            .Build());
}

เครื่องมือการตรวจสอบโฆษณา

เครื่องมือการตรวจสอบโฆษณาคือเครื่องมือโอเวอร์เลย์ในแอปที่วิเคราะห์กระบวนการเรียกดูโฆษณาจริงในอุปกรณ์ทดสอบแบบเรียลไทม์หลังจากที่มีการร้องขอโฆษณา มันจะแจ้งเวลาที่ใช้ในการโหลดโฆษณา และหากการแสดงผลล้มเหลว มันจะแจ้งสาเหตุของความล้มเหลว นอกจากนี้ยังสามารถระบุเครือข่ายโฆษณาเฉพาะเพื่อยืนยันว่าโฆษณาแสดงผลได้ดีหรือไม่ และหากมีปัญหา สามารถทำการดีบักในระดับโค้ดได้ กระบวนการทั้งหมดนี้จะดำเนินการควบคู่ไปกับ UI การตรวจสอบโฆษณา รวมอยู่ใน Google Mobile Ads SDK Android 20.0.0 และ Google Mobile Ads SDK iOS 7.68.0 ขึ้นไป และสามารถใช้งานได้โดยการเรียก AdizDeveloperTool.OpenAdInspector

เพื่อใช้เครื่องมือทดสอบโฆษณา คุณต้องลงทะเบียน อุปกรณ์ทดสอบ

using hiveAdiz;

AdizDeveloperTool.OpenAdInspector();

การตั้งค่า Adiz AppID

ตั้งค่า Adiz AppID ที่ลงทะเบียนใน AppCenter ของ Hive หากไม่ได้ตั้งค่า จะใช้ Package Name หรือ Bundle ID

Adiz.SetAppId(appId);

Hive การตั้งค่าเซิร์ฟเวอร์คอนโซล

ตั้งค่าเซิร์ฟเวอร์คอนโซล Hive ที่จะใช้ ค่าเริ่มต้นคือ REAL แม้ว่าจะใช้เซิร์ฟเวอร์เชิงพาณิชย์ หากเปิดใช้งานโหมดทดสอบ จะมีการแสดงโฆษณาทดสอบเท่านั้น

  • Hive เซิร์ฟเวอร์คอนโซลทดสอบ: ZoneType.TEST
  • Hive เซิร์ฟเวอร์คอนโซลแซนด์บ็อกซ์: ZoneType.SANDBOX
  • Hive เซิร์ฟเวอร์คอนโซลเชิงพาณิชย์: ZoneType.REAL

ZoneType selectZone = ZoneType.REAL;
Adiz.SetZone((int)selectZone);

การแสดงโฆษณาที่ปรับให้เหมาะกับผู้ใช้

การนำเสนอ ATT (App Tracking Transparency) ใน iOS 14.5+ ได้เสริมสร้างความเป็นส่วนตัวของข้อมูล ดังนั้น หากผู้ใช้ยอมรับการติดตามกิจกรรมในป๊อปอัปการยินยอม ATT จะสามารถแสดงโฆษณาที่ปรับให้เหมาะกับผู้ใช้ได้เท่านั้น เพื่อเพิ่มรายได้จากโฆษณาให้สูงสุด จำเป็นต้องเขียนข้อความ IDFA (Identifier for Advertisers)

AdMob แนะนำให้คุณเขียนข้อความตามคำแนะนำ IDFA ด้านล่างในแดชบอร์ดและเผยแพร่ข้อความนั้น

เมื่อโพสต์ข้อความ IDFA บนแดชบอร์ด AdMob ข้อความ IDFA จะถูกแสดงโดยอัตโนมัติเมื่อเริ่มต้น Adiz บน iOS 14.5+ เมื่อผู้ใช้คลิก "ดำเนินการต่อ" ในหน้าต่างข้อความ IDFA จะมีการแสดงป๊อปอัปการยินยอม ATT

เมื่อผู้ใช้คลิก "อนุญาต" ในป๊อปอัปการยินยอม ATT IDFA จะถูกเปิดใช้งานและโฆษณาที่ปรับให้เหมาะกับผู้ใช้จะถูกแสดง

Note

ผู้ใช้ที่เข้าถึงจากยุโรปและสหราชอาณาจักรจะเห็นป๊อปอัปการยินยอม GDPR หากผู้ใช้ไม่เคยยินยอมในรายการ GDPR ป๊อปอัปการยินยอม GDPR จะปรากฏขึ้นและจะไม่มีการแสดงข้อความ IDFA แต่จะมีการแสดงป๊อปอัปการยินยอม ATT ทันที หากผู้ใช้เคยยินยอมในรายการ GDPR ข้อความ IDFA จะถูกแสดงตามปกติและหลังจากนั้นจะมีการแสดงป๊อปอัปการยินยอม ATT

หากเกมของคุณมีเป้าหมายที่ยุโรปและสหราชอาณาจักร (EEA & UK) จะต้องแสดงป๊อปอัพการยินยอม GDPR (กฎการปกป้องข้อมูลทั่วไปของสหภาพยุโรป) ป๊อปอัพการยินยอม GDPR จะถูกแสดงเฉพาะเมื่อที่อยู่ IP ของอุปกรณ์ผู้ใช้เป็นที่อยู่ IP ของยุโรปและสหราชอาณาจักร (EEA & UK) Adiz สนับสนุน Google UMP (User Messaging Platform) สำหรับการแสดงป๊อปอัพการยินยอม GDPR หลังจากที่คุณสร้างข้อความ GDPR ใน AdMob Console แล้วให้ เริ่มต้น Adiz ป๊อปอัพ GDPR จะถูกแสดงให้กับผู้ใช้ที่เข้าถึงจากภูมิภาคยุโรปและสหราชอาณาจักร

Warning

หากคุณกำลังมุ่งเป้าไปที่พื้นที่นอกยุโรปและสหราชอาณาจักร เช่น หากคุณวางแผนที่จะให้บริการเฉพาะในประเทศ การแสดงป๊อปอัพการยินยอม GDPR (ยุโรป, สหราชอาณาจักร) คุณสามารถข้ามขั้นตอนนี้และใช้ Adiz.InitializeForNonGDPR() เพื่อทำการเริ่มต้น
หากคุณใช้ Adiz.Initialize() เพื่อทำการเริ่มต้น คุณจะต้องสร้างข้อความ GDPR ในคอนโซล AdMob เพื่อให้การเริ่มต้น Adiz ดำเนินการได้อย่างถูกต้อง

การเขียนข้อความ GDPR

เข้าสู่ระบบ Google AdMob Console เพื่อเขียนข้อความ GDPR ก่อนที่คุณจะเขียนข้อความ GDPR โปรดดูที่ คู่มือการเขียนข้อความ GDPR

หากคุณได้เขียนข้อความ GDPR แล้ว การเริ่มต้น Adiz จะทำให้ป๊อปอัปการยินยอม GDPR แสดงขึ้นโดยอัตโนมัติ

Warning

หากคุณใช้ Hive SDK คุณต้องเรียกใช้ AuthV4.setup หลังจากเสร็จสิ้นการเริ่มต้น Hive Adiz หากมีการแสดงการแจ้งเตือนการยินยอม ATT (APP Tracking Transparency) และหน้าจอยินยอม GDPR ปรากฏขึ้น แอปอาจถูกปฏิเสธในการตรวจสอบแอปของ Apple

การดำเนินการยินยอมและการถอนยินยอมตาม GDPR

รายการในป๊อปอัปการยินยอมตาม GDPR จะต้องมีฟังก์ชันการแก้ไขเพื่อให้ผู้ใช้สามารถปรับเปลี่ยนการยินยอมได้ทุกเมื่อ ตัวอย่างเช่น ผู้ใช้อาจไม่ยินยอมตาม GDPR ในตอนแรก แต่ต้องการยินยอมอีกครั้งเพื่อดูโฆษณาที่ปรับแต่ง หรือในทางกลับกัน ผู้ใช้อาจยินยอมตาม GDPR ในตอนแรก แต่ไม่ต้องการให้ข้อมูลส่วนตัวอีกต่อไปและต้องการถอนการยินยอม ในสถานการณ์เหล่านี้ ผู้พัฒนาแอปจะต้องดำเนินการฟังก์ชันในการยินยอมอีกครั้งหรือถอนการยินยอมที่มีอยู่สำหรับแต่ละรายการ การดำเนินการฟังก์ชันการยินยอม/ถอนยินยอมตาม GDPR ต้องปฏิบัติตามขั้นตอนต่อไปนี้

  1. สร้าง UI ปุ่มในแอปเพื่อเรียกดูหน้าต่างป๊อปอัพการยินยอม GDPR อีกครั้ง
  2. เมื่อทำการ เริ่มต้น Adiz ให้เรียกใช้ isPrivacyOptionsRequired() เพื่อแสดง UI ปุ่มดังกล่าวให้กับผู้ใช้ที่เข้าถึงจากยุโรปและสหราชอาณาจักร และไม่แสดงหากไม่ใช่กรณีนี้ หากผู้ใช้จากยุโรปและสหราชอาณาจักรกดปุ่มดังกล่าว ให้เรียกใช้ showPrivacyOptionsForm เพื่อเรียกดูหน้าต่างป๊อปอัพการยินยอม GDPR อีกครั้ง หลังจากนั้น ผู้ใช้สามารถกดปุ่ม "Manage Options" หรือปุ่มอื่น ๆ ในแอปเพื่อปรับเปลี่ยนการยินยอมในรายละเอียด GDPR ได้ทุกเมื่อ showPrivacyOptionsForm ด้านล่างนี้เป็นวิธีที่สร้างขึ้นแบบสุ่มเพื่อเป็นตัวอย่าง และบริษัทพัฒนาสามารถเปลี่ยนแปลงการใช้งานได้ตามต้องการ
    
        // ....
    
    private void InitResultCB(AdizError error, string jsonString) {
        // ฟังก์ชัน callback หลังการเริ่มต้นเสร็จสิ้น
        Debug.Log(TAG + "::InitResultCB:: errorCode : "+error.errorCode+" errorMessage : "+error.errorMessage+" json : "+jsonString);
    
        if(error.isSuccess()) {
            bool isPrivacyOptionsRequired = AdizConsentManager.IsPrivacyOptionsRequired();
            if(isPrivacyOptionsRequired) {
                // แสดงปุ่มตัวเลือกความเป็นส่วนตัว คลิกเพื่อเรียก ShowPrivacyOptionsForm
            } else {
                // ซ่อนปุ่มตัวเลือกความเป็นส่วนตัว
            }
        }
    }
    
    
    private void ShowPrivacyOptionsForm() {
        // เรียกแบบฟอร์มตัวเลือกความเป็นส่วนตัว
        if(AdizConsentManager.IsPrivacyOptionsRequired()) {
            AdizConsentManager.ShowPrivacyOptionsForm(new CommonHandlers.Builder()
                                                    .OnResult(CommonResultCB)
                                                    .Build());
        }
    }
    
    // ....
    
    

การตั้งค่าแท็กสำหรับผู้ใช้ที่อายุต่ำกว่าที่ตกลง GDPR (TFUA)

สามารถตั้งค่าแท็ก (Tag For Under the Age of Consent, TFUA) เพื่อจัดการผู้ใช้ที่อาศัยอยู่ในเขตเศรษฐกิจยุโรป (EEA), สหราชอาณาจักร และสวิตเซอร์แลนด์ให้เป็นกลุ่มเป้าหมายการประมวลผลข้อมูลจำกัดเมื่อมีการขอการโฆษณา สำหรับแอปที่ให้บริการเด็ก สามารถใช้ AdizConsentManager.setUserPrivacySettings เพื่อตั้งค่าผู้ใช้ว่าอยู่ต่ำกว่าขอบเขตอายุที่ต้องได้รับความยินยอม กฎหมาย GDPR กำหนดอายุที่ต้องได้รับความยินยอมไว้ที่ต่ำกว่า 16 ปี โดยต้องมีความยินยอมจากผู้ปกครอง แม้ว่าจะมีความแตกต่างกันในแต่ละประเทศในยุโรป แต่การตั้งค่าต่ำกว่าขอบเขตอายุที่ต้องได้รับความยินยอมจะต้องตั้งค่าก่อนที่จะเรียกใช้ Adiz.initialize

Warning

หากตั้งค่าธง setTagForUnderAgeOfConsent สำหรับผู้ที่อายุต่ำกว่าความยินยอม GDPR และตั้งค่าธง setTagForChildDirectedTreatment สำหรับเด็กตาม COPPA เป็น true พร้อมกัน การตั้งค่าธงสำหรับเด็กตาม COPPA setTagForChildDirectedTreatment จะถูกนำมาใช้ก่อน ดังนั้นโปรดอย่าตั้งค่าทั้งสองเป็น true พร้อมกัน

Note

Hive SDK v4 24.2.0 ขึ้นไปและ Adiz 2.0.1 ขึ้นไป เมื่อใช้งานร่วมกัน Hive SDK จะนำไปใช้โดยอัตโนมัติสำหรับผู้ใช้ที่ต่ำกว่าช่วงอายุที่ตั้งค่าไว้ ดังนั้นจึงไม่จำเป็นต้องเรียก AdizConsentManager.setUserPrivacySettings

using hiveAdiz;

public void Initialize() {

    bool isTagForUnderAgeOfConsent = false; // 어린이인 경우 true로 변경

    PrivacySettings settings = new PrivacySettings.Builder()
                                .SetTagForUnderAgeOfConsent(isTagForUnderAgeOfConsent)
                                .Build();

    AdizConsentManager.SetUserPrivacySettings(settings);

    Adiz.Initialize(new CommonHandlers.Builder()
                                            .OnResult(InitResultCB)
                                            .Build());
}

การตั้งค่าอุปกรณ์ทดสอบ GDPR

ป๊อปอัปการยินยอม GDPR จะแสดงเฉพาะเมื่อที่อยู่ IP ของอุปกรณ์เป็นที่อยู่ IP ของยุโรปและสหราชอาณาจักร ในระยะพัฒนาจะสามารถบังคับให้แสดงป๊อปอัปการยินยอม GDPR โดยไม่คำนึงถึงที่อยู่ IP เพื่อทดสอบการแสดงป๊อปอัป และเพื่อสิ่งนี้ต้องตั้งค่าอุปกรณ์ทดสอบ GDPR โปรดทำตามขั้นตอนด้านล่าง การตั้งค่าอุปกรณ์ทดสอบ GDPR จะเหมือนกับวิธีการ แสดงโฆษณาบนอุปกรณ์ทดสอบ

  1. ทำการเริ่มต้น Adiz โดยเป็นการเริ่มต้นเพื่อตรวจสอบ ID อุปกรณ์ทดสอบ และไม่จำเป็นต้องเขียนข้อความขอความยินยอม GDPR
  2. พิมพ์บันทึกของ Android Studio หรือ Xcode เพื่อตรวจสอบ ID อุปกรณ์ ตัวอย่างบันทึกมีดังนี้

    • Android:
      ใช้ ConsentDebugSettings.Builder().addTestDeviceHashedId("33BE2250B43518CCDA7DE426D04EE231") เพื่อกำหนดอุปกรณ์นี้เป็นอุปกรณ์ดีบัก
      
      ที่ 33BE2250B43518CCDA7DE426D04EE231
    • iOS:
      <UMP SDK>ในการเปิดใช้งานโหมดดีบักสำหรับอุปกรณ์นี้ ให้ตั้งค่า: UMPDebugSettings.testDeviceIdentifiers = @[B74F6468-1516-467C-99AD-CC5973C5DB52]
      
      ที่ B74F6468-1516-467C-99AD-CC5973C5DB52
  3. คัดลอก ID อุปกรณ์
  4. เพิ่ม AdizGDPRManager.setTestDevice(DEVICE_ID) ก่อนเรียกใช้ Adiz.initialize ในโค้ดการเริ่มต้น Adiz ที่มีอยู่
  5. เขียนข้อความขอความยินยอม GDPR และเริ่มต้น Adiz ใหม่เพื่อให้แน่ใจว่าป๊อปอัพขอความยินยอม GDPR แสดงขึ้นอย่างถูกต้อง
        
            using hiveAdiz;
    
            public void Initialize() {
    
                    // การตั้งค่าอุปกรณ์ทดสอบ GDPR
                    AdizGDPRManager.SetTestDevice("33BE2250B43518CCDA7DE426D04EE231");
    
                    Adiz.Initialize(new CommonHandlers.Builder()
                                                                                                    .OnResult(InitResultCB)
                                                                                                    .Build());
            }
        
        

การตั้งค่าแท็กการจัดการสำหรับเด็ก COPPA

ตามกฎหมายการปกป้องข้อมูลส่วนบุคคลออนไลน์สำหรับเด็ก (COPPA) นักพัฒนาแอปสามารถกำหนดได้ว่า Google จะจัดการเนื้อหาเป็นเนื้อหาสำหรับเด็กหรือไม่ โดยการตั้งค่าแท็กการจัดการสำหรับเด็ก (tagForChildDirectedTreatment, TFCD) เมื่อมีการขอโฆษณา หากต้องการให้จัดการเป็นเนื้อหาสำหรับเด็ก จะต้องเรียกใช้ AdizConsentManager.SetUserPrivacySettings ก่อนที่จะเรียกใช้ Adiz.initialize เมื่อใช้ Adiz ร่วมกับ Hive SDK แท็กการจัดการสำหรับเด็กจะถูกนำไปใช้โดยอัตโนมัติ ดังนั้นจึงไม่จำเป็นต้องตั้งค่าเพิ่มเติม


using hiveAdiz;

public void Initialize() {

    bool isTagForChildDirectedTreatment = false; // เปลี่ยนเป็น true หากเป็นเด็ก

    PrivacySettings settings = new PrivacySettings.Builder()
                                .SetTagForChildDirectedTreatment(isTagForChildDirectedTreatment)
                                .Build();

    AdizConsentManager.SetUserPrivacySettings(settings);

    Adiz.Initialize(new CommonHandlers.Builder()
                                            .OnResult(InitResultCB)
                                            .Build());
}

การเพิ่มการจัดการโฆษณา

Adiz สามารถแสดงโฆษณาโดยใช้การจัดการโฆษณาของ AdMob ได้ เพื่อเพิ่มการจัดการโฆษณาให้ทำตามขั้นตอนด้านล่าง

การเพิ่มการจัดการ AdMob

ดำเนินการเชื่อมต่อแหล่งโฆษณาในคอนโซล AdMob ตามตารางด้านล่าง

AppLovin Pangle Unity Ads Meta
ขั้นตอนที่ 1: การตั้งค่า Android iOS Android iOS Android iOS Android iOS
ขั้นตอนที่ 2: เพิ่มแหล่งโฆษณา Android iOS Android iOS Android iOS Android iOS
ขั้นตอนที่ 3 เพิ่ม Adiz อะแดปเตอร์

เพิ่ม Adiz อแดปเตอร์

Assets/HiveAdiz/Editor/Adiz_DefaultDependencies.xmlเพิ่มการพึ่งพาห้องสมุด

<dependencies>
  <androidPackages>
      <repositories>
        <repository>https://repo.maven.apache.org/maven2</repository>
        <repository>https://artifact.bytedance.com/repository/pangle/</repository>
      </repositories>

    <androidPackage spec="com.com2us.android.adiz:hive-adiz:2.1.0"/>
    <!-- AppLovin -->
    <androidPackage spec="com.com2us.android.adiz:hive-adiz-adapter-applovin:2.1.0"/>
    <!-- Pangle -->
    <androidPackage spec="com.com2us.android.adiz:hive-adiz-adapter-pangle:2.1.0"/>
    <!-- Unity Ads -->
    <androidPackage spec="com.com2us.android.adiz:hive-adiz-adapter-unityads:2.1.0"/>
    <!-- Meta -->
    <androidPackage spec="com.com2us.android.adiz:hive-adiz-adapter-meta:2.1.0"/>

  </androidPackages>
  <iosPods>
      <sources>
          <source>https://github.com/Com2uSPlatformCorp/HiveAdiz-iOS.git</source>
      </sources>

      <iosPod name="HiveAdizUnityPlugin" version="2.1.0"/>
      <iosPod name="HiveAdizAdapterAppLovin" version="2.1.0"/>
      <iosPod name="HiveAdizAdapterPangle" version="2.1.0"/>
      <iosPod name="HiveAdizAdapterUnityAds" version="2.1.0"/>
      <iosPod name="HiveAdizAdapterMeta" version="2.1.0"/>

  </iosPods>
</dependencies>

 

เพื่อยืนยันว่าการกำหนดค่า Adiz อนุกรมถูกต้อง ให้เรียกใช้แอปพลิเคชันแล้วตรวจสอบรายการการกำหนดค่าในหน้าจอ ตรวจสอบโฆษณา

การเริ่มต้น Adiz

เป็นขั้นตอนที่จำเป็นต้องดำเนินการก่อนที่จะเปิดเผยโฆษณาทุกประเภท หากทำการเริ่มต้น Adiz จะได้รับโฆษณาคีย์ที่จำเป็นสำหรับการแสดงโฆษณา หากเปิดใช้งานโหมดทดสอบ จะได้รับคีย์ทดสอบ หากคุณกำลังใช้ SDK Hive ให้ดำเนินการเริ่มต้น Adiz หลังจากเรียก AuthV4.setup

Warning

หากคุณใช้การตั้งค่า GDPR คุณต้องเรียบร้อยการตั้งค่า Hive Adiz หลังจากนั้นให้เรียกใช้ AuthV4.setup หากแสดงการแจ้งเตือนการยินยอม ATT (APP Tracking Transparency) และหน้าจอยินยอม GDPR ปรากฏขึ้น แอปของคุณอาจถูกปฏิเสธในการตรวจสอบแอปของ Apple


using hiveAdiz;

public void Start() {
    /* 생략 */

    // เพื่อใช้การเรียกกลับ HiveAdiz จะต้องลงทะเบียน AdizCallbackManager เป็น GameObject.    
    Adiz.InitPlugin();
}

Adiz.Initialize(new CommonHandlers.Builder()
                        .OnResult(InitResultCB)
                        .Build());

// เริ่มต้นฟังการตอบกลับ
private void InitResultCB(AdizError error, string jsonString) {
    Debug.Log(TAG + "::InitResultCB:: errorCode : "+error.errorCode+" errorMessage : "+error.errorMessage+" json : "+jsonString);

    if(error.isSuccess()) {

        JSONObject resJsonObject = new JSONObject (jsonString);

        JSONObject jsonArray = resJsonObject.GetField ("keys");

        if (jsonArray != null && jsonArray.count > 0) {

            List interstitialKeyList = new List();
            List bannerKeyList = new List();
            List nativeKeyList = new List();
            List rewardedKeyList = new List();
            List rewardedInterstitialKeyList = new List();
            List appOpenKeyList = new List();

            List jsonList = jsonArray.list;

            foreach (JSONObject jsonItem in jsonList) {

                bool isDefault = false;
                jsonItem.GetField(ref isDefault, "is_default");

                // นี่คือตัวอย่างการสร้างรายการคีย์ที่มี is_default เป็น false เมื่อป้อนคีย์โฆษณาโดยตรงในเกม
                if(isDefault == false) {
                    string hiveAdKey = null;
                    jsonItem.GetField(ref hiveAdKey, "key");

                    string form = null;
                    jsonItem.GetField(ref form, "form");

                    switch (form) {
                        case "interstitial":
                            interstitialKeyList.Add(hiveAdKey);
                            break;
                        case "banner":
                            bannerKeyList.Add(hiveAdKey);
                            break;
                        case "native":
                            nativeKeyList.Add(hiveAdKey);
                            break;
                        case "rewarded":
                            rewardedKeyList.Add(hiveAdKey);
                            break;
                        case "rewarded_interstitial":
                            rewardedInterstitialKeyList.Add(hiveAdKey);
                            break;
                        case "app_open":
                            appOpenKeyList.Add(hiveAdKey);
                            break;
                    }
                }
            }

            foreach(string hiveAdKey in interstitialKeyList) {
                Debug.Log("onSdkInitialize interstitialKeyList "+hiveAdKey);
            }

            foreach(string hiveAdKey in bannerKeyList) {
                Debug.Log("onSdkInitialize bannerKeyList "+hiveAdKey);
            }

            foreach(string hiveAdKey in nativeKeyList) {
                Debug.Log("onSdkInitialize nativeKeyList "+hiveAdKey);
            }

            foreach(string hiveAdKey in rewardedKeyList) {
                Debug.Log("onSdkInitialize rewardedKeyList "+hiveAdKey);
            }

            foreach(string hiveAdKey in rewardedInterstitialKeyList) {
                Debug.Log("onSdkInitialize rewardedInterstitialKeyList "+hiveAdKey);
            }

            foreach(string hiveAdKey in appOpenKeyList) {
                Debug.Log("onSdkInitialize appOpenKeyList "+hiveAdKey);
            }
        }
    }
}

 

ไฟล์ JSON ที่ได้รับจากการเรียกใช้งานการเริ่มต้นมีรายการคีย์โฆษณาอยู่ รายการคีย์โฆษณามีรูปแบบดังนี้:

 
    {
        "keys":[
            {
                "mediation_id":5,
                "key":"ca-app-pub-3940256099942544/5354046379",
                "form":"rewarded_interstitial",
                "is_default":true,
                "placement_id":"lobby01"
            },
            {
                "mediation_id":4,
                "key":"ca-app-pub-3940256099942544/5224354917",
                "form":"rewarded",
                "is_default":true,
                "placement_id":"game02"
            },
            {
                "mediation_id":3,
                "key":"ca-app-pub-3940256099942544/2247696110",
                "form":"native",
                "is_default":true,
                "placement_id":"event01"
            },
            {
                "mediation_id":1,
                "key":"ca-app-pub-3940256099942544/1033173712",
                "form":"interstitial",
                "is_default":true,
                "placement_id":"mission01"
            },
            {
                "mediation_id":2,
                "key":"ca-app-pub-3940256099942544/6300978111",
                "form":"banner",
                "is_default":true,
                "placement_id":"main01"
            },
            {
                "mediation_id":6,
                "key":"ca-app-pub-3940256099942544/9257395921",
                "form":"app_open",
                "is_default":true,
                "placement_id":"appopen01"
            }
        ]
    }

 

หากทำการเริ่มต้นในโหมดทดสอบ จะได้รับรายการคีย์โฆษณาทดสอบแม้ว่าจะไม่ได้ลงทะเบียนคีย์โฆษณา AdMob ในคอนโซล Hive หากทำการเริ่มต้นในโหมดเชิงพาณิชย์ จะได้รับรายการคีย์โฆษณา AdMob ที่ลงทะเบียนในคอนโซล Hive

โฆษณาประเภท(form)แต่ละประเภทจะมีโฆษณาหนึ่งรายการที่ใช้เป็น โฆษณาหลัก(โฆษณาที่มี "is_default":true) เมื่อมีการลงทะเบียนโฆษณาประเภทใดประเภทหนึ่งเป็นครั้งแรก โฆษณาที่ลงทะเบียนครั้งแรกจะกลายเป็นโฆษณาหลัก โฆษณาหลักไม่จำเป็นต้องป้อนคีย์โฆษณา(hiveAdKey)เมื่อสร้างอินสแตนซ์โฆษณา(initialize()) หากต้องการเปลี่ยนโฆษณาหลัก ต้องลบโฆษณาหลักเดิมใน HiveHive คอนโซลและลงทะเบียนโฆษณาใหม่

การตั้งค่า Listener การโทรกลับโฆษณา

เมื่อสร้างอินสแตนซ์โฆษณาแต่ละรายการ หากคุณใช้ AdizListener คุณจะสามารถรับการโทรกลับตามการเปลี่ยนแปลงสถานะโฆษณาได้

ชื่อ คำอธิบาย การดำเนินการที่จำเป็น
.OnAdLoad(OnAdLoadCB) โหลดโฆษณาสำเร็จ O
.OnAdFail(OnAdLoadFailedCB) ล้มเหลว(`error.errorCode()` และ `error.errorMessage()` สามารถทราบเหตุผลที่ล้มเหลว) O
.OnAdShow(OnAdShowCB) ความสำเร็จในการแสดงโฆษณา O
.OnAdClick(OnAdClickCB) คลิกโฆษณา O
.OnAdPaidEvent(OnAdPaidEventCB) จุดเวลาที่ได้รับ paid event หลังจากการแสดงโฆษณา ซึ่งข้อมูลรายได้จากโฆษณาจะถูกส่ง O
.OnAdClose(OnAdCloseCB) ปิดโฆษณา
  • หลังจากปิดโฆษณา หากต้องการแสดงโฆษณาอีกครั้งจากอินสแตนซ์โฆษณาเดียวกัน ต้องเรียก `load()` อีกครั้งแล้วจึงเรียก `show()`
  • หากไม่ต้องการแสดงโฆษณาอีกต่อไป ให้เรียก `destroy()` เพื่อลบอินสแตนซ์โฆษณา
X
.OnAdReward(OnAdRewardCB) จุดที่ผู้ใช้ได้รับรางวัลหลังจากการแสดงโฆษณาในโฆษณาที่มีรางวัล (`rewarded`, `rewarded interstitial`) X

private void OnAdLoadCB()
{   
    // 광고가 로드되면 호출됩니다.
    // 광고 로드가 성공했다면 원하는 시점에 광고 인스턴스의 .show()를 호출하여 광고를 노출해야 합니다.

    Debug.Log(TAG + "::OnAdLoadCB");

    // แสดงหลังจากโหลด AdizInterstitial เสร็จสิ้น
    // requestShowAd();
}

private void OnAdLoadFailedCB(AdizError error) {
    // การโหลดโฆษณาล้มเหลวหรือไม่สามารถแสดงโฆษณาได้ aused by อื่น ๆ จะถูกเรียกใช้
    Debug.Log(TAG + "::OnAdLoadFailedCB errorCode "+error.errorCode);
    Debug.Log(TAG + "::OnAdLoadFailedCB errorMessage "+error.errorMessage);
}

private void OnAdShowCB()
{   
    // จะถูกเรียกเมื่อโฆษณาแสดง
    Debug.Log(TAG + "::OnAdShowCB");
}

private void OnAdCloseCB()
{   
    // จะถูกเรียกเมื่อโฆษณาถูกปิด
    Debug.Log(TAG + "::OnAdCloseCB");

    // การลบโฆษณา AdizInterstitial หลังจากแสดง
    // requestDestroyAd();
}

private void OnAdClickCB()
{   
    // ถูกเรียกเมื่อคลิกโฆษณา
    Debug.Log(TAG + "::OnAdClickCB");
}

private void OnAdRewardCB(RewardItem rewardItem)
{   
    // การเรียกใช้เมื่อมีการให้รางวัลสำหรับการดูโฆษณาในโฆษณาแบบให้รางวัลและโฆษณาแบบเต็มหน้าจอ
    Debug.Log(TAG + "::OnAdRewardCB:: rewardItem.itemType : " + rewardItem.getItemType() + " rewardItem.itemAmount : " + rewardItem.getItemAmount());
    // จะถูกส่งเฉพาะในโฆษณาแบบให้รางวัลและ rewardedInterstitial
}

private void OnAdPaidEventCB(AdRevenueData adRevenueData)
{   
    // จะถูกเรียกเมื่อมีรายได้จากโฆษณาเกิดขึ้น
    Debug.Log(TAG + "::OnAdPaidEventCB:: adRevenueData.revenue : " + adRevenueData.getRevenue() + " adRevenueData.currency : " + adRevenueData.getCurrency());
}

รหัสข้อผิดพลาด

เมื่อได้รับ OnAdFail() จาก Adiz.Initialize และ AdizListener รหัสข้อผิดพลาด AdizError และข้อความข้อผิดพลาดมีดังนี้

รหัสทั่วไป

หมายเลข กรณี คำอธิบาย
0 สำเร็จ สำเร็จ

รหัสข้อผิดพลาด Adiz

หมายเลข กรณี คำอธิบาย
-1 InvalidParam พารามิเตอร์ไม่ถูกต้อง
-2 NotSupported ไม่รองรับ
-3 InProgress สถานะกำลังดำเนินการ
-4 Network ข้อผิดพลาดเครือข่าย
-5 NeedInitialize ต้องการการเริ่มต้น
-6 ResponseFail การตอบสนองล้มเหลว
-7 Timeout หมดเวลาเครือข่าย
-99 Unknown ข้อผิดพลาดที่ไม่รู้จัก

รหัสข้อผิดพลาดแพลตฟอร์มโฆษณา

หมายเลข กรณี คำอธิบาย
-101 NeedLoad โฆษณายังไม่ได้โหลด
-102 NeedReload ต้องโหลดใหม่เนื่องจากเวลาการแสดงโฆษณาหมดอายุ
-103 NotEnoughInventory การตอบสนองของการจัดการสำเร็จ แต่ไม่มีโฆษณาที่เติมเต็มเนื่องจากขาดแคลนสินค้าคงคลัง
-104 MissingAppId ข้อผิดพลาด AppID สำหรับคำขอการจัดการ
-105 InternalNetworkError ข้อผิดพลาดที่เกี่ยวข้องกับเครือข่ายการจัดการ
-106 InvalidUnitId หมายเลขหน่วยไม่ถูกต้อง
-107 MediationNoFill ตัวปรับการจัดการไม่สามารถจัดการคำขอโฆษณาได้
-108 AlreadyLoaded สถานะได้ถูกโหลดแล้ว
-109 CannotRequestAds ไม่สามารถขอโฆษณาได้
-201 GdprConsentError ข้อผิดพลาดการยินยอม GDPR
-202 IsNotPrivacyOptionsRequired ไม่สามารถแสดงป๊อปอัพการยินยอม GDPR หรือไม่จำเป็นต้องแสดง

การแสดงโฆษณาและการสิ้นสุดโฆษณา

ในการแสดงและสิ้นสุดโฆษณา ให้ทำตามขั้นตอนต่อไปนี้

  1. สร้างอินสแตนซ์โฆษณาจากคลาสโฆษณาตามประเภทโฆษณาที่ต้องการแสดง หากโฆษณาที่ต้องการแสดงไม่ใช่ โฆษณาพื้นฐาน คุณจะต้องป้อนคีย์โฆษณาหรือ ID ตำแหน่งที่ได้รับจาก การเริ่มต้น หากไม่ป้อนคีย์โฆษณา (hiveAdKey) หรือ ID ตำแหน่ง (placementId) จะสร้างอินสแตนซ์โฆษณาพื้นฐาน ID ตำแหน่งสามารถตั้งค่าได้จากคอนโซล Hive และสำหรับข้อมูลเพิ่มเติมโปรดดูที่หน้า การตั้งค่า Admob ในคู่มือคอนโซล
  2. โหลดโฆษณาที่ต้องการแสดง (load())
  3. โหลดโฆษณาที่ต้องการแสดง (load())
  4. แสดงโฆษณาที่โหลดแล้ว (show()) หากต้องการแสดงโฆษณาอีกครั้งจะต้องเรียก load() อีกครั้งแล้วจึงเรียก show()
  5. หากต้องการสิ้นสุดโฆษณาให้เรียก destroy()

โฆษณาเต็มหน้าจอ (Interstitial)

โฆษณาที่ครอบคลุมทั้งหน้าจอ


// Create AdizInterstitial Instance
private AdizInterstitial InterstitialAd = null;

public void requestInitAd(string interstitialAdKey) {
    AdEventHandlers eventHandlers = new AdEventHandlers.Builder()
                                                    .OnAdLoad(OnAdLoadCB)
                                                    .OnAdShow(OnAdShowCB)
                                                    .OnAdClose(OnAdCloseCB)
                                                    .OnAdClick(OnAdClickCB)
                                                    .OnAdFail(OnAdLoadFailedCB)
                                                    .OnAdPaidEvent(OnAdPaidEventCB)
                                                    .Build();


    if(string.IsNullOrEmpty(interstitialAdKey)) {
        // Initialize Default AdizInterstitial Instance (AdEventHandlers)
        InterstitialAd = AdizInterstitial.Initialize(eventHandlers);
    } else {
        // Initialize AdizInterstitial Instance (hiveAdKey, AdEventHandlers)
        InterstitialAd = AdizInterstitial.Initialize(interstitialAdKey, eventHandlers);
    }
}

public void requestInitAdWithPlacementId(string interstitialPlacementId) {
    AdEventHandlers eventHandlers = new AdEventHandlers.Builder()
                                                    .OnAdLoad(OnAdLoadCB)
                                                    .OnAdShow(OnAdShowCB)
                                                    .OnAdClose(OnAdCloseCB)
                                                    .OnAdClick(OnAdClickCB)
                                                    .OnAdFail(OnAdLoadFailedCB)
                                                    .OnAdPaidEvent(OnAdPaidEventCB)
                                                    .Build();


    if(string.IsNullOrEmpty(interstitialPlacementId)) {
        // เริ่มต้น AdizInterstitial Instance เริ่มต้น (AdEventHandlers)
        InterstitialAd = AdizInterstitial.Initialize(eventHandlers);
    } else {
        // เริ่มต้น AdizInterstitial Instance (placementId, AdEventHandlers)
        InterstitialAd = AdizInterstitial.InitializeWithPlacementId(interstitialPlacementId, eventHandlers);
    }
}

public void requestLoadAd() {
    // Load AdizInterstitial
    if(InterstitialAd != null && InterstitialAd.IsInitialized()) InterstitialAd.Load();
}

public void requestShowAd() {
    // Show AdizInterstitial
    if(InterstitialAd != null && InterstitialAd.IsLoaded()) InterstitialAd.Show();
}

public void requestDestroyAd() {
    // ทำลาย AdizInterstitial
    if(InterstitialAd != null) InterstitialAd.Destroy();
    InterstitialAd = null;
}

นี่คือโฆษณาแบนเนอร์ที่แสดงแบนเนอร์ขนาดเฉพาะ โฆษณาแบนเนอร์จะไม่รับ OnAdClose() คอลแบ็ก ดังนั้นคุณต้องเรียกใช้ destroy() จากตำแหน่งอื่นเพื่อสิ้นสุดโฆษณา

 

BannerSizeเป็นขนาดแบนเนอร์มาตรฐาน

ขนาดพ้อย (กว้างxสูง) คำอธิบาย กลุ่มเป้าหมาย ค่าคงที่ BannerSize
320x50 แบนเนอร์ โทรศัพท์มือถือและแท็บเล็ต BannerSize.NORMAL
320x100 แบนเนอร์ขนาดใหญ่ โทรศัพท์มือถือและแท็บเล็ต BannerSize.MEDIUM
300x250 IAB ขนาดกลางสี่เหลี่ยมผืนผ้า โทรศัพท์มือถือและแท็บเล็ต BannerSize.LARGE
468 x 60 IAB แบนเนอร์ขนาดเต็ม แท็บเล็ต BannerSize.FULL

 

PositionTypeคือด้านบนสุดหรือล่างสุด ค่าเริ่มต้นคือด้านล่างสุด

การจัดเรียง คำอธิบาย ค่าคงที่ PositionType
การจัดเรียงที่ด้านบนสุด กำหนดการจัดเรียงที่ด้านบนสุดของหน้าจอ (iOS กำหนดการจัดเรียงที่ด้านบนสุดตาม SafeArea) PositionType.TOP
การจัดเรียงที่ด้านล่างสุด (ค่าเริ่มต้น) กำหนดการจัดเรียงที่ด้านล่างสุดของหน้าจอ (iOS กำหนดการจัดเรียงที่ด้านล่างสุดตาม SafeArea) PositionType.BOTTOM

// สร้าง AdizBanner Instance
private AdizBanner BannerAd = null;

public void requestInitAd(string bannerAdKey) {
    // ตั้งค่าขนาดแบนเนอร์
    private BannerSize bannerSize = BannerSize.NORMAL;

    AdEventHandlers eventHandlers = new AdEventHandlers.Builder()
                                                    .OnAdLoad(OnAdLoadCB)
                                                    .OnAdShow(OnAdShowCB)
                                                    .OnAdClose(OnAdCloseCB)
                                                    .OnAdClick(OnAdClickCB)
                                                    .OnAdFail(OnAdLoadFailedCB)
                                                    .OnAdPaidEvent(OnAdPaidEventCB)
                                                    .Build();


    if(string.IsNullOrEmpty(bannerAdKey)) {
        // Initialize Default AdizBanner Instance (AdEventHandlers)
        BannerAd = AdizBanner.Initialize(bannerSize, eventHandlers);
    } else {
        // Initialize AdizBanner Instance (hiveAdKey, AdEventHandlers)
        BannerAd = AdizBanner.Initialize(bannerAdKey, bannerSize, eventHandlers);
    }
}

public void requestInitAdWithPlacementId(string bannerPlacementId) {
    // Set banner size
    private BannerSize bannerSize = BannerSize.NORMAL;

    AdEventHandlers eventHandlers = new AdEventHandlers.Builder()
                                                    .OnAdLoad(OnAdLoadCB)
                                                    .OnAdShow(OnAdShowCB)
                                                    .OnAdClose(OnAdCloseCB)
                                                    .OnAdClick(OnAdClickCB)
                                                    .OnAdFail(OnAdLoadFailedCB)
                                                    .OnAdPaidEvent(OnAdPaidEventCB)
                                                    .Build();


    if(string.IsNullOrEmpty(bannerPlacementId)) {
        // เริ่มต้นตัวอย่าง AdizBanner เริ่มต้น (AdEventHandlers)
        BannerAd = AdizBanner.Initialize(bannerSize, eventHandlers);
    } else {
        // เริ่มต้นตัวอย่าง AdizBanner (placementId, AdEventHandlers)
        BannerAd = AdizBanner.InitializeWithPlacementId(bannerPlacementId, bannerSize, eventHandlers);
    }
}

public void requestLoadAd() {
    // Load AdizBanner
    if(BannerAd != null && BannerAd.IsInitialized()) BannerAd.Load();
}

public void requestShowAd() {
    // Set position type
    private PositionType bannerPosition = PositionType.TOP;

    // แสดง AdizBanner
    if(BannerAd != null && BannerAd.IsLoaded()) BannerAd.Show(bannerPosition);
}

public void requestDestroyAd() {
    // ทำลาย AdizBanner
    if(BannerAd != null) BannerAd.Destroy();
    BannerAd = null;
}

โฆษณาเนทีฟ (Native)

โฆษณาเนทีฟที่แสดงเทมเพลตเนทีฟขนาดเฉพาะ โฆษณาเนทีฟได้รับการปรับให้เหมาะสมสำหรับหน้าจอแนวตั้ง ดังนั้นจึงแนะนำให้ใช้ในเกมแนวตั้ง (เกมหน้าจอแนวตั้ง) โฆษณาเนทีฟจะไม่รับ OnAdClose() คอลแบ็ก ดังนั้นจึงต้องเรียก destroy() ที่ตำแหน่งอื่นเพื่อปิดโฆษณา

 

เทมเพลตปัจจุบันรองรับขนาด small หรือ medium

ขนาดพอยต์ (ความกว้างxความสูง) เทมเพลต การจัดเรียง ค่าคงที่ BannerSize
355x91 (ปรับอัตราส่วน) ขนาดเล็ก ด้านบน / ด้านล่าง BannerSize.NORMAL
355x370 (ปรับอัตราส่วน) ขนาดกลาง กลาง (คงที่) BannerSize.MEDIUM, BannerSize.LARGE, BannerSize.FULL

 

ในเทมเพลต small PositionType จะอยู่ที่ด้านบนสุดหรือด้านล่างสุด โดยค่าพื้นฐานคือด้านล่างสุด

การจัดเรียง คำอธิบาย ค่าคงที่ PositionType
การจัดเรียงที่ด้านบนสุด กำหนดการจัดเรียงที่ด้านบนสุดของหน้าจอ (iOS กำหนดการจัดเรียงที่ด้านบนสุดตาม SafeArea) PositionType.TOP
การจัดเรียงที่ด้านล่างสุด (ค่าเริ่มต้น) กำหนดการจัดเรียงที่ด้านล่างสุดของหน้าจอ (iOS กำหนดการจัดเรียงที่ด้านล่างสุดตาม SafeArea) PositionType.BOTTOM

 

เทมเพลต medium ไม่สามารถเลือกการจัดเรียงได้ และจะใช้การจัดเรียงกลางเป็นค่าเริ่มต้น


// สร้าง AdizNative Instance
private AdizNative NativeAd = null;

public void requestInitAd(string nativeAdKey) {
    // Set banner size
    private BannerSize bannerSize = BannerSize.NORMAL;

    AdEventHandlers eventHandlers = new AdEventHandlers.Builder()
                                                    .OnAdLoad(OnAdLoadCB)
                                                    .OnAdShow(OnAdShowCB)
                                                    .OnAdClose(OnAdCloseCB)
                                                    .OnAdClick(OnAdClickCB)
                                                    .OnAdFail(OnAdLoadFailedCB)
                                                    .OnAdPaidEvent(OnAdPaidEventCB)
                                                    .Build();


    if(string.IsNullOrEmpty(nativeAdKey)) {
        // เริ่มต้น AdizNative Instance เริ่มต้น (AdEventHandlers)
        NativeAd = AdizNative.Initialize(bannerSize, eventHandlers);
    } else {
        // เริ่มต้น AdizNative Instance (hiveAdKey, AdEventHandlers)
        NativeAd = AdizNative.Initialize(nativeAdKey, bannerSize, eventHandlers);
    }
}

public void requestInitAdWithPlacementId(string nativePlacementId) {
    // ตั้งค่าขนาดแบนเนอร์
    private BannerSize bannerSize = BannerSize.NORMAL;

    AdEventHandlers eventHandlers = new AdEventHandlers.Builder()
                                                    .OnAdLoad(OnAdLoadCB)
                                                    .OnAdShow(OnAdShowCB)
                                                    .OnAdClose(OnAdCloseCB)
                                                    .OnAdClick(OnAdClickCB)
                                                    .OnAdFail(OnAdLoadFailedCB)
                                                    .OnAdPaidEvent(OnAdPaidEventCB)
                                                    .Build();


    if(string.IsNullOrEmpty(nativePlacementId)) {
        // เริ่มต้น AdizNative Instance เริ่มต้น (AdEventHandlers)
        NativeAd = AdizNative.Initialize(bannerSize, eventHandlers);
    } else {
        // เริ่มต้น AdizNative Instance (placementId, AdEventHandlers)
        NativeAd = AdizNative.InitializeWithPlacementId(nativePlacementId, bannerSize, eventHandlers);
    }
}

public void requestLoadAd() {
    // Load AdizNative
    if(NativeAd != null && NativeAd.IsInitialized()) NativeAd.Load();
}

public void requestShowAd() {
    // Set position type
    private PositionType bannerPosition = PositionType.TOP;

    // แสดง AdizNative
    if(NativeAd != null && NativeAd.IsLoaded()) NativeAd.Show(bannerPosition);
}

public void requestDestroyAd() {
    // ทำลาย AdizNative
    if(NativeAd != null) NativeAd.Destroy();
    NativeAd = null;
}

โฆษณาแบบมีรางวัล (Rewarded)

โฆษณาที่ให้รางวัลเมื่อผู้ใช้ดูโฆษณานานกว่าที่กำหนด เมื่อการจ่ายรางวัลเสร็จสิ้น จะได้รับข้อมูลเกี่ยวกับรางวัลผ่าน OnAdReward() คอลแบ็ก


// สร้าง AdizRewarded Instance
private AdizRewarded RewardVideoAd = null;

public void requestInitAd(string rewardedAdKey) {
    AdEventHandlers eventHandlers = new AdEventHandlers.Builder()
                                                    .OnAdLoad(OnAdLoadCB)
                                                    .OnAdShow(OnAdShowCB)
                                                    .OnAdClose(OnAdCloseCB)
                                                    .OnAdClick(OnAdClickCB)
                                                    .OnAdFail(OnAdLoadFailedCB)
                                                    .OnAdReward(OnAdRewardCB)
                                                    .OnAdPaidEvent(OnAdPaidEventCB)
                                                    .Build();


    if(string.IsNullOrEmpty(rewardedAdKey)) {
        // เริ่มต้น AdizRewarded Instance เริ่มต้น (AdEventHandlers)
        RewardVideoAd = AdizRewarded.Initialize(eventHandlers);
    } else {
        // เริ่มต้น AdizRewarded Instance (hiveAdKey, AdEventHandlers)
        RewardVideoAd = AdizRewarded.Initialize(rewardedAdKey, eventHandlers);
    }
}

public void requestInitAdWithPlacementId(string rewardedPlacementId) {
    AdEventHandlers eventHandlers = new AdEventHandlers.Builder()
                                                    .OnAdLoad(OnAdLoadCB)
                                                    .OnAdShow(OnAdShowCB)
                                                    .OnAdClose(OnAdCloseCB)
                                                    .OnAdClick(OnAdClickCB)
                                                    .OnAdFail(OnAdLoadFailedCB)
                                                    .OnAdReward(OnAdRewardCB)
                                                    .OnAdPaidEvent(OnAdPaidEventCB)
                                                    .Build();


    if(string.IsNullOrEmpty(rewardedPlacementId)) {
        // เริ่มต้น AdizRewarded Instance เริ่มต้น (AdEventHandlers)
        RewardVideoAd = AdizRewarded.Initialize(eventHandlers);
    } else {
        // เริ่มต้น AdizRewarded Instance (placementId, AdEventHandlers)
        RewardVideoAd = AdizRewarded.InitializeWithPlacementId(rewardedPlacementId, eventHandlers);
    }
}

public void requestLoadAd() {
    // Load AdizRewarded
    if(RewardVideoAd != null && RewardVideoAd.IsInitialized()) RewardVideoAd.Load();
}

public void requestShowAd() {
    // Show AdizRewarded
    if(RewardVideoAd != null && RewardVideoAd.IsLoaded()) RewardVideoAd.Show();
}

public void requestDestroyAd() {
    // ทำลาย AdizRewarded
    if(RewardVideoAd != null) RewardVideoAd.Destroy();
    RewardVideoAd = null;
}

โฆษณาเต็มหน้าจอแบบมีรางวัล (Rewarded Interstitial)

โฆษณาเต็มหน้าจอแบบมีรางวัลที่ผู้ใช้จะได้รับรางวัลเมื่อดูโฆษณานานกว่าที่กำหนด เมื่อการจ่ายรางวัลเสร็จสิ้น จะได้รับข้อมูลเกี่ยวกับรางวัลผ่าน OnAdReward() คอลแบ็ก


// Create AdizRewardedInterstitial Instance
private AdizRewardedInterstitial RewardedInterstitialAd = null;

public void requestInitAd(string rewardedInterstitialAdKey) {
    AdEventHandlers eventHandlers = new AdEventHandlers.Builder()
                                                    .OnAdLoad(OnAdLoadCB)
                                                    .OnAdShow(OnAdShowCB)
                                                    .OnAdClose(OnAdCloseCB)
                                                    .OnAdClick(OnAdClickCB)
                                                    .OnAdFail(OnAdLoadFailedCB)
                                                    .OnAdReward(OnAdRewardCB)
                                                    .OnAdPaidEvent(OnAdPaidEventCB)
                                                    .Build();


    if(string.IsNullOrEmpty(rewardedInterstitialAdKey)) {
        // เริ่มต้น AdizRewardedInterstitial เริ่มต้น (AdEventHandlers)
        RewardedInterstitialAd = AdizRewardedInterstitial.Initialize(eventHandlers);
    } else {
        // เริ่มต้น AdizRewardedInterstitial เริ่มต้น (hiveAdKey, AdEventHandlers)
        RewardedInterstitialAd = AdizRewardedInterstitial.Initialize(rewardedInterstitialAdKey, eventHandlers);
    }
}

public void requestInitAdWithPlacementId(string rewardedInterstitialPlacementId) {
    AdEventHandlers eventHandlers = new AdEventHandlers.Builder()
                                                    .OnAdLoad(OnAdLoadCB)
                                                    .OnAdShow(OnAdShowCB)
                                                    .OnAdClose(OnAdCloseCB)
                                                    .OnAdClick(OnAdClickCB)
                                                    .OnAdFail(OnAdLoadFailedCB)
                                                    .OnAdReward(OnAdRewardCB)
                                                    .OnAdPaidEvent(OnAdPaidEventCB)
                                                    .Build();


    if(string.IsNullOrEmpty(rewardedInterstitialPlacementId)) {
        // Initialize Default AdizRewardedInterstitial Instance (AdEventHandlers)
        RewardedInterstitialAd = AdizRewardedInterstitial.Initialize(eventHandlers);
    } else {
        // Initialize AdizRewardedInterstitial Instance (placementId, AdEventHandlers)
        RewardedInterstitialAd = AdizRewardedInterstitial.InitializeWithPlacementId(rewardedInterstitialPlacementId, eventHandlers);
    }
}

public void requestLoadAd() {
    // Load AdizRewardedInterstitial
    if(RewardedInterstitialAd != null && RewardedInterstitialAd.IsInitialized()) RewardedInterstitialAd.Load();
}

public void requestShowAd() {
    // Show AdizRewardedInterstitial
    if(RewardedInterstitialAd != null && RewardedInterstitialAd.IsLoaded()) RewardedInterstitialAd.Show();
}

public void requestDestroyAd() {
    // ทำลาย AdizRewardedInterstitial
    if(RewardedInterstitialAd != null) RewardedInterstitialAd.Destroy();
    RewardedInterstitialAd = null;
}

โฆษณาเปิดแอป (AppOpen)

โฆษณาเปิดแอปคือโฆษณาที่แสดงเมื่อสถานะของแอปเปลี่ยนจากพื้นหลังไปยังพื้นหน้า โดยจะมีการโหลดโฆษณาล่วงหน้า (load()) เมื่อโหลดโฆษณาแล้ว หากเรียก show() หลังจากผ่านไป 3 ชั่วโมง โฆษณาจะถูกโหลดใหม่โดยอัตโนมัติและแสดงโฆษณา หากแสดงโฆษณาไปแล้วอย่างน้อยหนึ่งครั้ง โฆษณาจะไม่โหลดโดยอัตโนมัติอีกต่อไป


// สร้าง AdizAppOpen Instance
private AdizAppOpen AppOpenAd = null;

public void requestInitAd(string appOpenAdKey) {
    AdEventHandlers eventHandlers = new AdEventHandlers.Builder()
                                                    .OnAdLoad(OnAdLoadCB)
                                                    .OnAdShow(OnAdShowCB)
                                                    .OnAdClose(OnAdCloseCB)
                                                    .OnAdFail(OnAdLoadFailedCB)
                                                    .OnAdClick(OnAdClickCB)
                                                    .OnAdPaidEvent(OnAdPaidEventCB)
                                                    .Build();


    if(string.IsNullOrEmpty(appOpenAdKey)) {
        // Initialize Default AdizAppOpen Instance (AdEventHandlers)
        AppOpenAd = AdizAppOpen.Initialize(eventHandlers);
    } else {
        // Initialize AdizAppOpen Instance (hiveAdKey, AdEventHandlers)
        AppOpenAd = AdizAppOpen.Initialize(appOpenAdKey, eventHandlers);
    }
}

public void requestInitAdWithPlacementId(string appOpenPlacementId) {
    AdEventHandlers eventHandlers = new AdEventHandlers.Builder()
                                                    .OnAdLoad(OnAdLoadCB)
                                                    .OnAdShow(OnAdShowCB)
                                                    .OnAdClose(OnAdCloseCB)
                                                    .OnAdFail(OnAdLoadFailedCB)
                                                    .OnAdClick(OnAdClickCB)
                                                    .OnAdPaidEvent(OnAdPaidEventCB)
                                                    .Build();


    if(string.IsNullOrEmpty(appOpenPlacementId)) {
        // เริ่มต้น AdizAppOpen Instance เริ่มต้น (AdEventHandlers)
        AppOpenAd = AdizAppOpen.Initialize(eventHandlers);
    } else {
        // เริ่มต้น AdizAppOpen Instance (placementId, AdEventHandlers)
        AppOpenAd = AdizAppOpen.InitializeWithPlacementId(appOpenPlacementId, eventHandlers);
    }
}

public void requestLoadAd() {
    // Load AdizAppOpen
    if(AppOpenAd != null && AppOpenAd.IsInitialized()) AppOpenAd.Load();
}

public void requestShowAd() {
    // Show AdizAppOpen
    Debug.Log("[appOpenAd] appOpenAd don't request Show");
}

public void requestDestroyAd() {
    // ทำลาย AdizAppOpen
    if(AppOpenAd != null) AppOpenAd.Destroy();
    AppOpenAd = null;
}

ลบ HiveAdiz

หากต้องการลบ HiveAdiz ให้ลบโฟลเดอร์ด้านล่างในโปรเจกต์ Unity ของคุณ

  • ทรัพย์สิน/HiveAdiz
  • ทรัพย์สิน/HiveAdiz_ตัวอย่าง