跳轉至

iOS

Adiz iOS

Adiz iOS 是 Hive 提供的 iOS 廣告模組,旨在簡化使用 AdMob 提供的廣告曝光功能。Adiz iOS 提供的廣告類型如下:

  • 插頁廣告
  • 橫幅廣告
  • 原生廣告
  • 獎勵廣告
  • 獎勵插頁廣告
  • 應用程式開啟廣告

要安裝和使用 Adiz iOS,請按照以下指南進行。

前置條件

配置Adiz iOS 開發環境

安裝

GADApplicationIdentifier 鍵添加到 Xcode 項目的 Info.plist 文件中,並將 AdMobId 值(格式為 ca-app-pub-XXXXX~YYYYY)作為此鍵的值添加。

GADApplicationIdentifier
ca-app-pub-XXXXX~YYYYY

此外,在 iOS 14 及以上版本中,请参考 更新您的 info.plist 指南,将 SKAdNetwork 列表添加到您的 Info.plist 文件中。   

之後,將以下內容添加到您項目的 CocoaPods 配置(Podfile)中。

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

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

target 'Unity-iPhone' do
end

use_frameworks!

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

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

運行 $pod install 以應用 CocoaPod 設定。

設定測試廣告

Adiz 允許您以兩種方式顯示測試廣告。

  1. 啟用測試模式:僅顯示由 AdMob 發佈的測試廣告。
  2. 註冊測試設備並顯示廣告:為測試目的顯示真實廣告。註冊設備以顯示測試廣告,以確保在測試期間不會發生無效流量。

啟用測試模式

在開發階段,啟用測試模式,以便對測試廣告的點擊不會對廣告商產生費用。當測試模式啟用時,僅顯示測試廣告。在測試模式中,您無需在 Hive 控制台中輸入 AdMob 廣告金鑰即可顯示測試廣告。對於商業發行,請禁用測試模式。

Note

如果在开发阶段的测试模式下过多点击广告,可能会被视为无效流量,您的 AdMob 帐户可能会被举报,从而阻止您展示广告。

import HiveAdiz

// 啟用測試模式。對於商業發行,請註釋掉下面的行。
Adiz.setTestMode(true)

// 啟用 Adiz 模組的日誌記錄。日誌記錄應僅在測試模式下使用。對於商業發行,請註釋掉以下行。
Adiz.setLogEnable(true)
#import <HiveAdiz/HiveAdiz-Swift.h>

// 啟用測試模式。對於商業發行,請註釋掉下面的行。
[Adiz setTestMode: true];

// 啟用 Adiz 模組的日誌記錄。日誌記錄應僅在測試模式下使用。對於商業發行,請註解掉以下行。
[Adiz setLogEnable: true];

設定測試設備以顯示廣告

您應該在以下情況下註冊測試設備以顯示測試廣告:

  • 當測試在 Hive 控制台中註冊的 AdMob 廣告金鑰是否正常運作時
  • 當您想確保 GDPR 同意彈出窗口在您撰寫 GDPR 訊息 後正常運作時
  • 當您需要運行 廣告檢查器 來分析和調試廣告請求時

在未注册测试设备的情况下测试真实广告可能会被视为无效流量,这可能导致您的AdMob帐户被封锁,并且无法再显示广告。当您注册测试设备时,在广告展示期间将显示“测试模式”或“测试广告”(针对原生广告)。测试设备在生产部署时应禁用。


橫幅廣告、插頁廣告或獎勵廣告


原生廣告


要註冊測試設備,首先要識別測試設備 ID。測試設備 ID(例如,B74F6468-1516-467C-99AD-CC5973C5DB52)可以使用以下兩種方法找到:

  1. 在调用 Adiz.Initialize() 后检查 Logcat 日志:
    要为此设备启用调试模式,请设置: UMPDebugSettings.testDeviceIdentifiers = @[B74F6468-1516-467C-99AD-CC5973C5DB52]
  2. 在调用 Adiz.Initialize() 后检查 Logcat 日志,然后调用 initialize()load(),无论广告类型如何:
    GADMobileAds.sharedInstance().requestConfiguration.testDeviceIdentifiers = [ "B74F6468-1516-467C-99AD-CC5973C5DB52" ]


在识别测试设备ID后,在现有的Adiz初始化代码中执行Adiz.initialize之前添加行Adiz.SetTestDevice(DEVICE_ID)。将DEVICE_ID替换为复制的测试设备ID。

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


使用廣告檢查器

廣告檢查器是一個應用內的覆蓋工具,允許對在測試設備上請求和顯示實際廣告的過程進行實時分析。它告訴您加載廣告所需的時間,如果顯示失敗,則提供失敗的原因。此外,您可以指定特定的廣告網絡,以檢查廣告是否正確顯示,如果有任何問題,您可以在代碼層面進行調試。所有這些過程都是通過廣告檢查器用戶界面進行的。它包含在 Google Mobile Ads SDK iOS 版本 7.68.0 及以上版本中,可以通過調用 AdizDeveloperTool.OpenAdInspector 來使用。

要使用廣告檢查器,必須滿足以下兩個條件:

  • 使用 Adiz.setTestDevice這裡 設置測試設備
  • 使用 Adiz.Initialize這裡 完成初始化
func openAdInspector(viewController: UIViewController) {
        AdizDeveloperTool.openAdInspector(viewController)
}
- (void)openAdInspector: (UIViewController *)viewController {
        [AdizDeveloperTool openAdInspector: viewController];
}

設定 Adiz appID

設定您在 Hive 控制台 AppCenter 中註冊的 Adiz AppID。如果未配置,將使用 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];

曝露用戶特定廣告

隨著在 iOS 14.5+ 中引入 ATT(應用程序追蹤透明度),隱私保護得到了加強。因此,只有在用戶同意在 ATT 同意彈出窗口中進行活動追蹤的情況下,才能曝露用戶特定廣告。為了通過曝露用戶特定廣告來最大化廣告收入,有必要創建 IDFA(廣告商標識符)消息。

按照AdMob 儀表板上的指南創建並發布您的 IDFA 消息。

 

在創建和發布IDFA消息後,設置用戶跟踪權限。按照以下步驟將鍵添加到Info.plist

  1. 在 Xcode 项目窗口的项目导航器中选择您的项目。
  2. 在 TARGETS 列表中选择您的应用程序。
  3. 点击 Info 标签。
  4. 在 Info 标签中点击自定义 iOS 目标属性部分。
  5. 在自定义 iOS 目标属性列表中右键点击。
  6. 点击添加行菜单。
  7. 在键字段中输入 NSUserTrackingUsageDescription,并添加在 本地化文件 > Base.Iproj 文件夹 > InfoPlist.strings 中指定的值。

 

接下來,根據本地化文件中的規定,撰寫請求應用程式用戶批准的消息(一般設置 > 請求許可設置)。如果您不輸入許可請求彈出消息,則在審核過程中,由於缺少有關用戶訪問許可的額外說明指南,應用程式可能會被拒絕。

 

一旦完成,當您初始化 Adiz時,ATT 同意彈出窗口將自動顯示。如果用戶在 ATT 同意彈出窗口上點擊“允許”,則 IDFA 將被激活,從而為用戶啟用個性化廣告。

如果您的遊戲針對歐洲和英國EEA英國),則必須顯示GDPR(一般數據保護條例)同意彈出窗口。只有當用戶的設備IP地址來自歐洲或英國EEA英國)時,才會顯示GDPR同意彈出窗口。 Adiz 支持GoogleUMP用戶 消息 平台)來顯示GDPR同意彈出窗口。

AdMob控制台中创建GDPR消息后,当您初始化Adiz时,GDPR弹出窗口将显示给来自欧洲和英国的用户。

警告

即使您面向的是歐洲和英國以外的地區,您仍必須在AdMob 控制台中創建GDPR 消息,以便Adiz 的初始化能夠正確執行。

創建 GDPR 訊息

訪問 Google AdMob 控制台以創建 GDPR 訊息。在創建 GDPR 訊息之前,請參考 GDPR 訊息創建指南

在創建GDPR消息後,GDPR同意彈出窗口將在Adiz的初始化期間自動顯示。

實施 GDPR 同意/撤回選項

GDPR 同意彈出窗口應允許用戶隨時修改他們的同意。例如,最初未同意 GDPR 的用戶如果希望接收個性化廣告,可能會想要同意,反之亦然。為了適應這些情況,開發人員必須實施功能,讓用戶可以再次同意或撤回他們之前的同意。要實施 GDPR 同意/撤回功能,請按照以下步驟操作:

  1. 在您的應用中實現一個按鈕 UI 以重新加載 GDPR 同意彈出窗口。
  2. 在實現 Adiz 的初始化 時,調用 isPrivacyOptionsRequired() 以顯示上面的按鈕 UI,供來自歐洲和英國的用戶使用,否則不顯示。如果來自歐洲和英國的用戶按下按鈕,則調用 showPrivacyOptionsForm 以重新加載 GDPR 同意彈出窗口,允許用戶隨時通過應用中的“管理選項”按鈕或類似功能修改他們的 GDPR 詳細信息的同意。下面提供的 showPrivacyOptionsForm 方法僅供說明,開發者可以根據需要以任何形式實現。
import HiveAdiz

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

        // HiveAdiz 初始化
        Adiz.initialize(targetViewController) { error, json in
                // ...
                // showPrivacyOptionsForm 按鈕啟用檢查
                targetViewController.showPrivacyFormButton.isEnabled = AdizConsentManager.isPrivacyOptionsRequired()
                // ...
        }
} 

func showPrivacyOptionsForm(_ targetViewController: UIViewController) {
        // 顯示GDPR表單
        if AdizConsentManager.isPrivacyOptionsRequired() {
    AdizConsentManager.showPrivacyOptionsForm(targetViewController) { error in
                        // 無需進行任何錯誤處理。
                }
        }
}
    #import <HiveAdiz/HiveAdiz-Swift.h>

    (void)initialize: (NSString *)appId {
   // ...
   // isPrivacyOptionsRequired 是默认的 false
   targetViewController.showPrivacyFormButton.enabled = [AdizConsentManager isPrivacyOptionsRequired];

   // HiveAdiz 初始化    
   [Adiz initialize: targetViewController handler:^(AdizError * error, NSDictionary<NSString *,id> * json) {
       // ...
       // showPrivacyOptionsForm 按钮启用检查
       targetViewController.showPrivacyFormButton.enabled = [AdizConsentManager isPrivacyOptionsRequired];
       // ...
   }];
    } 

    (void)showPrivacyOptionsForm: (UIViewController*) targetViewController {
   // 顯示GDPR表單
   if ([AdizConsentManager isPrivacyOptionsRequired]) {
    [AdizConsentManager showPrivacyOptionsForm: targetViewController handler:^(AdizError *error) {
           // 不需要進行任何錯誤處理。
       }];
   }
    }

設定 tag 針對 under age of consent

使用未滿同意年齡TFUA)標籤,您可以配置廣告請求,以將居住在歐洲經濟區(EEA)、英國和瑞士的用戶視為有限數據處理的對象。對於提供給兒童的應用程序,您可以使用AdizConsentManager.SetUserPrivacySettings設置用戶未滿同意年齡。雖然歐洲國家之間存在一些差異,但GDPR將需要父母同意的年齡定義為16歲以下。必須在執行Adiz.initialize之前配置同意年齡設置。

Warning

如果 GDPR 標籤針對未滿同意年齡的用戶 setTagForUnderAgeOfConsentCOPPA 標籤針對兒童導向處理 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 初始化
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 測試設備

只有當設備的 IP 地址來自歐洲或英國時,才會顯示 GDPR 同意彈出窗口。在開發過程中,您可以通過設置 GDPR 測試設備來強制顯示 GDPR 同意彈出窗口,而不管設備的 IP 地址如何,這是為了測試目的。請按照以下步驟設置 GDPR 測試設備。以下內容與 在測試設備上顯示廣告。 相同。

  1. 初始化 Adiz。此初始化的目的是检查测试设备ID,因此您无需提前创建GDPR同意消息。
  2. 在Logcat日志输出中找到设备ID。以下是一个示例消息: 要为此设备启用调试模式,请设置:UMPDebugSettings.testDeviceIdentifiers = @[B74F6468-1516-467C-99AD-CC5973C5DB52]

    獲取設備ID(例如:B74F6468-1516-467C-99AD-CC5973C5DB52)。

  3. 複製設備 ID。

  4. 在現有的 Adiz 初始化代碼中,在執行 Adiz.initialize 之前添加 Adiz.setTestDevice(DEVICE_ID)
  5. 創建 GDPR 同意消息 並重新初始化 Adiz,以確保 GDPR 同意彈出窗口正確顯示。
func initialize(_ appId: String) {
// ...
// 在 Adiz.initialize 之前設置 TestDevice。範例 @"B74F6468-1516-467C-99AD-CC5973C5DB52"
Adiz.setTestDevice("B74F6468-1516-467C-99AD-CC5973C5DB52")

// HiveAdiz 初始化
Adiz.initialize(targetViewController) { error, json in
    // ...
}
}
(void)initialize: (NSString *)appId {
// ...
// 在 Adiz.initialize 之前设置 TestDevice。示例 @"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),應用程式開發者可以通過設置 tagForChildDirectedTreatment (TFCD) 標籤來指定 Google 是否應在廣告請求中將內容視為兒童導向。如果您希望將內容視為兒童導向,則必須在執行 Adiz.initialize 之前調用 AdizConsentManager.SetUserPrivacySettings。在使用 Adiz 與 Hive SDK 時,兒童導向處理標籤會自動應用,因此不需要額外的設置。

func initialize(_ appId: String) {
        bool isTagForChildDirectedTreatment = false // Change to true for children

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

        AdizConsentManager.setUserPrivacySettings(privacySet.build())

        // HiveAdiz 初始化
        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 介面

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 适配器

添加 adiz 适配器

将依赖项添加到您的 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 時,您可以獲得顯示廣告所需的廣告密鑰。如果啟用了測試模式,您將收到一個測試密鑰。如果您使用的是 Hive SDK,請在調用 AuthV4.setup 後繼續進行 Adiz 初始化。

Note

如果您的游戏面向欧洲和英国(EEA & UK)地区,并且您没有使用 Hive SDK,则在继续进行 Adiz 初始化之前,您需要获得 GDPR 同意。有关获取 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
            }
        ]
    }

如果您在測試模式下初始化,即使您尚未在 Hive 控制台中註冊 AdMob 廣告密鑰,您仍會收到測試廣告密鑰的列表。如果您在商業模式下初始化,您將收到在 Hive 控制台中註冊的 AdMob 廣告密鑰的列表。

每種廣告格式都有一個廣告作為預設廣告(帶有 "is_default":true 的廣告)。第一個註冊的廣告成為該廣告格式的預設廣告。在為預設廣告創建廣告實例(initialize())時,您不需要輸入廣告鍵(hiveAdKey)。要更改預設廣告,您必須在 Hive 控制台中刪除現有的預設廣告並重新註冊廣告。

設定廣告回調監聽器

您可以透過在創建每個廣告實例時實現 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) 用戶在顯示獎勵廣告(rewardedrewarded interstitial)後獲得獎勵的時刻 X
import HiveAdiz

class TestAdizListener: AdizListener {
        func onLoad() {
                // 當廣告加載完成時調用。
                // 如果廣告加載成功,您需要在所需的時候調用廣告實例的 .show() 來顯示廣告。
                print("[\(delegateTypeName)] onLoad")
        }
        func onFail(_ error: AdizError) {
                // 如果廣告加載失敗或因其他原因顯示廣告失敗時調用。
                print("[\(delegateTypeName)] onFail: ")
                print("(\(error.getCode())) \(error.getMessage() ?? "")")
        }
        func onShow() {
                // 當廣告顯示時調用。
                print("[\(delegateTypeName)] onShow")
        }
        func onClick() {
                // 當廣告被點擊時調用。
                print("[\(delegateTypeName)] onClick")
        }
        func onPaidEvent(_ revenueData: AdRevenueData) {
                // 當廣告產生收益時調用。
                print("[\(delegateTypeName)] onPaidEvent: \(revenueData.getCurrency()) \(revenueData.getRevenue().description)")
                var revenue = revenueData.getRevenue() // 廣告曝光時的收益
                var currency = revenueData.getCurrency() // 廣告曝光時的收益貨幣代碼
        }
        func onClose() {
                // 當廣告關閉時調用。
                // 橫幅廣告、原生廣告沒有 onClose 回調。
                print("[\(delegateTypeName)] onClose")
        }
        func onRewarded(_ rewardItem: RewardItem) {
                // 當觀看廣告獲得獎勵時調用,適用於獎勵廣告和獎勵插播廣告。
                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 {
        // 如果广告加载失败或由于其他原因广告展示失败时调用。
        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 {
        // 当广告被点击时调用。
        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(@"金額: %ld 類型: %@", (long)[rewardItem getItemAmount], [rewardItem getItemType]);

        NSString* itemType = [rewardItem getItemType]; // 奖励物品类型
        NSInteger itemAmount = [rewardItem getItemAmount]; // 奖励物品数量
}

@end

錯誤代碼

當收到 onFail() 時,Adiz.InitializeAdizListener 的錯誤代碼和錯誤消息如下:

常見代碼

數字 案例 解釋
0 成功 成功

Adiz 錯誤代碼

編號 案例 說明
-1 InvalidParam 無效的參數
-2 NotSupported 不支援
-3 InProgress 處理中
-4 Network 網路錯誤
-5 NeedInitialize 需要初始化
-6 ResponseFail 回應失敗
-7 Timeout 網路逾時
-99 Unknown 未知錯誤

廣告平台錯誤代碼

編號 案例 解釋
-101 需要加載 廣告未加載
-102 需要重新加載 由於廣告顯示時間到期,需要重新加載
-103 庫存不足 調解響應成功,但由於庫存不足未填充廣告
-104 缺少應用ID 調解請求的應用ID錯誤
-105 內部網絡錯誤 調解網絡相關錯誤
-106 無效的單元ID 無效的單元ID
-107 調解無填充 調解適配器未能處理廣告請求
-108 已經加載 已經加載
-109 無法請求廣告 無法請求廣告
-201 GDPR同意錯誤 GDPR同意錯誤
-202 不需要隱私選項 無需顯示或無法顯示GDPR同意彈出窗口

廣告曝光與終止

要曝光和終止廣告,請按照以下步驟進行:

  1. 為您想要展示的每種類型的廣告從廣告類別創建廣告實例。如果您想要展示的廣告不是默認廣告,則需要輸入從初始化中獲得的廣告金鑰。如果您不輸入廣告金鑰(hiveAdKey),則會創建一個默認廣告實例。
  2. 加載(load())您想要展示的廣告。
  3. 展示(show())已加載的廣告。要重新展示廣告,您必須再次調用load(),然後跟隨show()
  4. 要終止廣告,請調用destroy()

插播廣告

插播廣告是全螢幕廣告,覆蓋遊戲的介面。

import UIKit
import HiveAdiz

class InitViewController: UIViewController {

        // 創建一個插頁式廣告實例。
        var interstitialAd: AdizInterstitial?

        func requestInitAd(hiveAdKey: String?) {
                if let adKey = hiveAdKey,
                        adKey.count > 0 {
                        // 初始化 AdizInterstitial 实例 (ViewController, hiveAdKey, AdizListener)
                        self.interstitialAd = AdizInterstitial.initialize(self, hiveAdKey: adKey, adizListener: self)
                }
                else {
                        // 初始化默认 AdizInterstitial 实例 (ViewController, AdizListener)
                        self.interstitialAd = AdizInterstitial.initialize(self, adizListener: self)
                }
        }

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

        func requestShowAd() {
                // Show 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 实例 (ViewController, hiveAdKey, AdizListener)
                // 创建一个插页广告实例。
                self.interstitialAd = [AdizInterstitial initialize:self hiveAdKey:hiveAdKey adizListener:self];
        }
        else {
                // 初始化默认的 AdizInterstitial 实例 (ViewController, AdizListener)
                self.interstitialAd = [AdizInterstitial initialize:self adizListener:self];
        }
}

- (void) requestLoadAd {
        // 加載 AdizInterstitial
        if (self.interstitialAd != nil) {
                [self.interstitialAd load];
        }
}

- (void) requestShowAd {
        // 顯示 AdizInterstitial
        if (self.interstitialAd != nil) {
                [self.interstitialAd show];
        }
}

- (void) requestDestroyAd {
        // 銷毀 AdizInterstitial
        if (self.interstitialAd != nil) {
                [self.interstitialAd destroy];
                self.interstitialAd = nil;
        }
}

#pragma mark - AdizListener

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

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

- (void) onShow {
}

- (void) onClick {
}

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

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

@end

橫幅廣告顯示特定大小的橫幅。橫幅廣告不會接收 onClose() 回調。因此,您必須從其他位置調用 destroy() 來終止廣告。 

BannerSize 遵循標準橫幅尺寸。

尺寸點(寬 x 高) 描述 支援設備 BannerSize 常數
320x50 橫幅 手機和平板電腦 BannerSize.normal
320x100 大橫幅 手機和平板電腦 BannerSize.medium
300x250 IAB 中型矩形 手機和平板電腦 BannerSize.large
468x60 IAB 全尺寸橫幅 平板電腦 BannerSize.full

PositionType 是上或下。默認為下。

對齊 描述 PositionType 常數
頂部對齊 指定基於安全區域的屏幕頂部對齊 PositionType.top
底部對齊(默認) 指定基於安全區域的屏幕底部對齊 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 实例 (ViewController, hiveAdKey, BannerSize, AdizListener)
                        self.bannerAd = AdizBanner.initialize(self, hiveAdKey: adKey, size: bannerSize, adizListener: self)
                }        else {
                        // 初始化默认 AdizBanner 实例 (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:@""]) {
                // 初始化 AdizBanner 实例 (ViewController, hiveAdKey, BannerSize, AdizListener)
                self.bannerAd = [AdizBanner initialize:self hiveAdKey:hiveAdKey size: bannerSize adizListener:self];
        }    else {
                // 初始化默认 AdizBanner 实例 (ViewController, BannerSize, AdizListener)
                self.bannerAd = [AdizBanner initialize:self size:bannerSize adizListener:self];
        }} - (void) requestLoadAd {
        // 加载 AdizBanner
        if (self.bannerAd != nil) {
                [self.bannerAd load];
        }} - (void) requestShowAd {
        // 设置位置类型
        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() 來終止廣告。 

目前,模板支持 smallmedium 尺寸。

尺寸点(宽 x 高) 模板 对齐方式 BannerSize 常量
355x91(纵横比调整) 小尺寸 上 / 下 BannerSize.normal
355x370(纵横比调整) 中尺寸 中心(固定) BannerSize.medium, BannerSize.large, BannerSize.full

對於small模板,PositionType可以是top或bottom,默認為bottom。

對齊 描述 位置類型常數
頂部對齊 指定在螢幕頂部的對齊 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 实例 (ViewController, hiveAdKey, BannerSize, AdizListener)
                        self.nativeAd = AdizNative.initialize(self, hiveAdKey: adKey, size: bannerSize, adizListener: self)
                }
                else {
                        // 初始化默认的 AdizNative 实例 (ViewController, BannerSize, AdizListener)
                        self.nativeAd = AdizNative.initialize(self, size: bannerSize, adizListener: self)
                }
        }

        func requestLoadAd() {
                // Load AdizNative
                self.nativeAd?.load()
        }

        func requestShowAd() {
                // 設定位置類型
                var position: PositionType = .top

                // 顯示 AdizNative
                self.nativeAd?.show(position)
        }

        func requestDestroyAd() {
                // Destroy 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 实例 (ViewController, hiveAdKey, BannerSize, AdizListener)
                self.nativeAd = [AdizNative initialize:self hiveAdKey:hiveAdKey size: bannerSize adizListener:self];
        }
        else {
                // 初始化默认 AdizNative 实例 (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 實例
        var rewardAd: AdizRewarded?

        func requestInitAd(hiveAdKey: String?) {
                if let adKey = hiveAdKey,
                        adKey.count > 0 {
                        // 初始化 AdizRewarded 實例 (ViewController, hiveAdKey, AdizListener)
                        self.rewardAd = AdizRewarded.initialize(self, hiveAdKey: adKey, adizListener: self)
                }
                else {
                        // 初始化默認 AdizRewarded 實例 (ViewController, AdizListener)
                        self.rewardAd = AdizRewarded.initialize(self, adizListener: self)
                }
        }

        func requestLoadAd() {
                // Load AdizRewarded
                self.rewardAd?.load()
        }

        func requestShowAd() {
                // Show AdizRewarded
                self.rewardAd?.show()
        }

        func requestDestroyAd() {
                // Destroy 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 实例 (ViewController, hiveAdKey, AdizListener)
                self.rewardedAd = [AdizRewarded initialize:self hiveAdKey:hiveAdKey adizListener:self];
        }
        else {
                // 初始化默认 AdizRewarded 实例 (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

獎勵插頁廣告(獎勵插頁)

獎勵插頁廣告允許用戶在觀看廣告一段時間後獲得獎勵。一旦獎勵發放,您將通過 onRewarded() 回調接收有關獎勵項目的信息。

import UIKit
import HiveAdiz  

class RewardInterstitialViewController: UIViewController {

        // 創建 AdizRewardedInterstitial 實例
        var rewardInterstitialAd: AdizRewardedInterstitial?

        func requestInitAd(hiveAdKey: String?) {
                if let adKey = hiveAdKey,
                        adKey.count > 0 {
                        // 初始化 AdizRewardedInterstitial 实例 (ViewController, hiveAdKey, AdizListener)
                        self.rewardInterstitialAd = AdizRewardedInterstitial.initialize(self, hiveAdKey: adKey, adizListener: self)
                }
                else {
                        // 初始化默认的 AdizRewardedInterstitial 实例 (ViewController, AdizListener)
                        self.rewardInterstitialAd = AdizRewardedInterstitial.initialize(self, adizListener: self)
                }    }     func requestLoadAd() {
                // 加载 AdizRewardedInterstitial
                self.rewardInterstitialAd?.load()
        }     func requestShowAd() {
                // 显示 AdizRewardedInterstitial
                self.rewardInterstitialAd?.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 实例 (ViewController, hiveAdKey, AdizListener)
                self.rewardedInterstitialAd = [AdizRewardedInterstitial initialize:self hiveAdKey:hiveAdKey adizListener:self];
        }
        else {
                // 初始化默认的 AdizRewardedInterstitial 实例 (ViewController, AdizListener)
                self.rewardedInterstitialAd = [AdizRewardedInterstitial initialize:self adizListener:self];
        }} - (void) requestLoadAd {
        // 加载 AdizRewardedInterstitial
        if (self.rewardedInterstitialAd != nil) {
                [self.rewardedInterstitialAd load];
        }} - (void) requestShowAd {
        // 显示 AdizRewardedInterstitial
        if (self.rewardedInterstitialAd != nil) {
                [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()) 廣告。如果在廣告加載後 3 小時內調用 show(),則廣告會在顯示之前自動重新加載。一旦廣告至少顯示過一次,之後將不會自動加載。

import UIKit
import HiveAdiz  

class AppOpenViewController: UIViewController {

        // 創建 AdizAppOpen 實例
        var appOpenAd: AdizAppOpen?

        func requestInitAd(hiveAdKey: String?) {
                if let adKey = hiveAdKey,
                        adKey.count > 0 {
                        // 初始化 AdizAppOpen 实例 (ViewController, hiveAdKey, AdizListener)
                        self.appOpenAd = AdizAppOpen.initialize(self, hiveAdKey: adKey, adizListener: self)
                }
                else {
                        // 初始化默认的 AdizAppOpen 实例 (ViewController, AdizListener)
                        self.appOpenAd = AdizAppOpen.initialize(self, adizListener: self)
                }    }     func requestLoadAd() {
                // 加载 AdizAppOpen
                self.appOpenAd?.load()
        }     func requestShowAd() {
                print("[appOpenAd] appOpenAd 不请求显示")
        }     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:@""]) {
                // 初始化 AdizAppOpen 实例 (ViewController, hiveAdKey, AdizListener)
                self.appOpenAd = [AdizAppOpen initialize:self hiveAdKey:hiveAdKey adizListener:self];
        }    else {
                // 初始化默认的 AdizAppOpen 实例 (ViewController, AdizListener)
                self.appOpenAd = [AdizAppOpen initialize:self adizListener:self];
        }} - (void) requestLoadAd {
        // 加载 AdizAppOpen
        if (self.appOpenAd != nil) {
                [self.appOpenAd load];
        }} - (void) requestShowAd {
        NSLog(@"[appOpenAd] appOpenAd 不请求显示");
}

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