コンテンツにスキップ

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', '2.1.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は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つあります。

  • テストデバイスをハイブコンソールに登録した後、広告ユニットIDを使用に設定してください(推奨):
    コンソールガイドのTest Device Managementセクションを参照してください。

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

Note

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

 

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

 

ネイティブ広告

 

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

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

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

 

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

 

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


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

広告インスペクターは、テストデバイス上で実際の広告をリクエストして表示するプロセスをリアルタイムで分析するアプリ内オーバーレイツールです。広告の読み込みにかかる時間を通知し、広告の表示に失敗した理由を提供します。また、特定の広告ネットワークを指定して、広告が正しく表示されているかを確認することができ、問題がある場合はコードレベルでデバッグすることができます。これらすべては、広告インスペクターのUIとともに行われます。これは、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設定

登録したAdiz AppIDをHiveコンソールのAppCenterに設定します。設定されていない場合、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タブでCustom iOS Target Properties項目をクリックします。
  5. Custom iOS Target Propertiesリスト内を右クリックします。
  6. Add Rowメニューをクリックします。
  7. KeyフィールドにNSUserTrackingUsageDescriptionを入力し、Valueフィールドには多言語設定ファイル > Base.Iprojフォルダー > 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メッセージを作成する必要があります。

GDPRメッセージを書く

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

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

Warning

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

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

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

Note

Hive SDK v4 24.2.0 以上を Adiz 2.0.1 以上と一緒に使用する場合、Hive SDK で設定されたユーザー同意年齢が自動的に適用されるため、AdizConsentManager.SetUserPrivacySettings を呼び出す必要はありません。

 

func initialize(_ appId: String) {
    bool isTagForUnderAgeOfConsent = false // 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)によれば、アプリ開発者は広告リクエストを行う際に子供向け処理タグ(tagForChildDirectedTreatment、TFCD)を設定することで、Googleがコンテンツを子供向けとして扱うべきかどうかを指定できます。子供向けとして扱われるようにしたい場合は、AdizConsentManager.SetUserPrivacySettingsを呼び出してからAdiz.initializeを実行する必要があります。Hive SDKを使用してAdizを使用する場合、子供向け処理タグは自動的に適用されるため、別途設定は必要ありません。

func initialize(_ appId: String) {
        bool isTagForChildDirectedTreatment = false // Change to true if it is 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; // 子供向けの場合はtrueに変更


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

        [AdizConsentManager setUserPrivacySettings: [privacySet build]];

        // HiveAdiz 初期化
        [Adiz initialize: targetViewController handler:^(AdizError * error, NSDictionary<NSString *,id> * json) {
                // ...
        }];
}

広告仲介を追加

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

AdMobメディエーションの追加

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

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

Adizアダプタの追加

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


# ...

$HIVE_ADIZ_VERSION = '2.1.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
end

target 'MyGame-mobile' do
  adiz
  adizAdapter
end

# ...

 

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

Adizの初期化

これは、すべてのタイプの広告を表示する前に実行しなければならない必須のステップです。Adizを初期化することで、広告を表示するために必要な広告キーを受け取ります。テストモードの場合は、テストキーを受け取ります。Hive SDKを使用している場合は、AuthV4.setupを呼び出した後に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の広告)として使用されます。任意のタイプの最初の広告が登録されると、その広告がデフォルト広告になります。デフォルト広告を使用する場合、広告インスタンスを作成する際に広告キー(hiveAdKey)を入力する必要はありません(initialize())。デフォルト広告を変更するには、既存のデフォルト広告をコンソールから削除し、新しい広告を登録する必要があります。

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

各広告インスタンスを作成する際にAdizListenerを実装することで、広告の状態の変化に基づいてコールバックを受け取ることができます。

名前 説明 必要な実装
onLoad() 広告が正常に読み込まれました O
onFail(error: AdizError) 失敗(失敗の理由はerror.getCode()error.getMessage()で確認できます) O
onShow() 広告表示成功 O
onClick() 広告クリック O
onPaidEvent(_ revenueData: AdRevenueData) 広告露出後の有料イベントの時点で受信され、広告収益情報が伝達される O
onClose() 広告終了
  • 広告が終了した後に同じ広告インスタンスを再表示するには、load()を再度呼び出し、その後show()を呼び出す必要があります。
  • 広告の表示を停止するには、destroy()を呼び出して広告インスタンスを削除します。
X
onRewarded(_ rewardItem: RewardItem) 報酬型広告(rewarded, rewarded interstitial)で広告を見た後にユーザーが報酬を受け取るポイント X
import HiveAdiz

class TestAdizListener: AdizListener {
        func onLoad() {
                // 広告が読み込まれたときに呼び出されます。
                // 広告の読み込みが成功した場合、広告インスタンスの.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 {
        // 広告が表示されたときに呼び出されます。
        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

エラーコード

Adiz.InitializeAdizListener から onFail() を受け取った場合、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() {
                // 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 {
        // AdizInterstitialを読み込む
        if (self.interstitialAd != nil && [self.interstitialAd isInitialized]) {
                [self.interstitialAd load];
        }
}

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

- (void) requestDestroyAd {
        // 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 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) 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 {
        // Destroy 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 {
        // Load 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 {
        // Show AdizRewarded
        if (self.rewardedAd != nil && [self.rewardedAd isLoaded]) {
                [self.rewardedAd show];
        }
}

- (void) requestDestroyAd {
        // Destroy 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 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() {
                // 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時間が経過した後に 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 requestInitAdWithPlacementId(placementId: String?) {
                if let placementId = placementId,
                        placementId.count > 0 {
                        // Initialize AdizAppOpen Instance (ViewController, placementId, AdizListener)
                        self.appOpenAd = AdizAppOpen.initializeWithPlacementId(self, placementId: placementId, adizListener: self)
                }
                else {
                        // Initialize Default AdizAppOpen Instance (ViewController, AdizListener)
                        self.appOpenAd = AdizAppOpen.initialize(self, adizListener: self)
                }    
        }   

        func requestLoadAd() {
                // 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 don't request Show");
}

- (void) requestDestroyAd {
        // AdizAppOpenを破棄
        if (self.appOpenAd != nil) {
                [self.appOpenAd destroy];
                self.appOpenAd = nil;
        }
} 

#pragma mark - AdizListener

- (void) onLoad {
} 

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

- (void) onShow {
} 

- (void) onClick {
} 

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

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

@end