iOS
Adiz iOS¶
Adiz iOSは、AdMobが提供する広告露出機能をより使いやすくするために、Hiveプラットフォーム上で提供されるiOS用の広告モジュールです。Adiz iOSが提供する広告の種類は以下の通りです。
- インタースティシャル広告
- バナー広告
- ネイティブ広告
- 報酬型広告
- 報酬型インタースティシャル広告
- アプリオープン広告
Adiz iOSをインストールして使用するには、以下のガイドを順番に参照してください。
準備¶
Adiz iOS開発環境を設定します。
インストール¶
GADApplicationIdentifierキーをXcodeプロジェクトのInfo.plistファイルに追加し、AdMobId値(形式はca-app-pub-XXXXX~YYYYY)をそのキーの値として入力します。
さらに、iOS 14以降については、info.plistを更新するガイドを参照して、SKAdNetworkリストをInfo.plistファイルに追加してください。
その後、プロジェクトのCocoaPods設定(Podfile)に次の内容を追加します。
source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/Com2uSPlatformCorp/HiveAdiz-iOS.git'
platform :ios, '12.0'
target 'UnityFramework' do
  pod 'HiveAdiz', '2.1.3'
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つの方法でテスト広告を表示できます。
- テストモードを有効にする: AdMobによって発行されたテスト広告のみが表示されます
- テストデバイスを登録した後に広告を表示する: テスト用に実際の広告を表示し、無効なトラフィックが発生しないようにし、テスト広告を表示するデバイスを登録して進めます
テストモードを有効にする¶
開発段階では、テストモードを有効にして、テスト広告をクリックしても広告主に料金が発生しないようにします。テストモードが有効になると、テスト広告のみが表示されます。テストモードでは、コンソールにAdMob広告キーが入力されていなくてもテスト広告が表示されます。商業配信中はテストモードを無効にしてください。
テストモードをアクティブにする方法は2つあります。
- テストデバイスをHiveコンソールに登録した後、デモ広告に設定してください(推奨):
 コンソールガイドのTest Device Managementセクションを参照してください。
- AdizクラスのsetTestMode()メソッドを使用してください:
 以下のサンプルコードを参照してください。
Note
テストモードでない開発段階では、広告への過剰なクリックは無効なトラフィックと見なされる可能性があり、あなたのAdMobアカウントが報告され、広告が表示されなくなることがあります。
Adiz.setTestMode() メソッドの使用¶
テストデバイスの広告露出¶
以下の状況では、テスト広告を表示するためにテストデバイスを登録する必要があります。
- コンソールに登録されたAdMob広告キーが正しく機能しているかテストする
- GDPRメッセージを書き、GDPR同意ポップアップが正しく機能するか確認する
- 広告インスペクターを実行して広告リクエストを分析し、デバッグする
<
テストデバイスに広告を表示する方法は2つあります。
-  テストデバイスをHiveコンソールに登録した後、広告ユニットIDを使用するに設定してください(推奨): 
 コンソールガイドのテストデバイスの管理の内容を参照してください。
-  Adizクラスの setTestDevice()メソッドを使用してください:
 以下の例のコードを参照してください。
Note
テストデバイスを登録せずに実際の広告を公開するテストを行うと、無効なトラフィックと見なされる可能性があり、あなたのAdMobアカウントがブロックされ、さらなる広告の公開が妨げられることがあります。テストデバイスを登録すると、広告公開中に「テストモード」または「テスト広告」(ネイティブ広告)が表示されます。商業配信中はテストデバイスを無効にする必要があります。
Adiz.setTestDevice() メソッドの使用¶
テストデバイスを登録するには、まずテストデバイスIDを確認する必要があります。テストデバイスID(例: B74F6468-1516-467C-99AD-CC5973C5DB52)は、以下の2つの方法で確認できます。
- Adiz.Initialize()を呼び出し、Logcat ログを確認します:
- Adiz.Initialize()を呼び出した後、広告の種類に関係なく、- initialize()→- load()を呼び出した後にLogcatログを確認してください:
テストデバイスIDを確認した後、既存の Hive Adiz初期化コード内で Adiz.initialize を実行する前に Adiz.SetTestDevice(DEVICE_ID) の行を追加します。コピーしたテストデバイスIDを DEVICE_ID に入力してください。
広告インスペクターの使用¶
広告インスペクターは、テストデバイス上で実際の広告をリクエストして表示するプロセスをリアルタイムで分析するアプリ内オーバーレイツールです。広告の読み込みにかかる時間を通知し、表示の失敗に関する理由を提供します。また、特定の広告ネットワークを指定して、広告が正しく表示されているかを確認することもでき、問題がある場合はコードレベルでデバッグできます。これらすべては、広告インスペクターUIと連携して行われます。これは、iOS用のGoogle Mobile Ads SDKバージョン7.68.0以降に含まれており、AdizDeveloperTool.OpenAdInspectorを呼び出すことで使用できます。
広告インスペクターを使用するには、テストデバイスでの広告露出を設定する必要があります。
Adiz AppID設定¶
HiveコンソールAppCenterに登録したAdiz AppIDを設定します。設定されていない場合、Bundle IDが使用されます。
Hive コンソールサーバー設定¶
Hiveコンソールサーバーを使用するために設定しています。デフォルトはrealです。プロダクションサーバーを使用しても、テストモードを有効にするとテスト広告のみが表示されます。
- Hive テストコンソールサーバー: AdizZoneType.test
- Hive サンドボックスコンソールサーバー: AdizZoneType.sandbox
- Hive プロダクションコンソールサーバー: AdizZoneType.real
ユーザー特有の広告露出¶
iOS 14.5+でのATT(アプリトラッキング透明性)の導入により、プライバシーが強化されました。それに伴い、ユーザー特有の広告は、ユーザーがATT同意ポップアップでアクティビティトラッキングに同意した場合にのみ表示されます。ユーザー特有の広告を表示して広告収益を最大化するには、IDFA(広告主の識別子)メッセージを書く必要があります。
以下に示すように、Google AdMobダッシュボードでIDFAメッセージを書いて公開します。
IDFAメッセージを書く際は、以下のガイドを参照してください。
IDFAメッセージを書いて投稿した後、ユーザートラッキングアクセス権限を設定します。以下の手順に従って、Info.plistにキーを追加してください。
- Xcodeプロジェクトウィンドウのプロジェクトナビゲーターでプロジェクトを選択します。
- TARGETSリストからアプリを選択します。
- Infoタブをクリックします。
- InfoタブでCustom iOS Target Properties項目をクリックします。
- Custom iOS Target Propertiesリストで右クリックします。
- Add Rowメニューをクリックします。
- KeyフィールドにNSUserTrackingUsageDescriptionを入力し、ValueフィールドにLocalization file > Base.Iproj folder > InfoPlist.stringsで指定された値を追加します。
次に、多言語設定ファイルに指定されたアプリユーザーからの許可承認を要求するメッセージを書いてください(一般設定 > アクセス許可リクエスト設定)。許可承認リクエストポップアップメッセージを入力しない場合、使用中のユーザーアクセス許可に関する追加の説明ガイドが欠落し、アプリレビュー中に拒否されることになります。
ここまで完了している場合、ATT同意ポップアップがAdizの初期化中に自動的に表示されます。ユーザーがATT同意ポップアップで「許可」をクリックすると、IDFAが有効化され、パーソナライズされた広告が表示されます。
GDPR同意ポップアップの表示 (ヨーロッパ、英国)¶
ゲームがヨーロッパおよび英国(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 によって認証されたすべてのメディエーションパートナーをチェックして一括追加するか、必要なメディエーションパートナーのみを選択して 追加 をクリックします。
 2) GDPR に基づいて Google によって認証されたすべてのメディエーションパートナーをチェックして一括追加するか、必要なメディエーションパートナーのみを選択して 追加 をクリックします。 
GDPRメッセージを書いた場合、Adizが初期化されるとGDPR同意ポップアップが自動的に表示されます。
GDPR同意/撤回機能の実装¶
GDPR同意ポップアップの項目は、ユーザーがいつでも同意状況を変更できる能力を提供しなければなりません。たとえば、ユーザーは最初はGDPRに同意していなかったが、パーソナライズされた広告を見るために再度同意したい場合があります。また、逆に、ユーザーは最初はGDPRに同意していたが、もはや個人情報を提供したくなくなり、同意を撤回したい場合もあります。これらの状況に対処するために、アプリ開発者はユーザーが各項目に再同意するか、既存の同意を撤回する機能を実装する必要があります。GDPR同意/撤回機能を実装するには、次の手順に従ってください。
- アプリにGDPR同意ポップアップを再表示できるボタンUIを実装します。
- 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; // 同意年齢未満の場合はtrueに変更
    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 テストデバイスを設定してください。
- Adizを初期化して初期化します。これはテストデバイスIDを確認するための初期化であり、GDPR同意メッセージを書く必要はありません。
- デバイスIDを確認するメッセージがあるかどうか、デバッグログを確認してください。以下のメッセージは例です。 - このデバイスのデバッグモードを有効にするには、次のように設定します: UMPDebugSettings.testDeviceIdentifiers = @[B74F6468-1516-467C-99AD-CC5973C5DB52] - メッセージ内のデバイスIDを確認してください(例: - B74F6468-1516-467C-99AD-CC5973C5DB52)。
- デバイスIDをコピーします。
- 既存のAdiz初期化コード内で、Adiz.initializeを実行する前にAdiz.setTestDevice(DEVICE_ID)を追加します。
- GDPR同意メッセージを書くと、GDPR同意ポップアップが正しく表示されることを確認するためにAdizを再初期化します。
- (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; // 子供向けの場合は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 | 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 = '2.1.3'
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設定から重複する値を削除する必要があります。
(Adiz 2.1.3 - 2025/01/21現在: 165)
<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>zmmz9fp6w.skadnetwork</string>
</dict>
<dict>
    <key>SKAdNetworkIdentifier</key>
    <string>ns5j362hk7.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の広告)として使用されます。広告タイプが最初に登録されると、最初に登録された広告がデフォルト広告になります。デフォルト広告を作成する際には、広告キー(hiveAdKey)を入力する必要はありません(initialize())。デフォルト広告を変更するには、コンソールから既存のデフォルト広告を削除し、新しい広告を登録する必要があります。
広告コールバックリスナーの設定¶
各広告インスタンスを作成する際にAdizListenerを実装することで、広告のステータスの変化に基づいてコールバックを受け取ることができます。
| 名前 | 説明 | 必要な実装 | 
|---|---|---|
| onLoad() | 広告の読み込みに成功しました | O | 
| onFail(error: AdizError) | 失敗(失敗の理由は error.getCode()とerror.getMessage()で確認できます) | O | 
| onShow() | 広告表示成功 | O | 
| onClick() | 広告クリック | O | 
| onPaidEvent(_ revenueData: AdRevenueData) | 広告の露出後に有料イベントが受信され、広告収益情報が伝達されるポイント | O | 
| onClose() | 広告終了 
 | 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() // 報酬アイテムの種類
                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]; // 報酬アイテムの種類
        NSInteger itemAmount = [rewardItem getItemAmount]; // 報酬アイテムの数量
}
@end
エラーコード¶
Adiz.InitializeおよびAdizListenerで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同意ポップアップを表示できないか、表示する必要がない状態です | 
広告の表示と広告の終了¶
広告を表示し、終了するには、以下の手順に従ってください。
- 表示したい広告の種類ごとに、広告クラスで広告インスタンスを作成します。表示したい広告がデフォルト広告でない場合は、初期化から取得した広告キーまたは配置IDを入力する必要があります。広告キー(hiveAdKey)または配置ID(placementId)を入力しない場合、デフォルトの広告インスタンスが作成されます。配置IDはHiveコンソールで設定でき、詳細についてはコンソールガイドのAdmob設定ページを参照してください。
- 表示したい広告をロードします(load())。
- ロードした広告を表示します(show())。広告を再表示するには、再度load()を呼び出し、その後show()を呼び出す必要があります。
- 広告を閉じるには、destroy()を呼び出します。
インタースティシャル広告¶
画面全体を占めるフルスクリーン広告です。
import UIKit
import HiveAdiz
class InitViewController: UIViewController {
        // インタースティシャル広告インスタンスを作成します。
        var interstitialAd: AdizInterstitial?
        func requestInitAd(hiveAdKey: String?) {
                if let adKey = hiveAdKey,
                        adKey.count > 0 {
                        // 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 {
        // Load AdizInterstitial
        if (self.interstitialAd != nil && [self.interstitialAd isInitialized]) {
                [self.interstitialAd load];
        }
}
- (void) requestShowAd {
        // AdizInterstitialを表示
        if (self.interstitialAd != nil && [self.interstitialAd isLoaded]) {
                [self.interstitialAd show];
        }
}
- (void) requestDestroyAd {
        // AdizInterstitialを破棄する
        if (self.interstitialAd != nil) {
                [self.interstitialAd destroy];
                self.interstitialAd = nil;
        }
}
#pragma mark - AdizListener
- (void) onLoad {
        // [self requestShowAd];
}
- (void) onFail:(AdizError *)error {
}
- (void) onShow {
}
- (void) onClick {
}
- (void) onPaidEvent:(AdRevenueData *)revenueData {
}
- (void) onClose {
        // [self requestDestroyAd];
}
@end
バナー広告 (Banner)¶
これは特定のサイズのバナーを表示するバナー広告です。バナー広告は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 {
        // 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 {
        // 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() {
                // 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時間が経過すると、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 don't request Show")
        }     
        func requestDestroyAd() {
                // Destroy AdizAppOpen
                self.appOpenAd?.destroy()
                self.appOpenAd = nil
        }
}
extension AppOpenViewController: AdizListener {
        func onLoad() {
        }    
        func onFail(_ error: AdizError) {
        }    
        func onShow() {
        }    
        func onClick() {
        }
        func onPaidEvent(_ revenueData: AdRevenueData) {
        }
        func onClose() {
                // requestDestroyAd()
        }
}
#import <UIKit/UIKit.h>
#import <HiveAdiz/HiveAdiz-Swift.h> 
@interface AppOpenViewController : UIViewController<AdizListener>
@property (nonatomic, strong) AdizAppOpen* appOpenAd;
@end
@implementation AppOpenViewController
- (void) requestInitAd: (NSString*)hiveAdKey {
        if (hiveAdKey != nil && ![hiveAdKey isEqualToString:@""]) {
                // AdizAppOpenインスタンスを初期化します (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 {
        // Destroy 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







