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

Ios

Adiz iOS

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

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

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

การเตรียมการล่วงหน้า

Adiz iOS 개발 환경을 구성합니다.

การติดตั้ง

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

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

 

เพิ่มเติม, ใน 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 'HiveAdiz', '2.1.0'
end
target 'Unity-iPhone' do
end
use_frameworks!

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

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

 

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

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

Adiz สามารถแสดงโฆษณาทดสอบได้ 2 วิธี

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

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

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

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

Note

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

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

import HiveAdiz

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

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

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

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

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

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

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



<

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

  • ลงทะเบียนอุปกรณ์ทดสอบในคอนโซลแล้วตั้งค่าเป็น การใช้ ID หน่วยโฆษณา (แนะนำ):
    โปรดดูเนื้อหาใน การจัดการอุปกรณ์ทดสอบ ของคู่มือคอนโซล

  • ใช้เมธอด setTestDevice() ของคลาส Adiz:
    โปรดดู โค้ดตัวอย่าง ด้านล่างนี้.

Note

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

 

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

 

โฆษณาเนทีฟ

 

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

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

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

 

ตรวจสอบ ID อุปกรณ์ทดสอบ จากนั้นเพิ่มบรรทัด Adiz.SetTestDevice(DEVICE_ID) ก่อนเรียกใช้ Adiz.initialize ในรหัสการรีเซ็ต Adiz ที่มีอยู่ Hive ใส่ ID อุปกรณ์ทดสอบที่คัดลอกมาใน 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

 

ต้องตั้งค่า การแสดงโฆษณา บนอุปกรณ์ทดสอบเพื่อใช้เครื่องมือการตรวจสอบโฆษณา

func openAdInspector(viewController: UIViewController) {
        AdizDeveloperTool.openAdInspector(viewController)
}
- (void)openAdInspector: (UIViewController *)viewController {
        [AdizDeveloperTool openAdInspector: viewController];
}

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

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

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

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

ตั้งค่าเซิร์ฟเวอร์คอนโซล Hive ที่จะใช้ ค่าเริ่มต้นคือ 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)

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

เขียนและโพสต์ข้อความ IDFA จากนั้นตั้งค่าการเข้าถึงการติดตามผู้ใช้ ตามขั้นตอนด้านล่างเพื่อเพิ่มคีย์ใน Info.plist

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

 

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

 

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

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

Warning

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

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

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

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

Warning

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

การดำเนินการยินยอม/ถอนการยินยอม GDPR

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

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

func initialize(_ appId: String) {
        // ...
        // isPrivacyOptionsRequired เป็นค่าเริ่มต้น false
        targetViewController.showPrivacyFormButton.isEnabled = AdizConsentManager.isPrivacyOptionsRequired() 

        // HiveAdiz initialize
        Adiz.initialize(targetViewController) { error, json in
                // ...
                // showPrivacyOptionsForm button enable check
                targetViewController.showPrivacyFormButton.isEnabled = AdizConsentManager.isPrivacyOptionsRequired()
                // ...
        }
} 

func showPrivacyOptionsForm(_ targetViewController: UIViewController) {
        // Show GDPR Form
        if AdizConsentManager.isPrivacyOptionsRequired() {
        AdizConsentManager.showPrivacyOptionsForm(targetViewController) { error in
                        // No need to do any error handling.
                }
        }
}
        #import <HiveAdiz/HiveAdiz-Swift.h>

        - (void)initialize: (NSString *)appId {
                // ...
                // isPrivacyOptionsRequired is default false
                targetViewController.showPrivacyFormButton.enabled = [AdizGDPRManager isPrivacyOptionsRequired];

                // HiveAdiz initialize   
                [Adiz initialize: targetViewController handler:^(AdizError * error, NSDictionary<NSString *,id> * json) {
                        // ...
                        // showPrivacyOptionsForm button enable check
                        targetViewController.showPrivacyFormButton.enabled = [AdizConsentManager isPrivacyOptionsRequired];
                        // ...
                }];
        }

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

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

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

Warning

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

Note

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

 

func initialize(_ appId: String) {
    bool isTagForUnderAgeOfConsent = false // เปลี่ยนเป็น true หากเป็นเด็ก


    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; // หากเป็นเด็กให้เปลี่ยนเป็น true 

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

    [AdizConsentManager setUserPrivacySettings: [privacySet build]];

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

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

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

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

    ในการเปิดใช้งานโหมดดีบักสำหรับอุปกรณ์นี้ ให้ตั้งค่า: UMPDebugSettings.testDeviceIdentifiers = @[B74F6468-1516-467C-99AD-CC5973C5DB52]

    ตรวจสอบ ID อุปกรณ์ในข้อความ (ตัวอย่าง: B74F6468-1516-467C-99AD-CC5973C5DB52)

  3. คัดลอก ID อุปกรณ์
  4. เพิ่ม Adiz.setTestDevice(DEVICE_ID) ก่อนที่จะเรียกใช้ Adiz.initialize ในโค้ดเริ่มต้น Adiz ที่มีอยู่
  5. เขียนข้อความขอความยินยอม GDPR และเริ่มต้น Adiz ใหม่เพื่อตรวจสอบว่าป๊อปอัพขอความยินยอม GDPR แสดงขึ้นอย่างถูกต้อง
```swift

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
            // ...
    }
}

```
```obj

- (void)initialize: (NSString *)appId {
    // ...
    // Set TestDevice before Adiz.initialize. example @"B74F6468-1516-467C-99AD-CC5973C5DB52"
    [Adiz setTestDevice: @"B74F6468-1516-467C-99AD-CC5973C5DB52"];

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

```

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

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

```swift
func initialize(_ appId: String) {
        bool isTagForChildDirectedTreatment = false // เปลี่ยนเป็น true หากเป็นเด็ก

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

        AdizConsentManager.setUserPrivacySettings(privacySet.build())

        // HiveAdiz เริ่มต้น
        Adiz.initialize(targetViewController) { error, json in
                // ...
        }
}
```
```obj
- (void)initialize: (NSString *)appId {
        bool isTagForChildDirectedTreatment = false; // เปลี่ยนเป็น true หากเป็นเด็ก 

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

        [AdizConsentManager setUserPrivacySettings: [privacySet build]];

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

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

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

เพิ่มการประสานงาน AdMob

ดำเนินการเชื่อมต่อแหล่งโฆษณาในคอนโซล 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 อแดปเตอร์

เพิ่มการพึ่งพาใน CocoaPods Podfile


# ...

$HIVE_ADIZ_VERSION = '2.1.0'

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 อนุกรมถูกต้อง ให้เรียกใช้แอปและตรวจสอบรายการการกำหนดค่าในหน้าจอ การตรวจสอบโฆษณา

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

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

Warning

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

import HiveAdiz

// กำลังเริ่มต้น Hive 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>

// กำลังเริ่มต้น Hive 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,
                "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 ในคอนโซล เมื่อเริ่มต้นในโหมดเชิงพาณิชย์ คุณจะได้รับรายการคีย์โฆษณา AdMob ที่ลงทะเบียนในคอนโซล

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

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

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

ชื่อ คำอธิบาย การใช้งานที่จำเป็น
onLoad() โหลดโฆษณาสำเร็จ O
onFail(error: AdizError) ความล้มเหลว(error.getCode()และ error.getMessage()สามารถทราบเหตุผลของความล้มเหลว) O
onShow() ความสำเร็จในการแสดงโฆษณา O
onClick() คลิกโฆษณา O
onPaidEvent(_ revenueData: AdRevenueData) จุดเวลาที่ได้รับ paid event หลังจากการแสดงโฆษณา โดยข้อมูลรายได้จากโฆษณาจะถูกส่งมอบ 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() // ประเภทของรางวัล
                var itemAmount = rewardItem.getItemAmount() // จำนวนของรางวัล    }}
#import <HiveAdiz/HiveAdiz-Swift.h>

@interface TestAdizListener : NSObject<AdizListener>
@end

@implementation TestAdizListener

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

- (void) onFail:(AdizError *)error {
        // ถูกเรียกเมื่อการโหลดโฆษณาล้มเหลวหรือการแสดงโฆษณาล้มเหลวด้วยเหตุผลอื่น
        NSLog(@"[TestAdizListener] onFail: ");
        NSLog(@"errorCode: %ld, errorMessage: %@", (long)[error getCode], [error getMessage]);
}

- (void) onShow {
        // แสดงเมื่อโฆษณาถูกแสดง.
        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]; // ประเภทของรางวัล
        NSInteger itemAmount = [rewardItem getItemAmount]; // จำนวนประเภทของรางวัล
}

@end

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

เมื่อได้รับ onFail() จาก 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 Unit Id ไม่ถูกต้อง
-107 MediationNoFill ตัวปรับการจัดการไม่สามารถจัดการคำขอโฆษณาได้
-108 AlreadyLoaded อยู่ในสถานะที่โหลดแล้ว
-109 CannotRequestAds ไม่สามารถขอโฆษณาได้
-201 GdprConsentError ข้อผิดพลาดการยินยอม GDPR
-202 IsNotPrivacyOptionsRequired ไม่สามารถแสดงป๊อปอัปการยินยอม GDPR หรืออยู่ในสถานะที่ไม่ต้องแสดง

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

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

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

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

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

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 requestInitAdWithPlacementId(placementId: String?) {
                if let placementId = placementId,
                        placementId.count > 0 {
                        // Initialize AdizInterstitial Instance (ViewController, placementId, AdizListener)
                        self.interstitialAd = AdizInterstitial.initializeWithPlacementId(self, placementId: placementId, adizListener: self)
                }
                else {
                        // Initialize Default AdizInterstitial Instance (ViewController, AdizListener)
                        self.interstitialAd = AdizInterstitial.initialize(self, adizListener: self)
                }
        }

        func requestLoadAd() {
                // Load AdizInterstitial
                if let ad = self.interstitialAd,
                    ad.isInitialized() {
                        ad.load()
                        }
        }

        func requestShowAd() {
                // แสดง AdizInterstitial
                if let ad = self.interstitialAd,
                    ad.isLoaded() {
                        ad.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 {
                // เริ่มต้น Default AdizInterstitial Instance (ViewController, AdizListener)
                self.interstitialAd = [AdizInterstitial initialize:self adizListener:self];
        }
}

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

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

- (void) requestShowAd {
        // แสดง AdizInterstitial
        if (self.interstitialAd != nil && [self.interstitialAd isLoaded]) {
                [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() callback ดังนั้นคุณต้องเรียกใช้ destroy() จากตำแหน่งอื่นเพื่อสิ้นสุดโฆษณา

 

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

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

 

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

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

class BannerViewController: UIViewController {

        // สร้าง AdizBanner Instance
        // สร้างตัวอย่างโฆษณาแบนเนอร์
        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 requestInitAdWithPlacementId(placementId: String?) {        // ตั้งค่าขนาดแบนเนอร์
                var bannerSize: BannerSize = .normal

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

        func requestLoadAd() {
                // โหลด AdizBanner
                if let ad = self.bannerAd,
                    ad.isInitialized() {
                        ad.load()
                        }
        }     

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

                // แสดง AdizBanner
                if let ad = self.bannerAd,
                    ad.isLoaded() {
                        ad.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) requestInitAdWithPlacementId: (NSString*)placementId {
        // ตั้งค่าขนาดแบนเนอร์
        BannerSize bannerSize = BannerSizeNormal;

        if (placementId != nil && ![placementId isEqualToString:@""]) {
                // Initialize AdizBanner Instance (ViewController, placementId, BannerSize, AdizListener)
                self.bannerAd = [AdizBanner initializeWithPlacementId:self placementId:placementId size: bannerSize adizListener:self];
        }    else {
                // Initialize Default AdizBanner Instance (ViewController, BannerSize, AdizListener)
                self.bannerAd = [AdizBanner initialize:self size:bannerSize adizListener:self];
        }
} 

- (void) requestLoadAd {
        // โหลด AdizBanner
        if (self.bannerAd != nil && [self.bannerAd isInitialized]) {
                [self.bannerAd load];
        }
} 

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

        // แสดง AdizBanner
        if (self.bannerAd != nil && [self.bannerAd isLoaded]) {
                [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

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

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

 

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

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

 

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

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

 

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

import UIKit
import HiveAdiz

class NativeViewController: UIViewController {

        // สร้างอินสแตนซ์ AdizNative
        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 requestInitAdWithPlacementId(placementId: String?) {
                // ตั้งค่าขนาดแบนเนอร์
                var bannerSize: BannerSize = .normal

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

        func requestLoadAd() {
                // Load AdizNative
                if let ad = self.nativeAd,
                    ad.isInitialized() {
                        ad.load()
                }
        }

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

                // แสดง AdizNative
                if let ad = self.nativeAd,
                    ad.isLoaded() {
                        ad.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) requestInitAdWithPlacementId: (NSString*)placementId {
        // ตั้งค่าขนาดแบนเนอร์
        BannerSize bannerSize = BannerSizeNormal;

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

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

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

        // แสดง AdizNative
        if (self.nativeAd != nil && [self.nativeAd isLoaded]) {
                [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 requestInitAdWithPlacementId(placementId: String?) {
                if let placementId = placementId,
                        placementId.count > 0 {
                        // Initialize AdizRewarded Instance (ViewController, placementId, AdizListener)
                        self.rewardAd = AdizRewarded.initializeWithPlacementId(self, placementId: placementId, adizListener: self)
                }
                else {
                        // Initialize Default AdizRewarded Instance (ViewController, AdizListener)
                        self.rewardAd = AdizRewarded.initialize(self, adizListener: self)
                }
        }

        func requestLoadAd() {
                // โหลด AdizRewarded
                if let ad = self.rewardAd,
                    ad.isInitialized() {
                        ad.load()
                }
        }

        func requestShowAd() {
                // แสดง AdizRewarded
                if let ad = self.rewardAd,
                    ad.isLoaded() {
                        ad.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:@""]) {
                // Initialize AdizRewarded Instance (ViewController, hiveAdKey, AdizListener)
                self.rewardedAd = [AdizRewarded initialize:self hiveAdKey:hiveAdKey adizListener:self];
        }
        else {
                // Initialize Default AdizRewarded Instance (ViewController, AdizListener)
                self.rewardedAd = [AdizRewarded initialize:self adizListener:self];
        }
}

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

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

- (void) requestShowAd {
        // แสดง AdizRewarded
        if (self.rewardedAd != nil && [self.rewardedAd isLoaded]) {
                [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 {
                        // เริ่มต้น AdizRewardedInterstitial Instance (ViewController, hiveAdKey, AdizListener)
                        self.rewardInterstitialAd = AdizRewardedInterstitial.initialize(self, hiveAdKey: adKey, adizListener: self)
                }
                else {
                        // เริ่มต้น Default AdizRewardedInterstitial Instance (ViewController, AdizListener)
                        self.rewardInterstitialAd = AdizRewardedInterstitial.initialize(self, adizListener: self)
                }    
        }   

        func requestInitAdWithPlacementId(placementId: String?) {
                if let placementId = placementId,
                        placementId.count > 0 {
                        // Initialize AdizRewardedInterstitial Instance (ViewController, placementId, AdizListener)
                        self.rewardInterstitialAd = AdizRewardedInterstitial.initializeWithPlacementId(self, placementId: placementId, adizListener: self)
                }
                else {
                        // Initialize Default AdizRewardedInterstitial Instance (ViewController, AdizListener)
                        self.rewardInterstitialAd = AdizRewardedInterstitial.initialize(self, adizListener: self)
                }    
        }   

        func requestLoadAd() {
                // โหลด AdizRewardedInterstitial
                if let ad = self.rewardInterstitialAd,
                    ad.isInitialized() {
                        ad.load()
                }
        }     

        func requestShowAd() {
                // แสดง AdizRewardedInterstitial
                if let ad = self.rewardInterstitialAd,
                    ad.isLoaded() {
                        ad.show()
                }
        }     

        func requestDestroyAd() {
                // ทำลาย 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:@""]) {
                // เริ่มต้น AdizRewardedInterstitial Instance (ViewController, hiveAdKey, AdizListener)
                self.rewardedInterstitialAd = [AdizRewardedInterstitial initialize:self hiveAdKey:hiveAdKey adizListener:self];
        }
        else {
                // เริ่มต้น Default AdizRewardedInterstitial Instance (ViewController, AdizListener)
                self.rewardedInterstitialAd = [AdizRewardedInterstitial initialize:self adizListener:self];
        }
} 

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

- (void) requestLoadAd {
        // โหลด AdizRewardedInterstitial
        if (self.rewardedInterstitialAd != nil && [self.rewardedInterstitialAd isInitialized]) {
                [self.rewardedInterstitialAd load];
        }
}

- (void) requestShowAd {
        // แสดง AdizRewardedInterstitial
        if (self.rewardedInterstitialAd != nil && [self.rewardedInterstitialAd isLoaded]) {
                [self.rewardedInterstitialAd show];
        }
} 

- (void) requestDestroyAd {
        // ทำลาย 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 {
                        // เริ่มต้น AdizAppOpen Instance (ViewController, hiveAdKey, AdizListener)
                        self.appOpenAd = AdizAppOpen.initialize(self, hiveAdKey: adKey, adizListener: self)
                }
                else {
                        // เริ่มต้น Default AdizAppOpen Instance (ViewController, AdizListener)
                        self.appOpenAd = AdizAppOpen.initialize(self, adizListener: self)
                }    
        }     

        func requestInitAdWithPlacementId(placementId: String?) {
                if let placementId = placementId,
                        placementId.count > 0 {
                        // Initialize AdizAppOpen Instance (ViewController, placementId, AdizListener)
                        self.appOpenAd = AdizAppOpen.initializeWithPlacementId(self, placementId: placementId, adizListener: self)
                }
                else {
                        // Initialize Default AdizAppOpen Instance (ViewController, AdizListener)
                        self.appOpenAd = AdizAppOpen.initialize(self, adizListener: self)
                }    
        }   

        func requestLoadAd() {
                // โหลด AdizAppOpen
                if let ad = self.appOpenAd,
                    ad.isInitialized() {
                        ad.load()
                }
        }     

        func requestShowAd() {
                print("[appOpenAd] appOpenAd don't request Show")
        }     

        func requestDestroyAd() {
                // ทำลาย 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:@""]) {
                // Initialize AdizAppOpen Instance (ViewController, hiveAdKey, AdizListener)
                self.appOpenAd = [AdizAppOpen initialize:self hiveAdKey:hiveAdKey adizListener:self];
        }
        else {
                // Initialize Default AdizAppOpen Instance (ViewController, AdizListener)
                self.appOpenAd = [AdizAppOpen initialize:self adizListener:self];
        }
} 

- (void) requestInitAdWithPlacementId: (NSString*)placementId {
        if (placementId != nil && ![placementId isEqualToString:@""]) {
                // Initialize AdizAppOpen Instance (ViewController, placementId, AdizListener)
                self.appOpenAd = [AdizAppOpen initializeWithPlacementId:self placementId:placementId adizListener:self];
        }
        else {
                // Initialize Default AdizAppOpen Instance (ViewController, AdizListener)
                self.appOpenAd = [AdizAppOpen initialize:self adizListener:self];
        }
} 

- (void) requestLoadAd {
        // โหลด AdizAppOpen
        if (self.appOpenAd != nil && [self.appOpenAd isInitialized]) {
                [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