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

Ios

Adiz iOS

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

  • โฆษณาแบบระหว่างหน้า
  • โฆษณาแบบแบนเนอร์
  • โฆษณาแบบเนทีฟ
  • โฆษณาแบบให้รางวัล
  • โฆษณาแบบระหว่างหน้าที่ให้รางวัล
  • โฆษณาเปิดแอป

ในการติดตั้งและใช้ Adiz iOS โปรดดูคู่มือด้านล่างตามลำดับ

ข้อกำหนดเบื้องต้น

กำหนดค่า สภาพแวดล้อมการพัฒนา iOS ของ Adiz.

การติดตั้ง

เพิ่มคีย์ GADApplicationIdentifier ลงในไฟล์ Info.plist ของโปรเจกต์ Xcode และเพิ่มค่า AdMobId (รูปแบบ ca-app-pub-XXXXX~YYYYY) เป็นค่าของคีย์นี้

GADApplicationIdentifier
ca-app-pub-XXXXX~YYYYY

นอกจากนี้ บน iOS 14 ขึ้นไป โปรดดูที่คู่มือ Update your info.plist เพื่อเพิ่มรายการ SKAdNetwork ลงในไฟล์ Info.plist ของคุณ.   

หลังจากนั้น ให้เพิ่มสิ่งต่อไปนี้ลงในการกำหนดค่า CocoaPods (Podfile) ของโปรเจกต์ของคุณ

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

target 'UnityFramework' do
  pod 'HiveAdizUnityPlugin', '2.0.1'
end

target 'Unity-iPhone' do
end

use_frameworks!

# fix for dyld issue in pods when using Project
post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      # xcode 15 Toolchain Issue
      xcconfig_path = config.base_configuration_reference.real_path
      xcconfig = File.read(xcconfig_path)
      xcconfig_mod = xcconfig.gsub(/DT_TOOLCHAIN_DIR/, "TOOLCHAIN_DIR")
      File.open(xcconfig_path, "w") { |file| file << xcconfig_mod }
      # end

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

รัน $pod install เพื่อใช้การตั้งค่า CocoaPod.

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

Adiz ช่วยให้คุณสามารถแสดงโฆษณาทดสอบได้สองวิธี

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

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

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

Note

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

import HiveAdiz

// เปิดใช้งานโหมดทดสอบ คอมเมนต์บรรทัดด้านล่างสำหรับการจัดจำหน่ายเชิงพาณิชย์
Adiz.setTestMode(true)

// เปิดการบันทึกสำหรับโมดูล Adiz การบันทึกควรใช้เฉพาะในโหมดทดสอบ เท่านั้น คอมเมนต์บรรทัดด้านล่างสำหรับการจัดจำหน่ายเชิงพาณิชย์.
Adiz.setLogEnable(true)
#import <HiveAdiz/HiveAdiz-Swift.h>

// เปิดใช้งานโหมดทดสอบ คอมเมนต์บรรทัดด้านล่างสำหรับการจัดจำหน่ายเชิงพาณิชย์。
[Adiz setTestMode: true];

// เปิดการบันทึกสำหรับโมดูล Adiz การบันทึกควรใช้เฉพาะในโหมดทดสอบ เท่านั้น คอมเมนต์บรรทัดด้านล่างสำหรับการจัดจำหน่ายเชิงพาณิชย์
[Adiz setLogEnable: true];

การตั้งค่าอุปกรณ์ทดสอบสำหรับการแสดงโฆษณา

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

  • เมื่อต้องการทดสอบว่า AdMob ad key ที่ลงทะเบียนใน Hive Console ทำงานได้อย่างถูกต้อง
  • เมื่อต้องการตรวจสอบว่า GDPR consent popup ทำงานอย่างถูกต้องหลังจากที่คุณเขียน GDPR message
  • เมื่อต้องการเรียกใช้ Ad Inspector เพื่อวิเคราะห์และแก้ไขปัญหาคำขอโฆษณา

การทดสอบด้วยโฆษณาจริงโดยไม่ลงทะเบียนอุปกรณ์ทดสอบอาจถือเป็นการเข้าชมที่ไม่ถูกต้อง ซึ่งอาจทำให้บัญชี AdMob ของคุณถูกบล็อกและไม่สามารถแสดงโฆษณาได้อีกต่อไป เมื่อคุณลงทะเบียนอุปกรณ์ทดสอบ โหมดทดสอบหรือโฆษณาทดสอบ (สำหรับโฆษณาเนทีฟ) จะถูกแสดงระหว่างการแสดงโฆษณา อุปกรณ์ทดสอบควรถูกปิดใช้งานสำหรับการปรับใช้ในผลิตภัณฑ์


แบนเนอร์, อินเตอร์สติชัล, หรือโฆษณาแบบให้รางวัล


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


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

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


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

func setTestDevice(testId: String) {
        Adiz.setTestDevice(testId)
}
- (void)setTestDevice: (NSString *)testId {
        [Adiz setTestDevice: testId];
}


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

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

ในการใช้ Ad Inspector ต้องมีเงื่อนไขสองประการต่อไปนี้:

  • ตั้งค่าอุปกรณ์ทดสอบด้วย Adiz.setTestDevice ที่นี่
  • ทำการเริ่มต้นให้เสร็จสิ้นด้วย Adiz.Initialize ที่นี่
func openAdInspector(viewController: UIViewController) {
        AdizDeveloperTool.openAdInspector(viewController)
}
- (void)openAdInspector: (UIViewController *)viewController {
        [AdizDeveloperTool openAdInspector: viewController];
}

การตั้งค่า appID ของ Adiz

ตั้งค่า Adiz AppID ที่คุณลงทะเบียนใน Hive Console AppCenter หากไม่ได้ตั้งค่านี้ มันจะใช้ Bundle ID

Adiz.setAppId(appId)
[Adiz setAppId: appId];

การตั้งค่า Hive Console server

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

  • Hive เซิร์ฟเวอร์คอนโซลทดสอบ: AdizZoneType.test
  • Hive เซิร์ฟเวอร์คอนโซลแซนด์บ็อกซ์: AdizZoneType.sandbox
  • Hive เซิร์ฟเวอร์คอนโซลเชิงพาณิชย์: AdizZoneType.real
Adiz.setZone(AdizZoneType.real)
[Adiz setZone: AdizZoneTypeReal];

การเปิดเผยโฆษณาที่เฉพาะเจาะจงสำหรับผู้ใช้

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

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

 

หลังจากสร้างและเผยแพร่ข้อความ IDFA แล้ว ให้ตั้งค่าการอนุญาตติดตามผู้ใช้ ปฏิบัติตามขั้นตอนด้านล่างเพื่อเพิ่มคีย์ไปยัง Info.plist

  1. เลือกโปรเจกต์ของคุณในตัวนำทางโปรเจกต์ของหน้าต่างโปรเจกต์ Xcode.
  2. ในรายการ TARGETS ให้เลือกแอปของคุณ.
  3. คลิกที่แท็บ Info.
  4. คลิกที่ส่วน Custom iOS Target Properties ในแท็บ Info.
  5. คลิกขวาในรายการ Custom iOS Target Properties.
  6. คลิกที่เมนู Add Row.
  7. ป้อน NSUserTrackingUsageDescription ในฟิลด์ Key และเพิ่มค่าที่ระบุใน ไฟล์ Localization > โฟลเดอร์ Base.Iproj > InfoPlist.strings.

 

ถัดไป เขียนข้อความขออนุญาตจากผู้ใช้แอปตามที่ระบุในไฟล์การแปล (การตั้งค่าทั่วไป > การตั้งค่าการขออนุญาต) หากคุณไม่ป้อนข้อความป๊อปอัปขออนุญาต แอปอาจถูกปฏิเสธระหว่างกระบวนการตรวจสอบเนื่องจากขาดคำแนะนำเพิ่มเติมเกี่ยวกับสิทธิ์การเข้าถึงของผู้ใช้

 

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

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

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

Warning

แม้ว่าคุณจะกำหนดเป้าหมายไปยังภูมิภาคนอกยุโรปและสหราชอาณาจักร คุณต้องสร้างข้อความ GDPR ในคอนโซล AdMob เพื่อให้การเริ่มต้นของ Adiz ทำงานได้อย่างถูกต้อง.

การสร้างข้อความ GDPR

เข้าถึงคอนโซล Google AdMob เพื่อสร้างข้อความ GDPR ก่อนที่จะสร้างข้อความ GDPR โปรดดูที่ คู่มือการสร้างข้อความ GDPR

หลังจากสร้างข้อความ GDPR แล้ว ป๊อปอัปการยินยอม GDPR จะถูกแสดงโดยอัตโนมัติในระหว่างการ เริ่มต้นของ Adiz

การดำเนินการตัวเลือกสำหรับการยินยอม/ถอนการยินยอมตาม GDPR

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

  1. สร้าง UI ปุ่มในแอปของคุณเพื่อโหลดหน้าต่างป๊อปอัปการยินยอม GDPR ใหม่
  2. เมื่อคุณดำเนินการ การเริ่มต้นของ Adiz ให้เรียกใช้ isPrivacyOptionsRequired() เพื่อแสดง UI ปุ่มด้านบนสำหรับผู้ใช้ที่เข้าถึงจากยุโรปและสหราชอาณาจักร และไม่แสดงในกรณีอื่น หากผู้ใช้จากยุโรปและสหราชอาณาจักรกดปุ่ม ให้เรียกใช้ showPrivacyOptionsForm เพื่อโหลดหน้าต่างป๊อปอัปการยินยอม GDPR ใหม่ ซึ่งอนุญาตให้ผู้ใช้แก้ไขการยินยอมสำหรับรายละเอียด GDPR ได้ตลอดเวลาผ่านปุ่ม "จัดการตัวเลือก" หรือปุ่มที่คล้ายกันภายในแอป วิธีการ showPrivacyOptionsForm ที่ให้ไว้ด้านล่างเป็นเพียงเพื่อการแสดงตัวอย่างและสามารถนำไปใช้ในรูปแบบใดก็ได้ตามที่นักพัฒนาต้องการ
import HiveAdiz

func initialize(_ appId: String) {
        // ...
        // isPrivacyOptionsRequired is default false
        targetViewController.showPrivacyFormButton.isEnabled = AdizConsentManager.isPrivacyOptionsRequired())

        // HiveAdiz เริ่มต้น
        Adiz.initialize(targetViewController) { error, json in
                // ...
                // ตรวจสอบการเปิดใช้งานปุ่ม showPrivacyOptionsForm
                targetViewController.showPrivacyFormButton.isEnabled = AdizConsentManager.isPrivacyOptionsRequired()
                // ...
        }
} 

func showPrivacyOptionsForm(_ targetViewController: UIViewController) {
        // แสดงแบบฟอร์ม GDPR
        if AdizConsentManager.isPrivacyOptionsRequired() {
    AdizConsentManager.showPrivacyOptionsForm(targetViewController) { error in
                        // ไม่จำเป็นต้องจัดการข้อผิดพลาดใดๆ
                }
        }
}
    #import <HiveAdiz/HiveAdiz-Swift.h>

    (void)initialize: (NSString *)appId {
   // ...
   // isPrivacyOptionsRequired เป็นค่าเริ่มต้น false
   targetViewController.showPrivacyFormButton.enabled = [AdizConsentManager isPrivacyOptionsRequired];

   // HiveAdiz เริ่มต้น    
   [Adiz initialize: targetViewController handler:^(AdizError * error, NSDictionary<NSString *,id> * json) {
       // ...
       // ตรวจสอบการเปิดใช้งานปุ่ม showPrivacyOptionsForm
       targetViewController.showPrivacyFormButton.enabled = [AdizConsentManager isPrivacyOptionsRequired];
       // ...
   }];
    } 

    (void)showPrivacyOptionsForm: (UIViewController*) targetViewController {
   // แสดงแบบฟอร์ม GDPR
   if ([AdizConsentManager isPrivacyOptionsRequired]) {
    [AdizConsentManager showPrivacyOptionsForm: targetViewController handler:^(AdizError *error) {
           // ไม่จำเป็นต้องจัดการกับข้อผิดพลาดใดๆ
       }];
   }
    }

การตั้งค่า tag สำหรับ under อายุ consent

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

Warning

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

Note

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

func initialize(_ appId: String) {
bool isTagForUnderAgeOfConsent = false // change this to true if the user is a child

let privacySet = PrivacySettings.Builder()
            .setTagForUnderAgeOfConsent(isTagForUnderAgeOfConsent)

AdizConsentManager.setUserPrivacySettings(privacySet.build())

// HiveAdiz initialize
Adiz.initialize(targetViewController) { error, json in
        // ...
    }
}
(void)initialize: (NSString *)appId {
bool isTagForUnderAgeOfConsent = false; // change this to true if the user is a child

PrivacySettingsBuilder* privacySet = [[PrivacySettingsBuilder alloc] init];
privacySet = [builder setTagForUnderAgeOfConsent: isTagForUnderAgeOfConsent];

[AdizConsentManager setUserPrivacySettings: [privacySet build]];

// HiveAdiz เริ่มต้น
[Adiz initialize: targetViewController handler:^(AdizError * error, NSDictionary<NSString *,id> * json) {
        // ...
}];
}

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

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

  1. เริ่มต้น Adiz. วัตถุประสงค์ของการเริ่มต้นนี้คือการตรวจสอบ ID อุปกรณ์ทดสอบ ดังนั้นคุณไม่จำเป็นต้องสร้างข้อความยินยอม GDPR ล่วงหน้า
  2. ค้นหา ID อุปกรณ์ในผลลัพธ์ล็อก Logcat นี่คือตัวอย่างข้อความ: To enable debug mode for this device, set: UMPDebugSettings.testDeviceIdentifiers = @[B74F6468-1516-467C-99AD-CC5973C5DB52]

    รับรหัสอุปกรณ์ (ตัวอย่าง: B74F6468-1516-467C-99AD-CC5973C5DB52).

  3. คัดลอก ID อุปกรณ์

  4. เพิ่ม Adiz.setTestDevice(DEVICE_ID) ก่อนที่จะดำเนินการ Adiz.initialize ในโค้ดการเริ่มต้น Adiz ที่มีอยู่
  5. สร้างข้อความขอความยินยอม GDPR และเริ่มต้น Adiz ใหม่เพื่อให้แน่ใจว่าหน้าต่างป๊อปอัพขอความยินยอม GDPR ปรากฏขึ้นอย่างถูกต้อง
func initialize(_ appId: String) {
// ...
// Set TestDevice before Adiz.initialize. example @"B74F6468-1516-467C-99AD-CC5973C5DB52"
Adiz.setTestDevice("B74F6468-1516-467C-99AD-CC5973C5DB52")

// HiveAdiz เริ่มต้น
Adiz.initialize(targetViewController) { error, json in
    // ...
}
}
(void)initialize: (NSString *)appId {
// ...
// ตั้งค่า TestDevice ก่อน Adiz.initialize. ตัวอย่าง @"B74F6468-1516-467C-99AD-CC5973C5DB52"
[Adiz setTestDevice: @"B74F6468-1516-467C-99AD-CC5973C5DB52"];

// HiveAdiz เริ่มต้น
[Adiz initialize: targetViewController handler:^(AdizError * error, NSDictionary<NSString *,id> * json) {
    // ...
}];
}

การตั้งค่าแท็กการรักษาที่มุ่งเป้าไปที่เด็กตาม COPPA

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

func initialize(_ appId: String) {
        bool isTagForChildDirectedTreatment = false // เปลี่ยนเป็น true สำหรับเด็ก

        let privacySet = PrivacySettings.Builder()
                .setTagForChildDirectedTreatment(isTagForUnderAgeOfConsent)

        AdizConsentManager.setUserPrivacySettings(privacySet.build())

        // HiveAdiz initialize
        Adiz.initialize(targetViewController) { error, json in
                // ...
        }
}
- (void)initialize: (NSString *)appId {
        bool isTagForChildDirectedTreatment = false; // Change to true for children

        PrivacySettingsBuilder* privacySet = [[PrivacySettingsBuilder alloc] init];
        privacySet = [builder setTagForChildDirectedTreatment: isTagForChildDirectedTreatment];

        [AdizConsentManager setUserPrivacySettings: [privacySet build]];

        // HiveAdiz เริ่มต้น
        [Adiz initialize: targetViewController handler:^(AdizError * error, NSDictionary<NSString *,id> * json) {
                // ...
        }];
}

เพิ่ม ad mediation

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

เพิ่ม AdMob mediation

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

AppLovin Pangle Unity Ads Meta
ขั้นตอนที่ 1 กำหนดค่า AppLovin กำหนดค่า Pangle กำหนดค่า Unity Ads ตั้งค่าการกำหนดค่า Meta
ขั้นตอนที่ 2 เพิ่มแหล่งโฆษณา AppLovin ไปยัง AdMob เพิ่มแหล่งโฆษณา Pangle ไปยัง AdMob เพิ่มแหล่งโฆษณา Unity Ads ไปยัง AdMob เพิ่มแหล่งโฆษณา Meta ไปยัง AdMob
ขั้นตอนที่ 3 เพิ่ม Adiz Adapter

เพิ่ม adiz adapter

เพิ่ม dependencies ลงใน CocoaPods Podfile.

# ...

$HIVE_ADIZ_VERSION = '2.0.1'

def adiz
  pod 'HiveAdiz', $HIVE_ADIZ_VERSION
end

def adizAdapter
  pod 'HiveAdizAdapterAppLovin', $HIVE_ADIZ_VERSION
  pod 'HiveAdizAdapterPangle', $HIVE_ADIZ_VERSION
  pod 'HiveAdizAdapterUnityAds', $HIVE_ADIZ_VERSION
  pod 'HiveAdizAdapterMeta', $HIVE_ADIZ_VERSION
end

target 'MyGame-mobile' do
  adiz
  adizAdapter
end

# ...

 

เพื่อให้แน่ใจว่าการกำหนดค่าตัวเชื่อมต่อ Adiz ถูกนำไปใช้อย่างถูกต้อง ให้เรียกใช้แอปและตรวจสอบรายการการกำหนดค่าบนหน้าจอ Ad Inspector.

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

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

Note

หากเกมของคุณมุ่งเป้าไปที่ภูมิภาคยุโรปและอังกฤษ (EEA & UK) และคุณไม่ได้ใช้ Hive SDK คุณจะต้องขอความยินยอมตาม GDPR ก่อนที่จะดำเนินการเริ่มต้น Adiz สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการขอความยินยอมตาม GDPR โปรดตรวจสอบคู่มือ Google AdMob.

import HiveAdiz

// กำลังเริ่มต้น Adiz
Adiz.initialize(targetViewController) { error, json in
        if error.isSuccess,
                let responseList = json?["keys"] as? [[String:Any]] {

                var interstitialKeyList = [String]()
                var bannerKeyList = [String]()
                var nativeKeyList = [String]()
                var rewardedKeyList = [String]()
                var rewardedInterstitialKeyList = [String]()
                var appOpenKeyList = [String]()

                for response in responseList {
                        if let isDefault = response["is_default"] as? Bool,
                                isDefault == false {
                                let hiveAdKey = response["key"] as? String ?? ""
                                let hiveForm = response["form"] as? String ?? ""

                                switch hiveForm {
                                case "interstitial": interstitialKeyList.append(hiveAdKey)
                                case "banner": bannerKeyList.append(hiveAdKey)
                                case "native": nativeKeyList.append(hiveAdKey)
                                case "rewarded": rewardedKeyList.append(hiveAdKey)
                                case "rewarded_interstitial": rewardedInterstitialKeyList.append(hiveAdKey)
                                case "app_open": appOpenKeyList.append(hiveAdKey)
                                default: break
                                }
                        }
                }

                print("interstitialKeyList \(interstitialKeyList)");
                print("bannerKeyList \(bannerKeyList)");
                print("nativeKeyList \(nativeKeyList)");
                print("rewardedKeyList \(rewardedKeyList)");
                print("rewardedInterstitialKeyList \(rewardedInterstitialKeyList)");
                print("appOpenKeyList \(appOpenKeyList)");
        }
}
#import <HiveAdiz/HiveAdiz-Swift.h> 

// กำลังเริ่มต้น Adiz
[Adiz initialize: targetViewController handler:^(AdizError * error, NSDictionary<NSString *,id> * json) {
        if([error isSuccess] && json[@"keys"] != nil) {
                NSArray* responseList = json[@"keys"];

                NSMutableArray<NSString*> *interstitialKeyList = [[NSMutableArray alloc] init];
                NSMutableArray<NSString*> *bannerKeyList = [[NSMutableArray alloc] init];
                NSMutableArray<NSString*> *nativeKeyList = [[NSMutableArray alloc] init];
                NSMutableArray<NSString*> *rewardedKeyList = [[NSMutableArray alloc] init];
                NSMutableArray<NSString*> *rewardedInterstitialKeyList = [[NSMutableArray alloc] init];
                NSMutableArray<NSString*> *appOpenKeyList = [[NSMutableArray alloc] init];

                for (NSDictionary* response in responseList) {
                        // นี่คือตัวอย่างการตั้งค่ารายการคีย์โฆษณา (is_default = false) เมื่อคุณต้องการใส่คีย์โฆษณาโดยตรง
                        if (response[@"is_default"] != nil && [response[@"is_default"] boolValue] == false) {
                                NSString* hiveAdKey = response[@"key"];
                                NSString* hiveForm = response[@"form"];
                                if ([hiveForm isEqualToString: @"interstitial"]) {
                                        [interstitialKeyList addObject: hiveAdKey];
                                } else if ([hiveForm isEqualToString: @"banner"]) {
                                        [bannerKeyList addObject: hiveAdKey];
                                } else if ([hiveForm isEqualToString: @"native"]) {
                                        [nativeKeyList addObject: hiveAdKey];
                                } else if ([hiveForm isEqualToString: @"rewarded"]) {
                                        [rewardedKeyList addObject: hiveAdKey];
                                } else if ([hiveForm isEqualToString: @"rewarded_interstitial"]) {
                                        [rewardedInterstitialKeyList addObject: hiveAdKey];
                                } else if ([hiveForm isEqualToString: @"app_open"]) {
                                        [appOpenKeyList addObject: hiveAdKey];
                                }
                        }
                }

                NSLog(@"interstitialKeyList %@", interstitialKeyList);
                NSLog(@"bannerKeyList %@", bannerKeyList);
                NSLog(@"nativeKeyList %@", nativeKeyList);
                NSLog(@"rewardedKeyList %@", rewardedKeyList);
                NSLog(@"rewardedInterstitialKeyList %@", rewardedInterstitialKeyList);
                NSLog(@"appOpenKeyList %@", appOpenKeyList);
        }
}];

ไฟล์ JSON ที่ได้รับเป็นการตอบกลับรวมถึงรายการของคีย์โฆษณา รูปแบบของรายการคีย์โฆษณามีดังนี้:

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

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

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

การตั้งค่าการฟังการเรียกกลับโฆษณา

คุณสามารถรับการเรียกกลับตามการเปลี่ยนแปลงสถานะของโฆษณาโดยการใช้ AdizListener เมื่อสร้างตัวอย่างโฆษณาแต่ละตัว.

ชื่อ คำอธิบาย จำเป็น
onLoad() โหลดโฆษณาสำเร็จ O
onFail(error: AdizError) ล้มเหลว (คุณสามารถเข้าใจเหตุผลในการล้มเหลวผ่าน error.getCode() และ error.getMessage()) O
onShow() แสดงโฆษณาสำเร็จ O
onClick() โฆษณาถูกคลิก O
onPaidEvent(_ revenueData: AdRevenueData) นี่คือจุดที่ได้รับเหตุการณ์ที่ต้องชำระเงินหลังจากแสดงโฆษณา ในจุดนี้ ข้อมูลรายได้จากโฆษณาจะถูกส่งมอบ O
onClose() โฆษณาถูกปิด
* หลังจากปิดโฆษณา หากต้องการแสดงอินสแตนซ์โฆษณาเดียวกันอีกครั้ง คุณต้องเรียก load() และจากนั้นเรียก show()
* หากคุณไม่ต้องการแสดงโฆษณาอีกต่อไป ให้เรียก destroy() เพื่อลบอินสแตนซ์โฆษณา
X
onRewarded(_ rewardItem: RewardItem) จุดที่ผู้ใช้ได้รับรางวัลหลังจากแสดงโฆษณาสำหรับโฆษณาที่ให้รางวัล (rewarded, rewarded interstitial) X
import HiveAdiz

class TestAdizListener: AdizListener {
        func onLoad() {
                // Called when the ad is loaded.
                // If the ad load is successful, you need to call the ad instance's .show() at the desired point to display the ad.
                print("[\(delegateTypeName)] onLoad")
        }
        func onFail(_ error: AdizError) {
                // Called if the ad load failed or the ad display failed for some other reason.
                print("[\(delegateTypeName)] onFail: ")
                print("(\(error.getCode())) \(error.getMessage() ?? "")")
        }
        func onShow() {
                // Called when the ad is displayed.
                print("[\(delegateTypeName)] onShow")
        }
        func onClick() {
                // Called when the ad is clicked.
                print("[\(delegateTypeName)] onClick")
        }
        func onPaidEvent(_ revenueData: AdRevenueData) {
                // Called when the revenue for the ad is generated.
                print("[\(delegateTypeName)] onPaidEvent: \(revenueData.getCurrency()) \(revenueData.getRevenue().description)")
                var revenue = revenueData.getRevenue() // revenue when ad is exposed
                var currency = revenueData.getCurrency() // currency code for revenue when ad is exposed
        }
        func onClose() {
                // Called when the ad is closed.
                // Banner, Native ads do not have an onClose callback.
                print("[\(delegateTypeName)] onClose")
        }
        func onRewarded(_ rewardItem: RewardItem) {
                // Called when a reward occurs for watching the ad in rewarded, rewarded interstitial ads.
                print("[\(delegateTypeName)] onRewarded")
                print("amount: \(rewardItem.getItemAmount()) type: \(rewardItem.getItemType())")

                var itemType = rewardItem.getItemType() // Reward item type
                var itemAmount = rewardItem.getItemAmount() // Reward item quantity    }}
#import <HiveAdiz/HiveAdiz-Swift.h>

@interface TestAdizListener : NSObject<AdizListener>
@end

@implementation TestAdizListener

- (void) onLoad {
        // เรียกเมื่อโฆษณาถูกโหลด
        // หากการโหลดโฆษณาสำเร็จ คุณต้องเรียก .show() ของอินสแตนซ์โฆษณาที่จุดที่ต้องการเพื่อแสดงโฆษณา
        NSLog(@"[TestAdizListener] onLoad");
}

- (void) onFail:(AdizError *)error {
        // Called if the ad load failed or the ad display failed for some other reason.
        NSLog(@"[TestAdizListener] onFail: ");
        NSLog(@"errorCode: %ld, errorMessage: %@", (long)[error getCode], [error getMessage]);
}

- (void) onShow {
        // Called when the ad is displayed.
        NSLog(@"[TestAdizListener] onShow");
}

- (void) onClick {
        // Called when the ad is clicked.
        NSLog(@"[TestAdizListener] onClick");
}

- (void) onPaidEvent:(AdRevenueData *)revenueData {
        // เมื่อรายได้จากโฆษณาถูกสร้างขึ้น
        NSLog(@"[TestAdizListener] onPaidEvent: %@ %f", [revenueData getCurrency], [revenueData getRevenue]);
        double revenue = [revenueData getRevenue]; // รายได้เมื่อโฆษณาถูกแสดง
        NSString* currency = [revenueData getCurrency]; // รหัสสกุลเงินสำหรับรายได้เมื่อโฆษณาถูกแสดง
}

- (void) onClose {
        // ถูกเรียกเมื่อโฆษณาถูกปิด
        // แบนเนอร์, โฆษณาเนทีฟไม่มีการเรียกกลับ onClose
        NSLog(@"[TestAdizListener] onClose");
}

- (void) onRewarded:(RewardItem *)rewardItem {
        // เรียกเมื่อมีการให้รางวัลสำหรับการดูโฆษณาในโฆษณาที่ให้รางวัล, โฆษณาแบบอินเตอร์สเตเชียลที่ให้รางวัล
        NSLog(@"[TestAdizListener] onRewarded");
        NSLog(@"amount: %ld type: %@", (long)[rewardItem getItemAmount], [rewardItem getItemType]);

        NSString* itemType = [rewardItem getItemType]; // Reward item type
        NSInteger itemAmount = [rewardItem getItemAmount]; // Reward item type quantity
}

@end

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

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

รหัสทั่วไป

หมายเลข กรณี คำอธิบาย
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. สร้างอินสแตนซ์โฆษณาจากคลาสโฆษณาสำหรับแต่ละประเภทของโฆษณาที่คุณต้องการเปิดเผย หากโฆษณาที่คุณต้องการเปิดเผยไม่ใช่ โฆษณาเริ่มต้น คุณต้องป้อนคีย์โฆษณาที่ได้รับจาก การเริ่มต้น หากคุณไม่ป้อนคีย์โฆษณา (hiveAdKey) จะมีการสร้างอินสแตนซ์โฆษณาเริ่มต้น
  2. โหลด (load()) โฆษณาที่คุณต้องการเปิดเผย
  3. เปิดเผย (show()) โฆษณาที่โหลดแล้ว เพื่อเปิดเผยโฆษณาอีกครั้ง คุณต้องเรียก load() อีกครั้งตามด้วย show()
  4. เพื่อยุติโฆษณา ให้เรียก destroy()

โฆษณาแบบแทรก

โฆษณาแบบแทรกคือโฆษณาที่เต็มหน้าจอซึ่งปกคลุมส่วนติดต่อของเกม。

import UIKit
import HiveAdiz

class InitViewController: UIViewController {

        // สร้างอินสแตนซ์โฆษณาแบบอินเตอร์สติชเชียล
        var interstitialAd: AdizInterstitial?

        func requestInitAd(hiveAdKey: String?) {
                if let adKey = hiveAdKey,
                        adKey.count > 0 {
                        // Initialize AdizInterstitial Instance (ViewController, hiveAdKey, AdizListener)
                        self.interstitialAd = AdizInterstitial.initialize(self, hiveAdKey: adKey, adizListener: self)
                }
                else {
                        // Initialize Default AdizInterstitial Instance (ViewController, AdizListener)
                        self.interstitialAd = AdizInterstitial.initialize(self, adizListener: self)
                }
        }

        func requestLoadAd() {
                // Load AdizInterstitial
                self.interstitialAd?.load()
        }

        func requestShowAd() {
                // แสดง AdizInterstitial
                self.interstitialAd?.show()
        }

        func requestDestroyAd() {
                // ทำลาย AdizInterstitial
                self.interstitialAd?.destroy()
                self.interstitialAd = nil
        }
}

extension InitViewController: AdizListener {
        func onLoad() {
                // requestShowAd()
        }
        func onFail(_ error: AdizError) {
        }
        func onShow() {
        }
        func onClick() {
        }
        func onPaidEvent(_ revenueData: AdRevenueData) {
        }
        func onClose() {
                // requestDestroyAd()
        }
}
#import <UIKit/UIKit.h>
#import <HiveAdiz/HiveAdiz-Swift.h>

@interface InitViewController : UIViewController<AdizListener>
@property (nonatomic, strong) AdizInterstitial* interstitialAd;
@end

@implementation InitViewController

- (void) requestInitAd: (NSString*)hiveAdKey {
        if (hiveAdKey != nil && ![hiveAdKey isEqualToString:@""]) {
                // เริ่มต้น AdizInterstitial Instance (ViewController, hiveAdKey, AdizListener)
                // สร้างอินสแตนซ์โฆษณาแบบเต็มหน้าจอ
                self.interstitialAd = [AdizInterstitial initialize:self hiveAdKey:hiveAdKey adizListener:self];
        }
        else {
                // เริ่มต้น AdizInterstitial Instance เริ่มต้น (ViewController, AdizListener)
                self.interstitialAd = [AdizInterstitial initialize:self adizListener:self];
        }
}

- (void) requestLoadAd {
        // โหลด AdizInterstitial
        if (self.interstitialAd != nil) {
                [self.interstitialAd load];
        }
}

- (void) requestShowAd {
        // แสดง AdizInterstitial
        if (self.interstitialAd != nil) {
                [self.interstitialAd show];
        }
}

- (void) requestDestroyAd {
        // ทำลาย AdizInterstitial
        if (self.interstitialAd != nil) {
                [self.interstitialAd destroy];
                self.interstitialAd = nil;
        }
}

#pragma mark - AdizListener

- (void) onLoad {
        // [self requestShowAd];
}

- (void) onFail:(AdizError *)error {
}

- (void) onShow {
}

- (void) onClick {
}

- (void) onPaidEvent:(AdRevenueData *)revenueData {
}

- (void) onClose {
        // [self requestDestroyAd];
}

@end

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

BannerSize ปฏิบัติตามขนาดแบนเนอร์มาตรฐาน.

ขนาดจุด (ความกว้าง x ความสูง) คำอธิบาย อุปกรณ์ที่รองรับ คงที่ขนาดแบนเนอร์
320x50 แบนเนอร์ โทรศัพท์มือถือและแท็บเล็ต BannerSize.normal
320x100 แบนเนอร์ขนาดใหญ่ โทรศัพท์มือถือและแท็บเล็ต BannerSize.medium
300x250 IAB Medium Rectangle โทรศัพท์มือถือและแท็บเล็ต BannerSize.large
468x60 IAB Full-Size Banner แท็บเล็ต BannerSize.full

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

การจัดตำแหน่ง คำอธิบาย ค่าคงที่ประเภทตำแหน่ง
การจัดตำแหน่งด้านบน ระบุการจัดตำแหน่งที่ด้านบนของหน้าจอ โดยอิงจาก SafeArea PositionType.top
การจัดตำแหน่งด้านล่าง (ค่าเริ่มต้น) ระบุการจัดตำแหน่งที่ด้านล่างของหน้าจอ โดยอิงจาก SafeArea PositionType.bottom
import UIKit
import HiveAdiz

class BannerViewController: UIViewController {

        // สร้างอินสแตนซ์ AdizBanner
        // สร้างอินสแตนซ์โฆษณาแบนเนอร์
        var bannerAd: AdizBanner?

        func requestInitAd(hiveAdKey: String?) {        // ตั้งค่าขนาดแบนเนอร์
                var bannerSize: BannerSize = .normal

                if let adKey = hiveAdKey,
                        adKey.count > 0 {
                        // เริ่มต้น AdizBanner Instance (ViewController, hiveAdKey, BannerSize, AdizListener)
                        self.bannerAd = AdizBanner.initialize(self, hiveAdKey: adKey, size: bannerSize, adizListener: self)
                }        else {
                        // เริ่มต้น Default AdizBanner Instance (ViewController, BannerSize, AdizListener)
                        self.bannerAd = AdizBanner.initialize(self, size: bannerSize, adizListener: self)
                }    }     func requestLoadAd() {
                // โหลด AdizBanner
                self.bannerAd?.load()
        }     func requestShowAd() {
                // ตั้งค่าประเภทตำแหน่ง
                var position: PositionType = .top

                // แสดง AdizBanner
                self.bannerAd?.show(position)
        }     func requestDestroyAd() {
                // ทำลาย AdizBanner
                self.bannerAd?.destroy()
                self.bannerAd = nil
        }} extension BannerViewController: AdizListener {
        func onLoad() {
                // requestShowAd()
        }    func onFail(_ error: AdizError) {
        }    func onShow() {
        }    func onClick() {
        }    func onPaidEvent(_ revenueData: AdRevenueData) {    }}
#import <UIKit/UIKit.h>
#import <HiveAdiz/HiveAdiz-Swift.h>

@interface BannerViewController : UIViewController<AdizListener>
@property (nonatomic, strong) AdizBanner* bannerAd;
@end

@implementation BannerViewController

- (void) requestInitAd: (NSString*)hiveAdKey {
        // ตั้งค่าขนาดแบนเนอร์
        BannerSize bannerSize = BannerSizeNormal;

        if (hiveAdKey != nil && ![hiveAdKey isEqualToString:@""]) {
                // Initialize AdizBanner Instance (ViewController, hiveAdKey, BannerSize, AdizListener)
                self.bannerAd = [AdizBanner initialize:self hiveAdKey:hiveAdKey size: bannerSize adizListener:self];
        }    else {
                // Initialize Default AdizBanner Instance (ViewController, BannerSize, AdizListener)
                self.bannerAd = [AdizBanner initialize:self size:bannerSize adizListener:self];
        }} - (void) requestLoadAd {
        // Load AdizBanner
        if (self.bannerAd != nil) {
                [self.bannerAd load];
        }} - (void) requestShowAd {
        // Set position type
        PositionType position = PositionTypeTop;

        // แสดง AdizBanner
        if (self.bannerAd != nil) {
                [self.bannerAd show: position];
        }} - (void) requestDestroyAd {
        // ทำลาย AdizBanner
        if (self.bannerAd != nil) {
                [self.bannerAd destroy];
                self.bannerAd = nil;
        }} #pragma mark - AdizListener

- (void) onLoad {
        // [self requestShowAd];
} - (void) onFail:(AdizError *)error {
} - (void) onShow {
} - (void) onClick {
} - (void) onPaidEvent:(AdRevenueData *)revenueData {
} @end

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

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

ขณะนี้ เทมเพลตสนับสนุนขนาด small หรือ medium

ขนาดจุด (ความกว้าง x ความสูง) เทมเพลต การจัดแนว ค่าขนาดแบนเนอร์
355x91 (ปรับอัตราส่วน) ขนาดเล็ก ด้านบน / ด้านล่าง BannerSize.normal
355x370 (ปรับอัตราส่วน) ขนาดกลาง ตรงกลาง (คงที่) BannerSize.medium, BannerSize.large, BannerSize.full

สำหรับเทมเพลต small ตัวแปร PositionType จะเป็นตำแหน่งด้านบนหรือล่าง โดยค่าเริ่มต้นจะเป็นด้านล่าง

การจัดตำแหน่ง คำอธิบาย ค่าคงที่ประเภทตำแหน่ง
การจัดตำแหน่งด้านบน ระบุการจัดตำแหน่งที่ด้านบนของหน้าจอ PositionType.top
การจัดตำแหน่งด้านล่าง (ค่าเริ่มต้น) ระบุการจัดตำแหน่งที่ด้านล่างของหน้าจอ PositionType.bottom

เทมเพลต medium ไม่อนุญาตให้เลือกการจัดตำแหน่งและใช้การจัดตำแหน่งกลางเป็นค่าเริ่มต้น

import UIKit
import HiveAdiz

class NativeViewController: UIViewController {

        // สร้าง AdizNative Instance
        var nativeAd: AdizNative?

        func requestInitAd(hiveAdKey: String?) {
                // ตั้งค่าขนาดแบนเนอร์
                var bannerSize: BannerSize = .normal

                if let adKey = hiveAdKey,
                        adKey.count > 0 {
                        // เริ่มต้น AdizNative Instance (ViewController, hiveAdKey, BannerSize, AdizListener)
                        self.nativeAd = AdizNative.initialize(self, hiveAdKey: adKey, size: bannerSize, adizListener: self)
                }
                else {
                        // เริ่มต้น Default AdizNative Instance (ViewController, BannerSize, AdizListener)
                        self.nativeAd = AdizNative.initialize(self, size: bannerSize, adizListener: self)
                }
        }

        func requestLoadAd() {
                // โหลด AdizNative
                self.nativeAd?.load()
        }

        func requestShowAd() {
                // ตั้งค่าประเภทตำแหน่ง
                var position: PositionType = .top

                // แสดง AdizNative
                self.nativeAd?.show(position)
        }

        func requestDestroyAd() {
                // ทำลาย AdizNative
                self.nativeAd?.destroy()
                self.nativeAd = nil
        }
}

extension NativeViewController: AdizListener {
        func onLoad() {
                // requestShowAd()
        }
        func onFail(_ error: AdizError) {
        }
        func onShow() {
        }
        func onClick() {
        }
        func onPaidEvent(_ revenueData: AdRevenueData) {
        }
}
#import <UIKit/UIKit.h>
#import <HiveAdiz/HiveAdiz-Swift.h>

@interface NativeViewController : UIViewController<AdizListener>
@property (nonatomic, strong) AdizNative* nativeAd;
@end

@implementation NativeViewController

- (void) requestInitAd: (NSString*)hiveAdKey {
        // ตั้งค่าขนาดแบนเนอร์
        BannerSize bannerSize = BannerSizeNormal;

        if (hiveAdKey != nil && ![hiveAdKey isEqualToString:@""]) {
                // เริ่มต้น AdizNative Instance (ViewController, hiveAdKey, BannerSize, AdizListener)
                self.nativeAd = [AdizNative initialize:self hiveAdKey:hiveAdKey size: bannerSize adizListener:self];
        }
        else {
                // เริ่มต้น Default AdizNative Instance (ViewController, BannerSize, AdizListener)
                self.nativeAd = [AdizNative initialize:self size:bannerSize adizListener:self];
        }
}

- (void) requestLoadAd {
        // โหลด AdizNative
        if (self.nativeAd != nil) {
                [self.nativeAd load];
        }
}

- (void) requestShowAd {
        // ตั้งค่าประเภทตำแหน่ง
        PositionType position = PositionTypeTop;

        // แสดง AdizNative
        if (self.nativeAd != nil) {
                [self.nativeAd show: position];
        }
}

- (void) requestDestroyAd {
        // ทำลาย AdizNative
        if (self.nativeAd != nil) {
                [self.nativeAd destroy];
                self.nativeAd = nil;
        }
}

#pragma mark - AdizListener

- (void) onLoad {
        // [self requestShowAd];
}

- (void) onFail:(AdizError *)error {
}

- (void) onShow {
}

- (void) onClick {
}

- (void) onPaidEvent:(AdRevenueData *)revenueData {
}

@end

โฆษณาที่ได้รับรางวัล (rewarded)

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

import UIKit
import HiveAdiz  

class RewardViewController: UIViewController {

        // สร้าง AdizRewarded Instance
        var rewardAd: AdizRewarded?

        func requestInitAd(hiveAdKey: String?) {
                if let adKey = hiveAdKey,
                        adKey.count > 0 {
                        // Initialize AdizRewarded Instance (ViewController, hiveAdKey, AdizListener)
                        self.rewardAd = AdizRewarded.initialize(self, hiveAdKey: adKey, adizListener: self)
                }
                else {
                        // Initialize Default AdizRewarded Instance (ViewController, AdizListener)
                        self.rewardAd = AdizRewarded.initialize(self, adizListener: self)
                }
        }

        func requestLoadAd() {
                // โหลด AdizRewarded
                self.rewardAd?.load()
        }

        func requestShowAd() {
                // แสดง AdizRewarded
                self.rewardAd?.show()
        }

        func requestDestroyAd() {
                // ทำลาย AdizRewarded
                self.rewardAd?.destroy()
                self.rewardAd = nil
        }
}

extension RewardViewController: AdizListener {
        func onLoad() {
                // requestShowAd()
        }
        func onFail(_ error: AdizError) {
        }
        func onShow() {
        }
        func onClick() {
        }
        func onPaidEvent(_ revenueData: AdRevenueData) {
        }
        func onClose() {
                // requestDestroyAd()
        }
        func onRewarded(_ rewardItem: RewardItem) {
        }
}
#import <UIKit/UIKit.h>
#import <HiveAdiz/HiveAdiz-Swift.h>

@interface RewardedViewController : UIViewController<AdizListener>
@property (nonatomic, strong) AdizRewarded* rewardedAd;
@end

@implementation RewardedViewController

- (void) requestInitAd: (NSString*)hiveAdKey {
        if (hiveAdKey != nil && ![hiveAdKey isEqualToString:@""]) {
                // เริ่มต้น AdizRewarded Instance (ViewController, hiveAdKey, AdizListener)
                self.rewardedAd = [AdizRewarded initialize:self hiveAdKey:hiveAdKey adizListener:self];
        }
        else {
                // เริ่มต้น Default AdizRewarded Instance (ViewController, AdizListener)
                self.rewardedAd = [AdizRewarded initialize:self adizListener:self];
        }
}

- (void) requestLoadAd {
        // โหลด AdizRewarded
        if (self.rewardedAd != nil) {
                [self.rewardedAd load];
        }
}

- (void) requestShowAd {
        // แสดง AdizRewarded
        if (self.rewardedAd != nil) {
                [self.rewardedAd show];
        }
}

- (void) requestDestroyAd {
        // ทำลาย AdizRewarded
        if (self.rewardedAd != nil) {
                [self.rewardedAd destroy];
                self.rewardedAd = nil;
        }
}

#pragma mark - AdizListener

- (void) onLoad {
        // [self requestShowAd];
}

- (void) onFail:(AdizError *)error {
}

- (void) onShow {
} - (void) onClick {
} - (void) onPaidEvent:(AdRevenueData *)revenueData {
}

- (void) onClose {
        // [self requestDestroyAd];
}

- (void) onRewarded:(RewardItem *)rewardItem {
}

@end

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

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

import UIKit
import HiveAdiz  

class RewardInterstitialViewController: UIViewController {

        // สร้างอินสแตนซ์ AdizRewardedInterstitial
        var rewardInterstitialAd: AdizRewardedInterstitial?

        func requestInitAd(hiveAdKey: String?) {
                if let adKey = hiveAdKey,
                        adKey.count > 0 {
                        // Initialize AdizRewardedInterstitial Instance (ViewController, hiveAdKey, AdizListener)
                        self.rewardInterstitialAd = AdizRewardedInterstitial.initialize(self, hiveAdKey: adKey, adizListener: self)
                }
                else {
                        // Initialize Default AdizRewardedInterstitial Instance (ViewController, AdizListener)
                        self.rewardInterstitialAd = AdizRewardedInterstitial.initialize(self, adizListener: self)
                }    }     func requestLoadAd() {
                // Load AdizRewardedInterstitial
                self.rewardInterstitialAd?.load()
        }     func requestShowAd() {
                // Show AdizRewardedInterstitial
                self.rewardInterstitialAd?.show()
        }     func requestDestroyAd() {
                // Destroy AdizRewardedInterstitial
                self.rewardInterstitialAd?.destroy()
                self.rewardInterstitialAd = nil
        }
}

extension RewardInterstitialViewController: AdizListener {
        func onLoad() {
                // requestShowAd()
        }    func onFail(_ error: AdizError) {
        }    func onShow() {
        }    func onClick() {
        }
        func onPaidEvent(_ revenueData: AdRevenueData) {
        }
        func onClose() {
                // requestDestroyAd()
        }
        func onRewarded(_ rewardItem: RewardItem) {
        }
}
#import <UIKit/UIKit.h>
#import <HiveAdiz/HiveAdiz-Swift.h>

@interface RewardedInterstitialViewController : UIViewController<AdizListener>
@property (nonatomic, strong) AdizRewardedInterstitial* rewardedInterstitialAd;
@end

@implementation RewardedInterstitialViewController

- (void) requestInitAd: (NSString*)hiveAdKey {
        if (hiveAdKey != nil && ![hiveAdKey isEqualToString:@""]) {
                // Initialize AdizRewardedInterstitial Instance (ViewController, hiveAdKey, AdizListener)
                self.rewardedInterstitialAd = [AdizRewardedInterstitial initialize:self hiveAdKey:hiveAdKey adizListener:self];
        }
        else {
                // Initialize Default AdizRewardedInterstitial Instance (ViewController, AdizListener)
                self.rewardedInterstitialAd = [AdizRewardedInterstitial initialize:self adizListener:self];
        }} - (void) requestLoadAd {
        // Load AdizRewardedInterstitial
        if (self.rewardedInterstitialAd != nil) {
                [self.rewardedInterstitialAd load];
        }} - (void) requestShowAd {
        // Show AdizRewardedInterstitial
        if (self.rewardedInterstitialAd != nil) {
                [self.rewardedInterstitialAd show];
        }} - (void) requestDestroyAd {
        // Destroy AdizRewardedInterstitial
        if (self.rewardedInterstitialAd != nil) {
                [self.rewardedInterstitialAd destroy];
                self.rewardedInterstitialAd = nil;
        }} #pragma mark - AdizListener

- (void) onLoad {
        // [self requestShowAd];
} - (void) onFail:(AdizError *)error {
} - (void) onShow {
} - (void) onClick {
} - (void) onPaidEvent:(AdRevenueData *)revenueData {
}

- (void) onClose {
        // [self requestDestroyAd];
}

- (void) onRewarded:(RewardItem *)rewardItem {
}

@end

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

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

import UIKit
import HiveAdiz  

class AppOpenViewController: UIViewController {

        // สร้าง AdizAppOpen Instance
        var appOpenAd: AdizAppOpen?

        func requestInitAd(hiveAdKey: String?) {
                if let adKey = hiveAdKey,
                        adKey.count > 0 {
                        // Initialize AdizAppOpen Instance (ViewController, hiveAdKey, AdizListener)
                        self.appOpenAd = AdizAppOpen.initialize(self, hiveAdKey: adKey, adizListener: self)
                }
                else {
                        // Initialize Default AdizAppOpen Instance (ViewController, AdizListener)
                        self.appOpenAd = AdizAppOpen.initialize(self, adizListener: self)
                }    }     func requestLoadAd() {
                // Load AdizAppOpen
                self.appOpenAd?.load()
        }     func requestShowAd() {
                print("[appOpenAd] appOpenAd don't request Show")
        }     func requestDestroyAd() {
                // Destroy AdizAppOpen
                self.appOpenAd?.destroy()
                self.appOpenAd = nil
        }
}

extension AppOpenViewController: AdizListener {
        func onLoad() {
        }    func onFail(_ error: AdizError) {
        }    func onShow() {
        }    func onClick() {
        }
        func onPaidEvent(_ revenueData: AdRevenueData) {
        }
        func onClose() {
                // requestDestroyAd()
        }
}
#import <UIKit/UIKit.h>
#import <HiveAdiz/HiveAdiz-Swift.h> 

@interface AppOpenViewController : UIViewController<AdizListener>
@property (nonatomic, strong) AdizAppOpen* appOpenAd;
@end

@implementation AppOpenViewController

- (void) requestInitAd: (NSString*)hiveAdKey {
        if (hiveAdKey != nil && ![hiveAdKey isEqualToString:@""]) {
                // เริ่มต้น AdizAppOpen Instance (ViewController, hiveAdKey, AdizListener)
                self.appOpenAd = [AdizAppOpen initialize:self hiveAdKey:hiveAdKey adizListener:self];
        }    else {
                // เริ่มต้น Default AdizAppOpen Instance (ViewController, AdizListener)
                self.appOpenAd = [AdizAppOpen initialize:self adizListener:self];
        }} - (void) requestLoadAd {
        // โหลด AdizAppOpen
        if (self.appOpenAd != nil) {
                [self.appOpenAd load];
        }} - (void) requestShowAd {
        NSLog(@"[appOpenAd] appOpenAd don't request Show");
}

- (void) requestDestroyAd {
        // ทำลาย AdizAppOpen
        if (self.appOpenAd != nil) {
                [self.appOpenAd destroy];
                self.appOpenAd = nil;
        }} #pragma mark - AdizListener

- (void) onLoad {
} - (void) onFail:(AdizError *)error {
} - (void) onShow {
} - (void) onClick {
} - (void) onPaidEvent:(AdRevenueData *)revenueData {
}

- (void) onClose {
        // [self requestDestroyAd];
}

@end