コンテンツにスキップ

iOS

Adiz iOS

Adiz iOSは、AdMobが提供する広告露出機能をより簡単に利用できるように、Hiveプラットフォーム上で提供されるiOS用の広告モジュールです。Adiz iOSが提供する広告の種類は以下の通りです。

  • インタースティシャル広告
  • バナー広告
  • ネイティブ広告
  • 報酬型広告
  • 報酬型インタースティシャル広告
  • アプリオープン広告

Adiz iOSをインストールして使用するには、以下のガイドを順番に参照してください。

準備

Adiz iOS 開発環境を設定します。

インストール

GADApplicationIdentifierキーをXcodeプロジェクトのInfo.plistファイルに追加し、AdMobId値(形式はca-app-pub-XXXXX~YYYYY)をキーの値として入力します。

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

 

さらに、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 'HiveAdiz', '3.0.0'
end
target 'Unity-iPhone' do
end
use_frameworks!

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

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

 

$pod installを使ってCocoaPodの設定を適用します。

テスト広告設定

Adizはテスト広告を2つの方法で表示できます。

  1. テストモードを有効にする: AdMobによって発行されたテスト広告のみが表示されます
  2. テストデバイスを登録した後に広告を表示する: テスト用に実際の広告を表示し、無効なトラフィックが発生しないようにし、テスト広告を表示するデバイスを登録して進めます

テストモードを有効にする

開発段階では、テストモードを有効にして、テスト広告をクリックしても広告主に料金が発生しないようにします。テストモードが有効になると、テスト広告のみが表示されます。テストモードでは、コンソールにAdMob広告キーが入力されていなくてもテスト広告が表示されます。商業配信中はテストモードを無効にしてください。

テストモードをアクティブにする方法は2つあります。
<

  • Hiveコンソールでテストデバイスを登録した後、デモ広告に設定してください(推奨):
    コンソールガイドのTest Device Managementセクションを参照してください。
  • AdizクラスのsetTestMode()メソッドを使用してください:
    以下のサンプルコードを参照してください。
Note

テストモードでない開発段階では、広告への過剰なクリックは無効なトラフィックと見なされる可能性があり、あなたのAdMobアカウントが報告され、広告が表示されなくなることがあります。

Adiz.setTestMode() メソッドの使用

import HiveAdiz

// テストモードを有効にします。プロダクション展開のためには以下の行をコメントアウトしてください。
Adiz.setTestMode(true)

// Adizモジュールのログ記録を有効にします。ログ記録はテストモードでのみ使用するべきです。以下の行は本番環境でのデプロイのためにコメントアウトしてください。
Adiz.setLogEnable(true)
#import <HiveAdiz/HiveAdiz-Swift.h> 

// テストモードを有効にします。プロダクションデプロイメントのために以下の行をコメントアウトしてください。
[Adiz setTestMode: true];

// Adizモジュールのログ記録を有効にします。ログ記録はテストモードでのみ使用するべきです。以下の行は本番環境でのデプロイのためにコメントアウトしてください。
[Adiz setLogEnable: true];

テストデバイスの広告露出

以下の状況では、テスト広告を表示するためにテストデバイスを登録する必要があります。

  • コンソールに登録されたAdMob広告キーが正しく機能しているかテストする
  • GDPRメッセージを書き、GDPR同意ポップアップが正しく機能するか確認する
  • 広告インスペクターを実行して広告リクエストを分析し、デバッグする



<

テストデバイスに広告を表示する方法は2つあります。
<

  • テストデバイスをHiveコンソールに登録した後、広告ユニットIDを使用に設定してください(推奨):
    コンソールガイドのテストデバイスの管理の内容を参照してください。

  • AdizクラスのsetTestDevice()メソッドを使用してください:
    以下のサンプルコードを参照してください。

Note

テストデバイスを登録せずに実際の広告を露出するテストを行うと、無効なトラフィックと見なされる可能性があり、あなたのAdMobアカウントがブロックされ、さらなる広告露出が妨げられることがあります。テストデバイスを登録すると、広告露出中に「テストモード」または「テスト広告」(ネイティブ広告)が表示されます。商業配信中はテストデバイスを無効にする必要があります。

 

バナー、フルスクリーン広告、または報酬広告

 

ネイティブ広告

 

Adiz.setTestDevice() メソッドの使用

テストデバイスを登録するには、まずテストデバイスIDを確認する必要があります。テストデバイスID(例: B74F6468-1516-467C-99AD-CC5973C5DB52)は、以下の2つの方法で確認できます。

  1. Adiz.Initialize() を呼び出し、Logcat ログを確認します:
    このデバイスのデバッグモードを有効にするには、次のように設定します: UMPDebugSettings.testDeviceIdentifiers = @[B74F6468-1516-467C-99AD-CC5973C5DB52]
    
  2. Adiz.Initialize()を呼び出した後、広告の種類に関係なく、initialize()load()を呼び出した後にLogcatログを確認してください:
    GADMobileAds.sharedInstance().requestConfiguration.testDeviceIdentifiers = [ "B74F6468-1516-467C-99AD-CC5973C5DB52" ]
    

 

テストデバイスIDを確認した後、既存の Hive Adiz初期化コード内で Adiz.SetTestDevice(DEVICE_ID) の行を Adiz.initialize を実行する前に追加します。コピーしたテストデバイスIDを DEVICE_ID に入力してください。

 

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


広告インスペクターの使用

広告インスペクターは、テストデバイス上で実際の広告をリクエストして表示するプロセスをリアルタイムで分析するアプリ内オーバーレイツールです。広告の読み込みにかかる時間を通知し、表示に失敗した理由を提供します。また、特定の広告ネットワークを指定して、広告が正しく表示されているかどうかを確認することができ、問題がある場合はコードレベルでデバッグできます。これらすべては、広告インスペクターUIと連携して行われます。これは、iOS用のGoogle Mobile Ads SDKバージョン7.68.0以降に含まれており、AdizDeveloperTool.OpenAdInspectorを呼び出すことで使用できます。

 

広告インスペクターを使用するには、テストデバイスでの広告露出を設定する必要があります。

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

Adiz AppID設定

HiveコンソールAppCenterで登録したAdiz AppIDを設定します。設定されていない場合は、バンドル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(広告主の識別子)メッセージを書く必要があります。

以下に示すように、Google AdMobダッシュボードでIDFAメッセージを書いて公開してください。

IDFAメッセージを書く際は、以下のガイドを参照してください。

投稿されたメッセージの例は次のとおりです。

IDFAメッセージを書いて投稿した後、ユーザートラッキングアクセス権限を設定します。以下の手順に従って、Info.plistにキーを追加してください。

  1. Xcodeプロジェクトウィンドウのプロジェクトナビゲーターでプロジェクトを選択します。
  2. TARGETSリストからアプリを選択します。
  3. Infoタブをクリックします。
  4. InfoタブでCustom iOS Target Properties項目をクリックします。
  5. Custom iOS Target Propertiesリストで右クリックします。
  6. Add Rowメニューをクリックします。
  7. KeyフィールドにNSUserTrackingUsageDescriptionを入力し、ValueフィールドにLocalization file > Base.Iproj folder > InfoPlist.stringsで指定された値を追加します。

 

次に、マルチリンガル設定ファイルに指定されたアプリユーザーからの権限承認を要求するメッセージを書いてください(一般設定 > アクセス権限リクエスト設定)。権限承認リクエストポップアップメッセージを入力しない場合、使用中のユーザーアクセス権限に関する追加の説明ガイドが欠落し、アプリレビュー中に拒否されることになります。

 

この時点まで完了している場合、ATT同意ポップアップはAdizの初期化中に自動的に表示されます。ユーザーがATT同意ポップアップで「許可」をクリックすると、IDFAが有効になり、パーソナライズされた広告が表示されます。

ゲームがヨーロッパおよびイギリス(EEAおよびUK)を対象とする場合、GDPR(一般データ保護規則)同意ポップアップを表示する必要があります。GDPR同意ポップアップは、ユーザーのデバイスのIPアドレスがヨーロッパおよびイギリス(EEAおよびUK)からの場合にのみ表示されます。AdizはGoogle UMP(ユーザーメッセージングプラットフォーム)を通じてGDPR同意ポップアップの表示をサポートしています。AdMobコンソールでGDPRメッセージを作成した後、Adizを初期化して、ヨーロッパおよびイギリスからアクセスするユーザーにGDPRポップアップを表示します。

Warning

ヨーロッパおよび英国以外の地域をターゲットにする場合、たとえば、国内のみでサービスを提供する予定がある場合は、GDPR同意ポップアップの表示(ヨーロッパ、英国)ステップをスキップし、Adiz.initializeForNonGDPR()メソッドを使用して初期化を進めることができます。
Adiz.initialize()メソッドを使用して初期化を進める場合、Adizの初期化が正常に進むためには、AdMobコンソールでGDPRメッセージを作成する必要があります。

Warning

Hive SDKを使用している場合、Hive Adizの初期化を完了した後にAuthV4.setupを実行する必要があります。ATT(アプリ追跡透明性)同意通知を表示した後にGDPR同意画面が表示されると、Appleのアプリレビュー中にアプリが拒否される可能性があります。

GDPRメッセージの作成

Google AdMobコンソールにアクセスしてGDPRメッセージを作成します。GDPRメッセージを書く前に、GDPRメッセージ作成ガイドを参照してください。

GDPRメッセージを作成する際は、使用したいメディエーションを広告パートナーのリストに追加する必要があります。
メディエーションを追加する方法は次のとおりです。

1) Google AdMob ダッシュボードの プライバシーとメッセージング > 欧州規制 > 設定 タブに移動し、'広告パートナーレビュー > カスタム広告パートナー' の編集アイコンをクリックします。 2) GDPR に基づいて Google によって認定されたすべてのメディエーションパートナーを一括で追加するには、すべてのメディエーションパートナーをチェックするか、必要なメディエーションパートナーのみを選択して 追加 をクリックします。

GDPRメッセージを書いた場合、Adizが初期化されるとGDPR同意ポップアップが自動的に表示されます。

GDPR同意/撤回機能の実装

GDPR同意ポップアップ内の項目は、ユーザーがいつでも同意状況を変更できるようにする必要があります。たとえば、ユーザーは最初はGDPRに同意していなかったが、パーソナライズされた広告を表示するために再度同意したい場合があります。逆に、ユーザーは最初はGDPRに同意していたが、もはや個人情報を提供したくなく、同意を撤回したい場合もあります。これらの状況に対処するために、アプリ開発者はユーザーが各項目に再同意するか、既存の同意を撤回できる機能を実装する必要があります。GDPR同意/撤回機能を実装するには、以下の手順に従ってください。

  1. アプリにGDPR同意ポップアップを再表示できるボタンUIを実装します。
  2. Adizの初期化を実装する際、isPrivacyOptionsRequired()を呼び出して、ヨーロッパおよびイギリスからアクセスしているユーザーにボタンUIを表示し、それ以外の場合は表示しないようにします。ヨーロッパまたはイギリスからアクセスしているユーザーがボタンをクリックした場合、showPrivacyOptionsFormを呼び出してGDPR同意ポップアップを再表示します。これにより、ユーザーはアプリ内の「オプションを管理」などのボタンを押すことで、GDPRの詳細に対する同意をいつでも変更できます。以下のshowPrivacyOptionsFormは、例示のために任意に実装されたメソッドであり、開発者は必要に応じて実装を変更できます。
import HiveAdiz

func initialize(_ appId: String) {
        // ...
        // isPrivacyOptionsRequired はデフォルトで 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 = [AdizGDPRManager 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) {
                                // エラーハンドリングは必要ありません。
                        }];
                }
        }

GDPR同意年齢未満のユーザーのためのタグ設定 (TFUA)

同意年齢未満のタグ(TFUA)を使用して、広告リクエストを行う際に、欧州経済地域(EEA)、英国、スイスに居住するユーザーを限定的なデータ処理の対象として扱うことができます。子供を対象としたアプリの場合、AdizConsentManager.SetUserPrivacySettingsを使用してユーザーを同意年齢未満として設定できます。欧州の国々にはいくつかの違いがありますが、GDPRは親の同意が必要な年齢を16歳未満と定義しています。同意年齢未満の設定は、Adiz.initializeを実行する前に構成する必要があります。

Warning

両方のGDPR同意年齢タグsetTagForUnderAgeOfConsentとCOPPA子供向け設定setTagForChildDirectedTreatmentを同時にtrueに設定すると、COPPA子供向け設定setTagForChildDirectedTreatmentが優先されます。したがって、両方をtrueに設定して同時に使用しないでください。

Note

Hive SDK v4 24.2.0 以上を使用し、Adiz 2.0.1 以上と併用する場合、Hive SDK の同意年齢設定は同意年齢未満のユーザーに自動的に適用されます。

ただし、ユーザーが Adiz.initialize を実行する前に AdizConsentManager.setUserPrivacySettings API を直接呼び出すと、Hive SDKによって定義された同意年齢設定は適用されず、AdizConsentManager.setUserPrivacySettings API 呼び出し中に設定された値が優先されます。

 

func initialize(_ appId: String) {
    bool isTagForUnderAgeOfConsent = false // Change to true if underage


    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 to true if underage


    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アドレスがヨーロッパまたはイギリスからのものである場合にのみ表示されます。開発段階では、IPアドレスに関係なくGDPRの同意ポップアップを強制的に表示してポップアップの表示をテストすることができ、そのためにはGDPRテストデバイスを設定する必要があります。以下の手順に従ってGDPRテストデバイスを設定してください。

  1. Adizを初期化して初期化します。これはテストデバイスIDを確認するための初期化であり、GDPR同意メッセージを書く必要はありません。
  2. デバイスIDを確認するメッセージがあるかどうか、デバッグログを確認します。以下のメッセージは一例です。

    このデバイスのデバッグモードを有効にするには、次を設定します: UMPDebugSettings.testDeviceIdentifiers = @[B74F6468-1516-467C-99AD-CC5973C5DB52]

    メッセージ内のデバイスIDを確認します(例: B74F6468-1516-467C-99AD-CC5973C5DB52)。

  3. デバイスIDをコピーします。
  4. 既存のAdiz初期化コード内でAdiz.initializeを実行する前にAdiz.setTestDevice(DEVICE_ID)を追加します。
  5. GDPR同意メッセージを書くと、GDPR同意ポップアップが正しく表示されるようにAdizを再初期化します。
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)に従い、アプリ開発者は広告リクエストを行う際に、Googleがコンテンツを子供向けとして扱うかどうかを指定するために、子供向け処理タグ設定(tagForChildDirectedTreatment、TFCD)を使用できます。子供向けとして扱われるようにしたい場合は、AdizConsentManager.SetUserPrivacySettingsを呼び出してからAdiz.initializeを実行する必要があります。Hive SDKを使用してAdizを使用する場合、子供向け処理タグは自動的に適用されるため、追加の設定は必要ありません。

func initialize(_ appId: String) {
        bool isTagForChildDirectedTreatment = false // Change to true if it's 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 if it is 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) {
                // ...
        }];
}

仲介を追加

AdizはAdMob仲介を使用して広告を表示できます。AdMob仲介を追加するには、以下の手順に従ってください。

AdMobの仲介を追加する

AdMobコンソールで広告ソースの統合を進めます。以下の表に従って進めてください。

AppLovin Liftoff Monetize Meta Audience Network Pangle Unity Ads ironSource
ステップ 1 AppLovinの設定を行う Liftoff Monetizeの設定を行う Meta Audience Networkの設定を行う Pangleの設定を行う Unity Adsの設定を行う ironSourceの設定を行う
ステップ 2 AdMobにAppLovin広告ソースを追加する AdMobにLiftoff Monetize広告ソースを追加する AdMobにMeta Audience Network広告ソースを追加する AdMobにPangle広告ソースを追加する AdMobにUnity Ads広告ソースを追加する AdMobにironSource広告ソースを追加する
ステップ 3 Adizアダプターを追加する
ステップ 4 AppLovin SKAdNetworkを追加する Liftoff SKAdNetworkを追加する Meta Audience Network SKAdNetworkを追加する Pangle SKAdNetworkを追加する Unity Ads SKAdNetworkを追加する ironSource SKAdNetworkを追加する

Adizアダプターの追加

CocoaPodsのPodfileに依存関係を追加します。

# ...

$HIVE_ADIZ_VERSION = '3.0.0'

def adiz
  pod 'HiveAdiz', $HIVE_ADIZ_VERSION
end

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

target 'MyGame-mobile' do
  adiz
  adizAdapter
end

# ...

 

Adizアダプターの設定が正しく適用されたことを確認するには、アプリを実行し、Ad Inspector画面の設定リストを確認してください。

SKAdNetworkの追加

iOS 14以降については、info.plistの更新ガイドを参照して、SKAdNetworkリストをInfo.plistファイルに追加してください。

各メディエーションがサポートするSKAdNetworkのリストは異なり、重複する値が含まれている場合があります。したがって、以下のリストに示すように、Adizによって現在サポートされているすべての広告メディエーションのSKAdNetwork設定から重複する値を削除する必要があります。

<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>cstr6suwn9.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>4fzdc2evr5.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>2fnua5tdw4.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>ydx93a7ass.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>p78axxw29g.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>v72qych5uu.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>ludvb6z3bs.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>cp8zw746q7.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>3sh42y64q3.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>c6k4g5qg8m.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>s39g8k73mm.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>3qy4746246.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>hs6bdukanm.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>mlmmfzh3r3.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>v4nxqhlyqp.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>wzmmz9fp6w.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>su67r6k2v3.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>yclnxrl5pm.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>7ug5zh24hu.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>gta9lk7p23.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>vutu7akeur.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>y5ghdn5j9k.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>v9wttpbfk9.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>n38lu8286q.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>47vhws6wlr.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>kbd757ywx3.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>9t245vhmpl.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>a2p9lx4jpn.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>22mmun2rn5.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>4468km3ulz.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>2u9pt9hc89.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>8s468mfl3y.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>ppxm28t8ap.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>uw77j35x4d.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>pwa73g5rt2.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>578prtvx9j.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>4dzt52r2t5.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>tl55sbb4fm.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>e5fvkxwrpn.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>8c4e2ghe7u.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>3rd42ekr43.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>3qcr597p9d.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>238da6jt44.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>24t9a8vw3c.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>24zw6aqk47.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>252b5q8x7y.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>275upjj5gd.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>294l99pt4k.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>32z4fx6l9h.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>3l6bd9hu43.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>424m5254lk.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>44jx6755aq.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>44n7hlldy6.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>488r3q3dtq.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>4mn522wn87.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>4pfyvq9l8r.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>4w7y6s5ca2.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>523jb4fst2.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>52fl2v3hgk.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>54nzkqm89y.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>5a6flpkh64.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>5l3tpt7t6e.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>5lm9lj6jb7.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>5tjdwbrq8w.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>6964rsfnh4.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>6g9af3uyq4.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>6p4ks3rnbw.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>6v7lgmsu45.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>6xzpu9s2p8.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>737z793b9f.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>74b6s63p6l.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>79pbpufp6p.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>7fmhfwg9en.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>7rz58n8ntl.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>84993kbrcf.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>89z7zv988g.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>8m87ys6875.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>8r8llnkz5a.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>97r2b46745.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>9b89h5y424.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>9nlqeag3gk.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>9rd848q2bz.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>9vvzujtq5s.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>9yg77x724h.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>a7xqa6mtl2.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>a8cz6cu7e5.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>av6w8kgt66.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>b9bk5wbcq9.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>bxvub5ada5.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>c3frkrj4fj.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>cg4yq2srnc.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>cj5566h2ga.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>cs644xg564.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>cwn433xbcr.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>dbu4b84rxf.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>dkc879ngq3.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>dzg6xy7pwj.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>ecpz2srf59.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>eh6m2bh4zr.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>ejvt5qm6ak.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>f38h382jlk.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>f73kdq92p3.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>f7s53z58qe.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>feyaarzu9v.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>g28c52eehv.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>g2y4y55b64.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>g6gcrrvk4p.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>ggvn48r87g.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>glqzh8vgby.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>gta8lk7p23.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>hb56zgv37p.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>hdw39hrw9y.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>k674qkevps.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>kbmxgpxpgc.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>klf5c3l5u5.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>krvm3zuq6h.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>lr83yxwka7.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>m297p6643m.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>m5mvw97r93.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>m8dbw4sv7c.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>mls7yz5dvl.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>mp6xlyr22a.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>mqn7fxpca7.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>mtkv5xtk9e.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>n66cz3y3bx.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>n6fk4nfna4.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>n9x2a789qt.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>nzq8sh4pbs.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>prcb7njmu6.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>pwdxu55a5a.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>qqp299437r.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>qu637u8glc.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>r45fhb6rf7.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>rvh3l7un93.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>rx5hdcabgc.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>s69wq72ugq.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>t38b2kh725.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>u679fj5vs4.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>v79kvwwj4g.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>vcra2ehyfk.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>vhf287vqwu.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>w9q455wk68.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>wg4vff78zm.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>x44k69ngh6.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>x5l83yy675.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>x8jxxk4ff5.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>x8uqf25wch.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>xga6mpmplv.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>xy9t38ct57.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>y45688jllp.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>z24wtl6j62.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>zmvfpc5aq8.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>zq492l623r.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>k6y4y55b64.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>6yxyv74ff7.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>mj797d8u6f.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>5f5u5tfb26.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>apzhy3va96.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>t6d3zquu66.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>qwpu75vrh2.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>ns5j362hk7.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>z959bm4gru.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>fz2k2k5tej.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>bvpn9ufa9b.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>6rd35atwn8.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>ln5gz23vtd.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>tmhh9296z4.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>sczv5946wb.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>87u5trcl3r.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>fq6vru337s.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>thzdn4h5nc.adattributionkit</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>raa6f494kr.adattributionkit</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>6lz2ygh3q6.adattributionkit</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>m2jqnlggk3.adattributionkit</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>f2zub97jtl.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>9g2aggbj52.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>r26jy69rpl.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>nu4557a4je.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>cdkw7geqsh.skadnetwork</string>
</dict>

Adizの初期化

これは、すべてのタイプの広告を表示する前に実行しなければならない必須のステップです。Adizを初期化することで、広告を表示するために必要な広告キーを受け取ります。テストモードを有効にしている場合は、テストキーを受け取ります。

Warning

GDPR設定を使用している場合は、Hive Adizの初期化を完了した後にAuthV4.setupを実行する必要があります。ATT(アプリトラッキング透明性)同意通知を表示した後にGDPR同意画面が表示されると、Appleのアプリレビュー中にアプリが拒否される可能性があります。

import HiveAdiz

// Hive Adizの初期化
Adiz.initialize(targetViewController) { error, json in
        if error.isSuccess,
                let responseList = json?["keys"] as? [[String:Any]] {

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

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

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

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

// Hive Adizを初期化中
[Adiz initialize: targetViewController handler:^(AdizError * error, NSDictionary<NSString *,id> * json) {
        if([error isSuccess] && json[@"keys"] != nil) {
                NSArray* responseList = json[@"keys"];

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

                for (NSDictionary* response in responseList) {
                        // これは、広告キーのリストを設定する例です(is_default = false)広告キーを直接設定したい場合。
                        if (response[@"is_default"] != nil && [response[@"is_default"] boolValue] == false) {
                                NSString* hiveAdKey = response[@"key"];
                                NSString* hiveForm = response[@"form"];
                                if ([hiveForm isEqualToString: @"interstitial"]) {
                                        [interstitialKeyList addObject: hiveAdKey];
                                } else if ([hiveForm isEqualToString: @"banner"]) {
                                        [bannerKeyList addObject: hiveAdKey];
                                } else if ([hiveForm isEqualToString: @"native"]) {
                                        [nativeKeyList addObject: hiveAdKey];
                                } else if ([hiveForm isEqualToString: @"rewarded"]) {
                                        [rewardedKeyList addObject: hiveAdKey];
                                } else if ([hiveForm isEqualToString: @"rewarded_interstitial"]) {
                                        [rewardedInterstitialKeyList addObject: hiveAdKey];
                                } else if ([hiveForm isEqualToString: @"app_open"]) {
                                        [appOpenKeyList addObject: hiveAdKey];
                                }
                        }
                }

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

 

初期化中にコールバックとして受信したJSONファイルには、広告キーのリストが含まれています。広告キーのリストは以下の形式です。

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

 

テストモードで初期化すると、コンソールにAdMobの広告キーを登録していなくても、テスト広告キーのリストが受け取れます。プロダクションモードで初期化すると、コンソールに登録されたAdMobの広告キーのリストが受け取れます。

各広告タイプ(form)ごとに、1つの広告がデフォルト広告"is_default":trueの広告)として使用されます。広告タイプが最初に登録されると、最初に登録された広告がデフォルト広告になります。デフォルト広告を使用する際には、広告インスタンス(initialize())を作成する際に広告キー(hiveAdKey)を入力する必要はありません。デフォルト広告を変更するには、コンソールから既存のデフォルト広告を削除し、新しい広告を登録する必要があります。

広告コールバックリスナーの設定

各広告インスタンスを作成する際に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() // 報酬アイテムの種類
                var itemAmount = rewardItem.getItemAmount() // 報酬アイテムの数量    }}
#import <HiveAdiz/HiveAdiz-Swift.h>

@interface TestAdizListener : NSObject<AdizListener>
@end

@implementation TestAdizListener

- (void) onLoad {
        // 広告が読み込まれたときに呼び出されます。
        // 広告の読み込みが成功した場合、広告を表示するために、必要なポイントで広告インスタンスの.show()を呼び出す必要があります。
        NSLog(@"[TestAdizListener] onLoad");
}

- (void) onFail:(AdizError *)error {
        // 広告の読み込みが失敗した場合や、他の理由で広告の表示が失敗した場合に呼び出されます。
        NSLog(@"[TestAdizListener] onFail: ");
        NSLog(@"errorCode: %ld, errorMessage: %@", (long)[error getCode], [error getMessage]);
}

- (void) onShow {
        // 広告が表示されたときに呼び出されます。
        NSLog(@"[TestAdizListener] onShow");
}

- (void) onClick {
        // 広告がクリックされたときに呼ばれます。
        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]; // Reward item type
        NSInteger itemAmount = [rewardItem getItemAmount]; // Reward item type quantity
}

@end

エラーコード

Adiz.InitializeおよびAdizListeneronFail()を受け取ると、AdizErrorのエラーコードとエラーメッセージは以下の通りです。

共通コード

番号 ケース 説明
0 成功 成功

Adiz エラーコード

番号 ケース 説明
-1 InvalidParam 無効なパラメータ
-2 NotSupported サポートされていません
-3 InProgress 処理中
-4 Network ネットワークエラー
-5 NeedInitialize 初期化が必要です
-6 ResponseFail 応答に失敗しました
-7 Timeout ネットワークタイムアウト
-99 Unknown 不明なエラー

広告プラットフォームエラーコード

番号 ケース 説明
-101 NeedLoad 広告が読み込まれませんでした
-102 NeedReload 広告の表示時間が切れたため、再読み込みが必要です
-103 NotEnoughInventory メディエーションの応答は成功しましたが、在庫不足のため広告が充填されませんでした
-104 MissingAppId メディエーションリクエストのAppIDエラー
-105 InternalNetworkError メディエーションネットワーク関連のエラー
-106 InvalidUnitId 無効なユニットID
-107 MediationNoFill メディエーションアダプターが広告リクエストを処理できませんでした
-108 AlreadyLoaded すでに読み込み状態です
-109 CannotRequestAds 広告をリクエストできません
-201 GdprConsentError GDPR同意エラー
-202 IsNotPrivacyOptionsRequired GDPR同意ポップアップを表示できないか、表示する必要のない状態です

広告の表示と広告の終了

広告を表示し、終了するには、以下の手順に従ってください。

  1. 表示したい広告のタイプごとに広告クラスに広告インスタンスを作成します。表示したい広告がデフォルト広告でない場合は、初期化から取得した広告キーまたは配置IDを入力する必要があります。広告キー(hiveAdKey)または配置ID(placementId)を入力しない場合、デフォルト広告インスタンスが作成されます。配置IDはHiveコンソールで設定でき、詳細についてはコンソールガイドのAdmob設定ページを参照してください。
  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 requestInitAdWithPlacementId(placementId: String?) {
                if let placementId = placementId,
                        placementId.count > 0 {
                        // AdizInterstitialインスタンスを初期化します (ViewController, placementId, AdizListener)
                        self.interstitialAd = AdizInterstitial.initializeWithPlacementId(self, placementId: placementId, adizListener: self)
                }
                else {
                        // デフォルトのAdizInterstitialインスタンスを初期化します (ViewController, AdizListener)
                        self.interstitialAd = AdizInterstitial.initialize(self, adizListener: self)
                }
        }

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

        func requestShowAd() {
                // Show AdizInterstitial
                if let ad = self.interstitialAd,
                    ad.isLoaded() {
                        ad.show()
                        }
        }

        func requestDestroyAd() {
                // Destroy 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) requestInitAdWithPlacementId: (NSString*)placementId {
        if (placementId != nil && ![placementId isEqualToString:@""]) {
                // AdizInterstitialインスタンスを初期化します (ViewController, placementId, AdizListener)
                // インタースティシャル広告インスタンスを作成します。
                self.interstitialAd = [AdizInterstitial initializeWithPlacementId:self placementId:placementId adizListener:self];
        }
        else {
                // デフォルトのAdizInterstitialインスタンスを初期化します (ViewController, AdizListener)
                self.interstitialAd = [AdizInterstitial initialize:self adizListener:self];
        }
}

- (void) requestLoadAd {
        // 広告を読み込む
        if (self.interstitialAd != nil && [self.interstitialAd isInitialized]) {
                [self.interstitialAd load];
        }
}

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

- (void) requestDestroyAd {
        // Destroy 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
468 x 60 IABフルサイズバナー タブレット BannerSize.full

 

PositionType は最上位または最下位のいずれかです。デフォルト値は最下位です。

配置 説明 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インスタンスを初期化する (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 requestInitAdWithPlacementId(placementId: String?) {        // バナーサイズを設定
                var bannerSize: BannerSize = .normal

                if let placementId = placementId,
                        placementId.count > 0 {
                        // AdizBannerインスタンスを初期化する (ViewController, placementId, BannerSize, AdizListener)
                        self.bannerAd = AdizBanner.initializeWithPlacementId(self, placementId: placementId, size: bannerSize, adizListener: self)
                }
                else {
                        // デフォルトのAdizBannerインスタンスを初期化する (ViewController, BannerSize, AdizListener)
                        self.bannerAd = AdizBanner.initialize(self, size: bannerSize, adizListener: self)
                }    
        }    

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

        func requestShowAd() {
                // 位置タイプを設定
                var position: PositionType = .top

                // AdizBannerを表示
                if let ad = self.bannerAd,
                    ad.isLoaded() {
                        ad.show(position)
                        }
        }     

        func requestDestroyAd() {
                // Destroy 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 バナーViewController

- (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) requestInitAdWithPlacementId: (NSString*)placementId {
        // バナーサイズを設定
        BannerSize bannerSize = BannerSizeNormal;

        if (placementId != nil && ![placementId isEqualToString:@""]) {
                // AdizBannerインスタンスを初期化します (ViewController, placementId, BannerSize, AdizListener)
                self.bannerAd = [AdizBanner initializeWithPlacementId:self placementId:placementId size: bannerSize adizListener:self];
        }    else {
                // デフォルトのAdizBannerインスタンスを初期化します (ViewController, BannerSize, AdizListener)
                self.bannerAd = [AdizBanner initialize:self size:bannerSize adizListener:self];
        }
} 

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

- (void) requestShowAd {
        // 位置タイプを設定
        PositionType position = PositionTypeTop;

        // AdizBannerを表示
        if (self.bannerAd != nil && [self.bannerAd isLoaded]) {
                [self.bannerAd show: position];
        }
} 

- (void) requestDestroyAd {
        // AdizBannerを破棄します
        if (self.bannerAd != nil) {
                [self.bannerAd destroy];
                self.bannerAd = nil;
        }
} 

#pragma mark - AdizListener

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

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

- (void) onShow {
} 

- (void) onClick {
} 

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

@end

ネイティブ広告

これは特定のサイズのネイティブテンプレートを表示するネイティブ広告です。ネイティブ広告は縦型画面に最適化されているため、縦型ゲーム(ポートレートモードのゲーム)で使用することをお勧めします。ネイティブ広告はonClose()コールバックを受け取りません。したがって、広告を閉じるには別の場所からdestroy()を呼び出す必要があります。

 

現在のテンプレートはsmallまたはmediumサイズをサポートしています。

サイズポイント (幅 x 高さ) テンプレート アライメント BannerSize 定数
355x91 (アスペクト比調整済み) 小サイズ 上 / 下 BannerSize.normal
355x370 (アスペクト比調整済み) 中サイズ 中央 (固定) BannerSize.medium, BannerSize.large, BannerSize.full

 

small テンプレートでは、PositionType は上または下のいずれかで、デフォルトは下です。

配置 説明 PositionType 定数
上部配置 画面の上部に配置を指定します PositionType.top
下部配置 (デフォルト) 画面の下部に配置を指定します PositionType.bottom

 

medium テンプレートでは、配置の選択ができず、デフォルトで中央揃えが使用されます。

import UIKit
import HiveAdiz

class NativeViewController: UIViewController {

        // AdizNativeインスタンスを作成
        var nativeAd: AdizNative?

        func requestInitAd(hiveAdKey: String?) {
                // バナーサイズを設定
                var bannerSize: BannerSize = .normal

                if let adKey = hiveAdKey,
                        adKey.count > 0 {
                        // AdizNativeインスタンスを初期化します (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 requestInitAdWithPlacementId(placementId: String?) {
                // バナーサイズを設定
                var bannerSize: BannerSize = .normal

                if let placementId = placementId,
                        placementId.count > 0 {
                        // AdizNativeインスタンスを初期化する (ViewController, placementId, BannerSize, AdizListener)
                        self.nativeAd = AdizNative.initializeWithPlacementId(self, placementId: placementId, size: bannerSize, adizListener: self)
                }
                else {
                        // デフォルトのAdizNativeインスタンスを初期化する (ViewController, BannerSize, AdizListener)
                        self.nativeAd = AdizNative.initialize(self, size: bannerSize, adizListener: self)
                }
        }

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

        func requestShowAd() {
                // 位置タイプを設定
                var position: PositionType = .top

                // AdizNativeを表示
                if let ad = self.nativeAd,
                    ad.isLoaded() {
                        ad.show(position)
                }
        }

        func requestDestroyAd() {
                // 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) requestInitAdWithPlacementId: (NSString*)placementId {
        // バナーサイズを設定
        BannerSize bannerSize = BannerSizeNormal;

        if (placementId != nil && ![placementId isEqualToString:@""]) {
                // AdizNativeインスタンスを初期化します (ViewController, placementId, BannerSize, AdizListener)
                self.nativeAd = [AdizNative initializeWithPlacementId:self placementId:placementId 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 isInitialized]) {
                [self.nativeAd load];
        }
}

- (void) requestShowAd {
        // 位置タイプを設定
        PositionType position = PositionTypeTop;

        // AdizNativeを表示
        if (self.nativeAd != nil && [self.nativeAd isLoaded]) {
                [self.nativeAd show: position];
        }
}

- (void) requestDestroyAd {
        // AdizNativeを破棄する
        if (self.nativeAd != nil) {
                [self.nativeAd destroy];
                self.nativeAd = nil;
        }
}

#pragma mark - AdizListener

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

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

- (void) onShow {
}

- (void) onClick {
}

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

@end

報酬広告

これは、ユーザーが一定の時間広告を視聴することで報酬を受け取る報酬広告です。報酬が付与されると、報酬アイテム情報は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 requestInitAdWithPlacementId(placementId: String?) {
                if let placementId = placementId,
                        placementId.count > 0 {
                        // Initialize AdizRewarded Instance (ViewController, placementId, AdizListener)
                        self.rewardAd = AdizRewarded.initializeWithPlacementId(self, placementId: placementId, adizListener: self)
                }
                else {
                        // Initialize Default AdizRewarded Instance (ViewController, AdizListener)
                        self.rewardAd = AdizRewarded.initialize(self, adizListener: self)
                }
        }

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

        func requestShowAd() {
                // Show AdizRewarded
                if let ad = self.rewardAd,
                    ad.isLoaded() {
                        ad.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) requestInitAdWithPlacementId: (NSString*)placementId {
        if (placementId != nil && ![placementId isEqualToString:@""]) {
                // AdizRewardedインスタンスを初期化します (ViewController, placementId, AdizListener)
                self.rewardedAd = [AdizRewarded initializeWithPlacementId:self placementId:placementId adizListener:self];
        }
        else {
                // デフォルトのAdizRewardedインスタンスを初期化します (ViewController, AdizListener)
                self.rewardedAd = [AdizRewarded initialize:self adizListener:self];
        }
}

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

- (void) requestShowAd {
        // AdizRewardedを表示
        if (self.rewardedAd != nil && [self.rewardedAd isLoaded]) {
                [self.rewardedAd show];
        }
}

- (void) requestDestroyAd {
        // AdizRewardedを破棄します
        if (self.rewardedAd != nil) {
                [self.rewardedAd destroy];
                self.rewardedAd = nil;
        }
}

#pragma mark - AdizListener

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

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

- (void) onShow {
} 

- (void) onClick {
} 

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

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

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

@end

報酬付きインタースティシャル広告

これは、ユーザーが一定の時間広告を視聴することで報酬を受け取る報酬付きインタースティシャル広告です。報酬が付与されると、報酬アイテムの情報が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 requestInitAdWithPlacementId(placementId: String?) {
                if let placementId = placementId,
                        placementId.count > 0 {
                        // AdizRewardedInterstitialインスタンスを初期化します (ViewController, placementId, AdizListener)
                        self.rewardInterstitialAd = AdizRewardedInterstitial.initializeWithPlacementId(self, placementId: placementId, adizListener: self)
                }
                else {
                        // デフォルトのAdizRewardedInterstitialインスタンスを初期化します (ViewController, AdizListener)
                        self.rewardInterstitialAd = AdizRewardedInterstitial.initialize(self, adizListener: self)
                }    
        }   

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

        func requestShowAd() {
                // Show AdizRewardedInterstitial
                if let ad = self.rewardInterstitialAd,
                    ad.isLoaded() {
                        ad.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:@""]) {
                // 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) requestInitAdWithPlacementId: (NSString*)placementId {
        if (placementId != nil && ![placementId isEqualToString:@""]) {
                // AdizRewardedInterstitialインスタンスを初期化 (ViewController, placementId, AdizListener)
                self.rewardedInterstitialAd = [AdizRewardedInterstitial initializeWithPlacementId:self placementId:placementId adizListener:self];
        }
        else {
                // デフォルトのAdizRewardedInterstitialインスタンスを初期化 (ViewController, AdizListener)
                self.rewardedInterstitialAd = [AdizRewardedInterstitial initialize:self adizListener:self];
        }
} 

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

- (void) requestShowAd {
        // AdizRewardedInterstitialを表示
        if (self.rewardedInterstitialAd != nil && [self.rewardedInterstitialAd isLoaded]) {
                [self.rewardedInterstitialAd show];
        }
} 

- (void) requestDestroyAd {
        // 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()を使用して事前にロードされた広告が表示されます。広告がロードされてから3時間以上経過している場合、広告は表示されず、自動的に再ロードされます。次回アプリがフォアグラウンドに移動した際に広告が表示されます。一度広告が表示された後は、自動的に再ロードされることはないため、新しい広告をロードするには再度load()を呼び出す必要があります。

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 requestInitAdWithPlacementId(placementId: String?) {
                if let placementId = placementId,
                        placementId.count > 0 {
                        // AdizAppOpenインスタンスを初期化します (ViewController, placementId, AdizListener)
                        self.appOpenAd = AdizAppOpen.initializeWithPlacementId(self, placementId: placementId, adizListener: self)
                }
                else {
                        // デフォルトのAdizAppOpenインスタンスを初期化します (ViewController, AdizListener)
                        self.appOpenAd = AdizAppOpen.initialize(self, adizListener: self)
                }    
        }   

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

        func requestShowAd() {
                print("[appOpenAd] appOpenAd は表示をリクエストしません")
        }     

        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インスタンスを初期化 (ViewController, hiveAdKey, AdizListener)
                self.appOpenAd = [AdizAppOpen initialize:self hiveAdKey:hiveAdKey adizListener:self];
        }
        else {
                // デフォルトのAdizAppOpenインスタンスを初期化 (ViewController, AdizListener)
                self.appOpenAd = [AdizAppOpen initialize:self adizListener:self];
        }
} 

- (void) requestInitAdWithPlacementId: (NSString*)placementId {
        if (placementId != nil && ![placementId isEqualToString:@""]) {
                // AdizAppOpenインスタンスを初期化 (ViewController, placementId, AdizListener)
                self.appOpenAd = [AdizAppOpen initializeWithPlacementId:self placementId:placementId adizListener:self];
        }
        else {
                // デフォルトのAdizAppOpenインスタンスを初期化 (ViewController, AdizListener)
                self.appOpenAd = [AdizAppOpen initialize:self adizListener:self];
        }
} 

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