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

Unity

Adiz Unity

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

  • โฆษณาแบบ Interstitial
  • โฆษณาแบบ Banner
  • โฆษณาแบบ Native
  • โฆษณาแบบ Rewarded
  • โฆษณาแบบ Interstitial ที่ได้รับรางวัล
  • โฆษณาแบบ App open

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

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

  1. ตั้งค่า สภาพแวดล้อมการพัฒนาของ Adiz Unity.
  2. ดาวน์โหลดเวอร์ชันล่าสุดของ Adiz จาก ที่นี่ และแตกไฟล์ออก.
  3. ใน Unity ให้เลือกตัวเลือก Assets > Import Package > Custom Package… เลือกไฟล์ .unitypackage และคลิก Import.
  4. ตรวจสอบว่าไฟล์และโฟลเดอร์ของ Adiz ถูกสร้างขึ้นภายใต้โฟลเดอร์ Assets.
  5. ดาวน์โหลดและติดตั้งเวอร์ชันล่าสุดของ 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

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

 

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

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

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

เปิดโหมดทดสอบ

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

มีสองวิธีในการเปิดใช้งานโหมดทดสอบ.

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():

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

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


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

  • ตรวจสอบบันทึก 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 ที่มีอยู่ ใส่ 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.

ในการใช้ตัวตรวจสอบโฆษณา คุณต้องลงทะเบียนอุปกรณ์ทดสอบ

using hiveAdiz;

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 บนแดชบอร์ด AdMob ข้อความ IDFA จะถูกแสดงโดยอัตโนมัติระหว่างการเริ่มต้น Adiz บน iOS 14.5 ขึ้นไป เมื่อผู้ใช้คลิก "ดำเนินการต่อ" ในหน้าต่างข้อความ IDFA จะมีป๊อปอัปการยินยอม ATT แสดงขึ้น

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

Note

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

หากเกมของคุณมุ่งเป้าไปที่ยุโรปและสหราชอาณาจักร (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 ให้ทำตามขั้นตอนเหล่านี้

  1. สร้าง UI ปุ่มในแอปที่สามารถเปิดหน้าต่างการยินยอม GDPR ใหม่ได้
  2. เมื่อทำการติดตั้ง การเริ่มต้น 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 เนื้อหาด้านล่างเหมือนกับวิธีการ แสดงโฆษณาบนอุปกรณ์ทดสอบ.

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

    • Android:
      ใช้ new ConsentDebugSettings.Builder().addTestDeviceHashedId("33BE2250B43518CCDA7DE426D04EE231") เพื่อตั้งค่านี้เป็นอุปกรณ์ดีบัก
      
      from 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 กับ 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) โฆษณาสิ้นสุด
  • หากต้องการแสดงโฆษณาเดียวกันอีกครั้งหลังจากที่โฆษณาสิ้นสุด คุณต้องเรียกใช้ `load()` อีกครั้งตามด้วย `show()`.
  • หากต้องการหยุดการแสดงโฆษณา ให้เรียกใช้ `destroy()` เพื่อลบโฆษณาออก.
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 หรืออยู่ในสถานะที่ไม่จำเป็นต้องแสดง

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

ปฏิบัติตามขั้นตอนด้านล่างเพื่อแสดงและสิ้นสุดโฆษณา.

  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)) {
        // 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 เพื่อให้แน่ใจว่าตรรกะทำงานบนเธรดหลัก

Adiz.RunOnMainThread(() => {
    // Execute on the main thread
    Adiz.Initialize(new CommonHandlers.Builder()
                            .OnResult(InitResultCB)
                            .Build());
});