Ios
Adiz iOS¶
Adiz iOS เป็นโมดูลโฆษณาสำหรับ iOS ที่จัดทำโดย Hive เพื่อทำให้การใช้ฟีเจอร์การแสดงโฆษณาที่มีให้โดย AdMob ง่ายขึ้น ประเภทของโฆษณาที่จัดทำโดย Adiz iOS มีดังนี้:
- โฆษณาแบบระหว่างหน้า
- โฆษณาแบบแบนเนอร์
- โฆษณาแบบเนทีฟ
- โฆษณาแบบให้รางวัล
- โฆษณาแบบระหว่างหน้าที่ให้รางวัล
- โฆษณาเปิดแอป
ในการติดตั้งและใช้ Adiz iOS โปรดดูคู่มือด้านล่างตามลำดับ
ข้อกำหนดเบื้องต้น¶
กำหนดค่า สภาพแวดล้อมการพัฒนา iOS ของ Adiz.
การติดตั้ง¶
เพิ่มคีย์ GADApplicationIdentifier ลงในไฟล์ Info.plist ของโปรเจกต์ Xcode และเพิ่มค่า AdMobId (รูปแบบ 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 ช่วยให้คุณสามารถแสดงโฆษณาทดสอบได้สองวิธี
- เปิดโหมดทดสอบ: แสดงโฆษณาทดสอบที่ออกโดย AdMob เท่านั้น.
- ลงทะเบียนอุปกรณ์ทดสอบและแสดงโฆษณา: แสดงโฆษณาจริงเพื่อวัตถุประสงค์ในการทดสอบ ลงทะเบียนอุปกรณ์เพื่อแสดงโฆษณาทดสอบเพื่อให้แน่ใจว่าไม่มีการเข้าชมที่ไม่ถูกต้องเกิดขึ้นระหว่างการทดสอบ.
เปิดโหมดทดสอบ¶
ในระยะพัฒนานั้น ให้เปิดโหมดทดสอบเพื่อให้การคลิกที่โฆษณาทดสอบไม่เกิดค่าใช้จ่ายกับผู้โฆษณา เมื่อเปิดโหมดทดสอบ จะมีเพียงโฆษณาทดสอบเท่านั้นที่แสดง ในโหมดทดสอบ คุณไม่จำเป็นต้องป้อนคีย์โฆษณา AdMob ใน Hive Console เพื่อแสดงโฆษณาทดสอบ ปิดโหมดทดสอบสำหรับการจัดจำหน่ายเชิงพาณิชย์.
Note
ถ้าคุณคลิกโฆษณามากเกินไปเมื่อไม่ได้อยู่ในโหมดทดสอบในระหว่างขั้นตอนการพัฒนา อาจถือว่าเป็นการเข้าชมที่ไม่ถูกต้องและบัญชี AdMob ของคุณอาจถูกแจ้งรายงาน ซึ่งจะทำให้คุณไม่สามารถแสดงโฆษณาได้
การตั้งค่าอุปกรณ์ทดสอบสำหรับการแสดงโฆษณา¶
คุณควรลงทะเบียนอุปกรณ์ทดสอบเพื่อแสดงโฆษณาทดสอบในสถานการณ์ต่อไปนี้:
- เมื่อต้องการทดสอบว่า AdMob ad key ที่ลงทะเบียนใน Hive Console ทำงานได้อย่างถูกต้อง
- เมื่อต้องการตรวจสอบว่า GDPR consent popup ทำงานอย่างถูกต้องหลังจากที่คุณเขียน GDPR message
- เมื่อต้องการเรียกใช้ Ad Inspector เพื่อวิเคราะห์และแก้ไขปัญหาคำขอโฆษณา
การทดสอบด้วยโฆษณาจริงโดยไม่ลงทะเบียนอุปกรณ์ทดสอบอาจถือเป็นการเข้าชมที่ไม่ถูกต้อง ซึ่งอาจทำให้บัญชี AdMob ของคุณถูกบล็อกและไม่สามารถแสดงโฆษณาได้อีกต่อไป เมื่อคุณลงทะเบียนอุปกรณ์ทดสอบ โหมดทดสอบหรือโฆษณาทดสอบ (สำหรับโฆษณาเนทีฟ) จะถูกแสดงระหว่างการแสดงโฆษณา อุปกรณ์ทดสอบควรถูกปิดใช้งานสำหรับการปรับใช้ในผลิตภัณฑ์
แบนเนอร์, อินเตอร์สติชัล, หรือโฆษณาแบบให้รางวัล 
ในการลงทะเบียนอุปกรณ์ทดสอบ ให้ระบุหมายเลขประจำตัวอุปกรณ์ทดสอบก่อน หมายเลขประจำตัวอุปกรณ์ทดสอบ (เช่น B74F6468-1516-467C-99AD-CC5973C5DB52) สามารถพบได้โดยใช้สองวิธีต่อไปนี้:
- ตรวจสอบบันทึก Logcat หลังจากเรียกใช้ Adiz.Initialize():
 เพื่อเปิดใช้งานโหมดดีบักสำหรับอุปกรณ์นี้ ให้ตั้งค่า: UMPDebugSettings.testDeviceIdentifiers = @[B74F6468-1516-467C-99AD-CC5973C5DB52]
- ตรวจสอบบันทึก Logcat หลังจากเรียกใช้ Adiz.Initialize()และจากนั้นเรียกใช้initialize()→load()โดยไม่คำนึงถึงประเภทโฆษณา:
 GADMobileAds.sharedInstance().requestConfiguration.testDeviceIdentifiers = [ "B74F6468-1516-467C-99AD-CC5973C5DB52" ]
หลังจากระบุรหัสอุปกรณ์ทดสอบแล้ว ให้เพิ่มบรรทัด Adiz.SetTestDevice(DEVICE_ID) ก่อนที่จะดำเนินการ Adiz.initialize ในโค้ดการเริ่มต้น Adiz ที่มีอยู่ เปลี่ยน DEVICE_ID เป็นรหัสอุปกรณ์ทดสอบที่คัดลอกมา
การใช้เครื่องมือการตรวจสอบโฆษณา¶
เครื่องมือการตรวจสอบโฆษณาคือเครื่องมือที่เป็นเลเยอร์ในแอปพลิเคชันที่ช่วยให้สามารถวิเคราะห์กระบวนการขอและแสดงโฆษณาจริงบนอุปกรณ์ทดสอบได้แบบเรียลไทม์ มันจะแจ้งให้คุณทราบถึงเวลาที่ใช้ในการโหลดโฆษณา และหากการแสดงผลล้มเหลว มันจะให้เหตุผลสำหรับความล้มเหลว นอกจากนี้คุณยังสามารถระบุเครือข่ายโฆษณาเฉพาะเพื่อเช็คว่าโฆษณาแสดงผลอย่างถูกต้องหรือไม่ และหากมีปัญหาใด ๆ คุณสามารถดีบักที่ระดับโค้ดได้ ทั้งหมดนี้ดำเนินการผ่าน UI ของเครื่องมือการตรวจสอบโฆษณา มันรวมอยู่ใน Google Mobile Ads SDK iOS เวอร์ชัน 7.68.0 ขึ้นไป และสามารถใช้งานได้โดยการเรียกใช้ AdizDeveloperTool.OpenAdInspector.
ในการใช้ Ad Inspector ต้องมีเงื่อนไขสองประการต่อไปนี้:
- ตั้งค่าอุปกรณ์ทดสอบด้วย Adiz.setTestDeviceที่นี่
- ทำการเริ่มต้นให้เสร็จสิ้นด้วย Adiz.Initializeที่นี่
การตั้งค่า appID ของ Adiz¶
ตั้งค่า Adiz AppID ที่คุณลงทะเบียนใน Hive Console AppCenter หากไม่ได้ตั้งค่านี้ มันจะใช้ Bundle ID
การตั้งค่า Hive Console server¶
ตั้งค่า Hive Console server ที่คุณต้องการใช้ ค่าเริ่มต้นคือ real แม้ว่าคุณจะใช้เซิร์ฟเวอร์เชิงพาณิชย์ โฆษณาทดสอบจะแสดงหากเปิดใช้งานโหมดทดสอบ
- Hive เซิร์ฟเวอร์คอนโซลทดสอบ: AdizZoneType.test
- Hive เซิร์ฟเวอร์คอนโซลแซนด์บ็อกซ์: AdizZoneType.sandbox
- Hive เซิร์ฟเวอร์คอนโซลเชิงพาณิชย์: AdizZoneType.real
การเปิดเผยโฆษณาที่เฉพาะเจาะจงสำหรับผู้ใช้¶
ด้วยการแนะนำ ATT (App Tracking Transparency) ใน iOS 14.5+ การปกป้องความเป็นส่วนตัวได้รับการเสริมสร้างขึ้น ดังนั้นโฆษณาที่เฉพาะเจาะจงสำหรับผู้ใช้จึงสามารถเปิดเผยได้เฉพาะเมื่อผู้ใช้ยินยอมให้ติดตามกิจกรรมในป๊อปอัปการยินยอม ATT เท่านั้น เพื่อเพิ่มรายได้จากโฆษณาโดยการเปิดเผยโฆษณาที่เฉพาะเจาะจงสำหรับผู้ใช้ จำเป็นต้องสร้างข้อความ IDFA (Identifier for Advertisers)
สร้างและเผยแพร่ข้อความ IDFA ของคุณตามคำแนะนำในแดชบอร์ด AdMob
หลังจากสร้างและเผยแพร่ข้อความ IDFA แล้ว ให้ตั้งค่าการอนุญาตติดตามผู้ใช้ ปฏิบัติตามขั้นตอนด้านล่างเพื่อเพิ่มคีย์ไปยัง Info.plist。
- เลือกโปรเจกต์ของคุณในตัวนำทางโปรเจกต์ของหน้าต่างโปรเจกต์ Xcode.
- ในรายการ TARGETS ให้เลือกแอปของคุณ.
- คลิกที่แท็บ Info.
- คลิกที่ส่วน Custom iOS Target Properties ในแท็บ Info.
- คลิกขวาในรายการ Custom iOS Target Properties.
- คลิกที่เมนู Add Row.
- ป้อน NSUserTrackingUsageDescription ในฟิลด์ Key และเพิ่มค่าที่ระบุใน ไฟล์ Localization > โฟลเดอร์ Base.Iproj > InfoPlist.strings.
ถัดไป เขียนข้อความขออนุญาตจากผู้ใช้แอปตามที่ระบุในไฟล์การแปล (การตั้งค่าทั่วไป > การตั้งค่าการขออนุญาต) หากคุณไม่ป้อนข้อความป๊อปอัปขออนุญาต แอปอาจถูกปฏิเสธระหว่างกระบวนการตรวจสอบเนื่องจากขาดคำแนะนำเพิ่มเติมเกี่ยวกับสิทธิ์การเข้าถึงของผู้ใช้
เมื่อเสร็จสิ้นแล้ว ป๊อปอัพการยินยอม ATT จะถูกแสดงโดยอัตโนมัติเมื่อคุณ เริ่มต้น Adiz หากผู้ใช้คลิก "อนุญาต" บนป๊อปอัพการยินยอม ATT IDFA จะถูกเปิดใช้งาน ทำให้สามารถแสดงโฆษณาที่ปรับให้เหมาะสมกับผู้ใช้ได้
การแสดงป๊อปอัพความยินยอม GDPR (ยุโรปและสหราชอาณาจักร)¶
หากเกมของคุณมีเป้าหมายที่ยุโรปและสหราชอาณาจักร (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 ให้ทำตามขั้นตอนเหล่านี้:
- สร้าง UI ปุ่มในแอปของคุณเพื่อโหลดหน้าต่างป๊อปอัปการยินยอม GDPR ใหม่
- เมื่อคุณดำเนินการ การเริ่มต้นของ 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 เนื้อหาต่อไปนี้เหมือนกับ การแสดงโฆษณาบนอุปกรณ์ทดสอบ.
- เริ่มต้น Adiz. วัตถุประสงค์ของการเริ่มต้นนี้คือการตรวจสอบ ID อุปกรณ์ทดสอบ ดังนั้นคุณไม่จำเป็นต้องสร้างข้อความยินยอม GDPR ล่วงหน้า
-  ค้นหา ID อุปกรณ์ในผลลัพธ์ล็อก Logcat นี่คือตัวอย่างข้อความ: To enable debug mode for this device, set: UMPDebugSettings.testDeviceIdentifiers = @[B74F6468-1516-467C-99AD-CC5973C5DB52]รับรหัสอุปกรณ์ (ตัวอย่าง: B74F6468-1516-467C-99AD-CC5973C5DB52).
-  คัดลอก ID อุปกรณ์ 
- เพิ่ม Adiz.setTestDevice(DEVICE_ID)ก่อนที่จะดำเนินการAdiz.initializeในโค้ดการเริ่มต้น Adiz ที่มีอยู่
- สร้างข้อความขอความยินยอม GDPR และเริ่มต้น Adiz ใหม่เพื่อให้แน่ใจว่าหน้าต่างป๊อปอัพขอความยินยอม GDPR ปรากฏขึ้นอย่างถูกต้อง
(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 | 
การแสดงโฆษณาและการยุติ¶
เพื่อเปิดเผยและยุติโฆษณา ให้ทำตามขั้นตอนเหล่านี้:
- สร้างอินสแตนซ์โฆษณาจากคลาสโฆษณาสำหรับแต่ละประเภทของโฆษณาที่คุณต้องการเปิดเผย หากโฆษณาที่คุณต้องการเปิดเผยไม่ใช่ โฆษณาเริ่มต้น คุณต้องป้อนคีย์โฆษณาที่ได้รับจาก การเริ่มต้น หากคุณไม่ป้อนคีย์โฆษณา (hiveAdKey) จะมีการสร้างอินสแตนซ์โฆษณาเริ่มต้น
- โหลด (load()) โฆษณาที่คุณต้องการเปิดเผย
- เปิดเผย (show()) โฆษณาที่โหลดแล้ว เพื่อเปิดเผยโฆษณาอีกครั้ง คุณต้องเรียกload()อีกครั้งตามด้วยshow()
- เพื่อยุติโฆษณา ให้เรียก 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
โฆษณาแบนเนอร์ (banner)¶
โฆษณาแบนเนอร์จะแสดงแบนเนอร์ขนาดเฉพาะ โฆษณาแบนเนอร์จะไม่รับการเรียกกลับ 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



