iOS
Adiz iOS¶
Adiz iOSは、AdMobが提供する広告表示機能をより便利に使用できるように、Hiveプラットフォームで提供されるiOS用広告モジュールです。Adiz iOSが提供する広告の形態は次のとおりです。
- インタースティシャル広告
- バナー広告
- ネイティブ広告
- 報酬型広告
- 報酬型インタースティシャル広告
- アプリオープニング広告
Adiz iOSをインストールして使用するには、以下のガイドを順番に参照してください。
事前準備¶
Adiz iOS開発環境を構成します。
インストール¶
XcodeプロジェクトのInfo.plistファイルにGADApplicationIdentifierキーを追加し、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.0'
end
target 'Unity-iPhone' do
end
use_frameworks!
# プロジェクトを使用する際のポッドのdyld問題の修正
post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      # xcode 15 ツールチェーンの問題
      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つあります。
- ハイブコンソールにテストデバイスを登録後、デモ広告に設定すること(推奨): 
 コンソールガイドのテストデバイス管理の内容を参照してください。
- AdizクラスのsetTestMode()メソッドを使用する:
 以下の例コードを参照してください。
Note
開発段階でテストモードでないときに広告を過剰にクリックすると、無効なトラフィックと見なされ、AdMobアカウントが報告され、広告が表示されなくなる可能性があります。
Adiz.setTestMode() メソッドの使用¶
テストデバイスに広告を表示¶
以下の状況では、テストデバイスを登録してテスト広告を表示する必要があります。
- コンソールに登録したAdMob広告キーが正常に動作するかテストする場合
- GDPRメッセージを作成し、GDPR同意ポップアップが正常に動作するか確認する場合
- 広告インスペクターを実行して広告リクエストを分析し、デバッグする場合
<
テストデバイスに広告を表示する方法は2つあります。
-  ハイブコンソールにテストデバイスを登録後、広告ユニットIDの使用に設定することをお勧めします: 
 コンソールガイドのテストデバイス管理の内容を参照してください。
-  Adiz クラスの setTestDevice()メソッドを使用する:
 以下の 例のコード を参照してください。
Note
テストデバイスを登録せずに実際の広告を表示するテストを行うと、無効なトラフィックと見なされ、AbMobアカウントがブロックされ、広告が表示されなくなる可能性があります。テストデバイスを登録すると、広告表示時に「Test Mode」または「Test Ad」(ネイティブ広告)が表示されます。商用配布時にはテストデバイスを無効にする必要があります。
Adiz.setTestDevice() メソッドの使用¶
テストデバイスを登録するには、まずテストデバイスIDを確認します。テストデバイスID(例: B74F6468-1516-467C-99AD-CC5973C5DB52)は以下の2つの方法で確認できます。
- Adiz.Initialize()呼び出し後にLogcatログを確認:
- Adiz.Initialize()呼び出し後、広告タイプに関係なく- initialize()→- load()を呼び出し、Logcatログを確認:
テストデバイスIDを確認後、既存の HiveAdiz初期化コードで Adiz.initialize を実行する前に Adiz.SetTestDevice(DEVICE_ID) の行を追加します。 DEVICE_ID にはコピーしたテストデバイスIDを入力します。
広告インスペクターの活用¶
広告インスペクターは、テストデバイス上で実際の広告をリクエストし、表示するプロセスをリアルタイムで分析するインアプリオーバーレイツールです。広告をロードするのにかかる時間を知らせ、表示に失敗した場合はその理由を教えてくれます。また、特定の広告ネットワークを指定して広告が適切に表示されるか確認でき、問題がある場合はコードレベルでデバッグが可能です。このすべてのプロセスは広告インスペクターUIとともに進行します。Google Mobile Ads SDK iOS 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(広告主識別子)メッセージを作成する必要があります。
AdMob ダッシュボードで以下のIDFAメッセージ作成ガイドに従ってメッセージを作成し、公開してください。
IDFAメッセージを作成し、投稿した後、ユーザー追跡アクセス権を設定します。以下の手順に従ってInfo.plistにキーを追加してください。
- Xcodeプロジェクトウィンドウのプロジェクトナビゲーターで、あなたのプロジェクトを選択してください。
- TARGETSリストからあなたのアプリを選択してください。
- Infoタブをクリックしてください。
- InfoタブのCustom iOS Target Properties項目をクリックしてください。
- Custom iOS Target Propertiesリストで右クリックしてください。
- Add Rowメニューをクリックしてください。
- Key項目にNSUserTrackingUsageDescriptionを入力し、Value項目には多言語設定ファイル > Base.Iprojフォルダー > InfoPlist.stringsに記載された値を追加します。
次に、多言語設定ファイル(一般設定 > アクセス権限リクエスト設定)に記載されたアプリユーザーに権限承認を求めるメッセージを作成してください。権限承認リクエストポップアップメッセージを入力しないと、使用中のユーザーアクセス権に関する追加説明ガイドが欠落し、アプリ審査時に拒否されることがあります。
ここまで完了したら、Adizの初期化時に自動的にATT同意ポップアップが表示されます。ATT同意ポップアップでユーザーが「許可」を押すと、IDFAが有効になり、ユーザー特化型広告が表示されます。
GDPR同意ポップアップの表示(ヨーロッパ、イギリス)¶
ゲームがヨーロッパおよびイギリス(EEA & UK)をターゲットにしている場合、GDPR(欧州連合一般データ保護規則)同意ポップアップを表示する必要があります。GDPR同意ポップアップは、ユーザーのデバイスのIPアドレスがヨーロッパおよびイギリス(EEA & UK)のIPアドレスである場合にのみ表示されます。AdizはGDPR同意ポップアップの表示のためにGoogle UMP(ユーザーメッセージングプラットフォーム)をサポートしています。AdMobコンソールでGDPRメッセージを作成した後に Adizを初期化 すると、ヨーロッパおよびイギリス地域からアクセスしたユーザーにGDPRポップアップが表示されます。
Warning
ヨーロッパおよびイギリス以外の地域をターゲットにする場合、例えば国内でのみサービスを計画している場合は、GDPR同意ポップアップの表示(ヨーロッパ、イギリス)ステップをスキップし、Adiz.initializeForNonGDPR()メソッドを使用して初期化を進めることができます。
 Adiz.initialize()メソッドを使用して初期化を進める場合、AdMobコンソールでGDPRメッセージを作成しなければAdizの初期化が正常に進行しません。
GDPRメッセージ作成¶
Google AdMobコンソールにアクセスしてGDPRメッセージを作成します。GDPRメッセージを作成する前に、まずGDPRメッセージ作成ガイドを参照してください。
GDPRメッセージを作成した場合、Adizの初期化時に自動的にGDPR同意ポップアップが表示されます。
Warning
Hive SDKを使用する場合は、Hive Adizの初期化を完了した後にAuthV4.setupを実行する必要があります。ATT(アプリ追跡透明性)同意通知を表示した後にGDPR同意画面が表示される場合、Appleのアプリ審査でアプリが拒否される可能性があります。
GDPR同意/撤回機能の実装¶
GDPR同意ポップアップにある項目は、ユーザーが同意の有無をいつでも修正できるように修正機能を提供する必要があります。例えば、ユーザーが最初はGDPRに同意しなかったが、カスタマイズ広告を見るために再度同意を希望する場合や、逆に最初はGDPRに同意したが、もう個人情報を提供したくないために同意を撤回したい場合があります。このような状況に対応するために、アプリ開発者は各項目に再同意または既存の同意を撤回する機能を実装する必要があります。GDPR同意/撤回機能を実装するには、次の手順に従います。
- GDPR同意ポップアップを再表示できるボタンUIをアプリに実装します。
- Adiz初期化を実装する際にisPrivacyOptionsRequired()を呼び出し、ヨーロッパおよびイギリスからアクセスするユーザーには上記のボタンUIを表示し、それ以外の場合は表示しないように実装します。ヨーロッパおよびイギリスからアクセスするユーザーが上記のボタンを押すとshowPrivacyOptionsFormを呼び出してGDPR同意ポップアップを再表示します。これにより、ユーザーはアプリ内でいつでも「Manage Options」のようなボタンを押して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)設定¶
GDPR同意年齢未満のユーザーのためのタグ(Tag For Under the Age of Consent, 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で設定した同意年齢未満ユーザーの有無が自動的に適用されるため、AdizConsentManager.SetUserPrivacySettingsを呼び出す必要はありません。
func initialize(_ appId: String) {
    bool isTagForUnderAgeOfConsent = false // 어린이인 경우 true로 변경
    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 初期化: targetViewController handler:^(AdizError * error, NSDictionary<NSString *,id> * json) {
        // ...
    }];
}
GDPRテストデバイス設定¶
GDPR同意ポップアップは、デバイスのIPアドレスがヨーロッパおよび英国の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同意メッセージを作成し、Adizを再初期化してGDPR同意ポップアップが正しく表示されるか確認します。
```swift
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
            // ...
    }
}
```
```obj
- (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の実行前に呼び出す必要があります。AdizとHive SDKを一緒に使用する場合、子供向け取扱いタグは自動的に適用されるため、特別な設定は必要ありません。
```swift
func initialize(_ appId: String) {
        bool isTagForChildDirectedTreatment = false // 어린이인 경우 true로 변경
        let privacySet = PrivacySettings.Builder()
                .setTagForChildDirectedTreatment(isTagForUnderAgeOfConsent)
        AdizConsentManager.setUserPrivacySettings(privacySet.build())
        // HiveAdiz 初期化
        Adiz.initialize(targetViewController) { error, json in
                // ...
        }
}
```
```obj
- (void)initialize: (NSString *)appId {
        bool isTagForChildDirectedTreatment = false; // 子供の場合はtrueに変更 
        PrivacySettingsBuilder* privacySet = [[PrivacySettingsBuilder alloc] init];
        privacySet = [builder setTagForChildDirectedTreatment: isTagForChildDirectedTreatment];
        [AdizConsentManager setUserPrivacySettings: [privacySet build]];
        // HiveAdiz 初期化
        [Adiz 初期化: 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.0'
def adiz
  pod 'HiveAdiz', $HIVE_ADIZ_VERSION
end
def adizAdapter
  pod 'HiveAdizAdapterAppLovin', $HIVE_ADIZ_VERSION
  pod 'HiveAdizAdapterPangle', $HIVE_ADIZ_VERSION
  pod 'HiveAdizAdapterUnityAds', $HIVE_ADIZ_VERSION
  pod 'HiveAdizAdapterMeta', $HIVE_ADIZ_VERSION
end
target 'MyGame-mobile' do
  adiz
  adizAdapter
end
# ...
Adizアダプターの構成が正しく適用されているか確認するために、アプリを実行後、広告検査機画面で構成リストを確認します。 
Adiz初期化¶
すべてのタイプの広告を表示する前に必ず実行する必要があるステップです。Adiz初期化を行うと、広告を表示するために必要な広告キーを受け取ることができます。テストモードを有効にしている場合は、テストキーを受け取ります。Hive SDKを使用している場合は、AuthV4.setupを呼び出した後にAdiz初期化を進めます。
Warning
GDPR設定を使用する場合、Hive Adizの初期化を完了した後にAuthV4.setupを実行する必要があります。ATT(APP Tracking Transparency)同意通知を表示した後にGDPR同意画面が表示されると、Appleのアプリ審査でアプリが拒否される可能性があります。
import HiveAdiz
// Hive Adizを初期化中
Adiz.initialize(targetViewController) { error, json in
        if error.isSuccess,
                let responseList = json?["keys"] as? [[String:Any]] {
                var interstitialKeyList = [String]()
                var bannerKeyList = [String]()
                var nativeKeyList = [String]()
                var rewardedKeyList = [String]()
                var rewardedInterstitialKeyList = [String]()
                var appOpenKeyList = [String]()
                for response in responseList {
                        if let isDefault = response["is_default"] as? Bool,
                                isDefault == false {
                                let hiveAdKey = response["key"] as? String ?? ""
                                let hiveForm = response["form"] as? String ?? ""
                                switch hiveForm {
                                case "interstitial": interstitialKeyList.append(hiveAdKey)
                                case "banner": bannerKeyList.append(hiveAdKey)
                                case "native": nativeKeyList.append(hiveAdKey)
                                case "rewarded": rewardedKeyList.append(hiveAdKey)
                                case "rewarded_interstitial": rewardedInterstitialKeyList.append(hiveAdKey)
                                case "app_open": appOpenKeyList.append(hiveAdKey)
                                default: break
                                }
                        }
                }
                print("interstitialKeyList \(interstitialKeyList)");
                print("bannerKeyList \(bannerKeyList)");
                print("nativeKeyList \(nativeKeyList)");
                print("rewardedKeyList \(rewardedKeyList)");
                print("rewardedInterstitialKeyList \(rewardedInterstitialKeyList)");
                print("appOpenKeyList \(appOpenKeyList)");
        }
}
#import <HiveAdiz/HiveAdiz-Swift.h>
// Hive Adizの初期化
[Adiz initialize: targetViewController handler:^(AdizError * error, NSDictionary<NSString *,id> * json) {
        if([error isSuccess] && json[@"keys"] != nil) {
                NSArray* responseList = json[@"keys"];
                NSMutableArray<NSString*> *interstitialKeyList = [[NSMutableArray alloc] init];
                NSMutableArray<NSString*> *bannerKeyList = [[NSMutableArray alloc] init];
                NSMutableArray<NSString*> *nativeKeyList = [[NSMutableArray alloc] init];
                NSMutableArray<NSString*> *rewardedKeyList = [[NSMutableArray alloc] init];
                NSMutableArray<NSString*> *rewardedInterstitialKeyList = [[NSMutableArray alloc] init];
                NSMutableArray<NSString*> *appOpenKeyList = [[NSMutableArray alloc] init];
                for (NSDictionary* response in responseList) {
                        // これは、広告キーのリストを設定する例です(is_default = false)で、広告キーを直接設定したいときに使用します。
                        if (response[@"is_default"] != nil && [response[@"is_default"] boolValue] == false) {
                                NSString* hiveAdKey = response[@"key"];
                                NSString* hiveForm = response[@"form"];
                                if ([hiveForm isEqualToString: @"interstitial"]) {
                                        [interstitialKeyList addObject: hiveAdKey];
                                } else if ([hiveForm isEqualToString: @"banner"]) {
                                        [bannerKeyList addObject: hiveAdKey];
                                } else if ([hiveForm isEqualToString: @"native"]) {
                                        [nativeKeyList addObject: hiveAdKey];
                                } else if ([hiveForm isEqualToString: @"rewarded"]) {
                                        [rewardedKeyList addObject: hiveAdKey];
                                } else if ([hiveForm isEqualToString: @"rewarded_interstitial"]) {
                                        [rewardedInterstitialKeyList addObject: hiveAdKey];
                                } else if ([hiveForm isEqualToString: @"app_open"]) {
                                        [appOpenKeyList addObject: hiveAdKey];
                                }
                        }
                }
                NSLog(@"interstitialKeyList %@", interstitialKeyList);
                NSLog(@"bannerKeyList %@", bannerKeyList);
                NSLog(@"nativeKeyList %@", nativeKeyList);
                NSLog(@"rewardedKeyList %@", rewardedKeyList);
                NSLog(@"rewardedInterstitialKeyList %@", rewardedInterstitialKeyList);
                NSLog(@"appOpenKeyList %@", appOpenKeyList);
        }
}];
初期化実行時にコールバックとして受け取るJSONファイルには広告キーのリストがあります。広告キーのリストは次のような形式になります。
 
    {
        "keys":[
            {
                "mediation_id":5,
                "key":"ca-app-pub-3940256099942544/5354046379",
                "form":"rewarded_interstitial",
                "is_default":true,
                "placement_id":"lobby01"
            },
            {
                "mediation_id":4,
                "key":"ca-app-pub-3940256099942544/5224354917",
                "form":"rewarded",
                "is_default":true,
                "placement_id":"game02"
            },
            {
                "mediation_id":3,
                "key":"ca-app-pub-3940256099942544/2247696110",
                "form":"native",
                "is_default":true,
                "placement_id":"event01"
            },
            {
                "mediation_id":1,
                "key":"ca-app-pub-3940256099942544/1033173712",
                "form":"interstitial",
                "is_default":true,
                "placement_id":"mission01"
            },
            {
                "mediation_id":2,
                "key":"ca-app-pub-3940256099942544/6300978111",
                "form":"banner",
                "is_default":true,
                "placement_id":"main01"
            },
            {
                "mediation_id":6,
                "key":"ca-app-pub-3940256099942544/9257395921",
                "form":"app_open",
                "is_default":true,
                "placement_id":"appopen01"
            }
        ]
    }
テストモードで初期化すると、AdMob広告キーをコンソールに登録していなくてもテスト用広告キーのリストを受け取ります。商用モードで初期化すると、コンソールに登録したAdMob広告キーのリストを受け取ります。
広告の形態(form)ごとに1つの広告は基本広告("is_default":trueの広告)として使用されます。どの広告形態を最初に登録した場合、その最初に登録した広告が基本広告になります。基本広告は、広告インスタンスを生成(initialize())する際に広告キー(hiveAdKey)を入力する必要はありません。基本広告を変更するには、コンソールで既存の基本広告を削除し、新たに広告を登録する必要があります。
広告コールバックリスナーの設定¶
各広告インスタンスを生成する際にAdizListenerを実装すると、広告の状態変化に応じてコールバックを受け取ることができます。
| 名称 | 説明 | 必須実装 | 
|---|---|---|
| onLoad() | 広告ロード成功 | O | 
| onFail(error: AdizError) | 失敗( error.getCode()とerror.getMessage()で失敗の理由がわかる) | O | 
| onShow() | 広告の表示成功 | O | 
| onClick() | 広告クリック | O | 
| onPaidEvent(_ revenueData: AdRevenueData) | 広告表示後にpaid eventを受け取るタイミングで、広告収益情報が伝達される | 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(@"amount: %ld type: %@", (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 | 無効なUnit Id | 
| -107 | MediationNoFill | メディエーションアダプタが広告リクエストを処理できませんでした | 
| -108 | AlreadyLoaded | すでにロードされた状態 | 
| -109 | CannotRequestAds | 広告をリクエストできません | 
| -201 | GdprConsentError | GDPR同意エラー | 
| -202 | IsNotPrivacyOptionsRequired | GDPR同意ポップアップを表示できないか、表示しなくてもよい状態です | 
広告の表示と広告の終了¶
広告を表示し、終了するには、次の手順に従ってください。
- 表示したい広告の形式ごとに広告クラスで広告インスタンスを生成します。表示したい広告が 基本広告 でない場合は、 初期化 で取得した広告キーまたは位置IDを入力する必要があります。広告キー(hiveAdKey)または位置ID(placementId)を入力しないと、基本広告インスタンスが生成されます。位置IDはハイブコンソールで設定でき、詳細はコンソールガイドの 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 {
                        // Initialize AdizInterstitial Instance (ViewController, placementId, AdizListener)
                        self.interstitialAd = AdizInterstitial.initializeWithPlacementId(self, placementId: placementId, adizListener: self)
                }
                else {
                        // Initialize Default AdizInterstitial Instance (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
バナー広告 (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 {
        // 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
ネイティブ広告 (Native)¶
特定のサイズのネイティブテンプレートを表示するネイティブ広告です。ネイティブ広告は縦画面に最適化されているため、縦型ゲーム(縦画面ゲーム)での使用を推奨します。ネイティブ広告は onClose() コールバックを受け取ることはありません。したがって、他の場所で destroy() を呼び出して広告を終了する必要があります。
現在のテンプレートはsmallまたはmediumサイズをサポートしています。
| サイズポイント (幅x高さ) | テンプレート | 配置 | BannerSize 定数 | 
|---|---|---|---|
| 355x91 (比率調整) | small サイズ | Top / Bottom | BannerSize.normal | 
| 355x370 (比率調整) | medium サイズ | Center (固定) | BannerSize.medium, BannerSize.large, BannerSize.full | 
small テンプレートでの PositionType は最上部または最下部であり、デフォルトは最下部です。
| 整列 | 説明 | PositionType 定数 | 
|---|---|---|
| 最上部整列 | 画面最上部整列指定 | PositionType.top | 
| 最下部整列 (デフォルト) | 画面最下部整列指定 | PositionType.bottom | 
medium テンプレートは整列を選択できず、デフォルトで中央揃えを使用します。
import UIKit
import HiveAdiz
class NativeViewController: UIViewController {
        // AdizNativeインスタンスを作成する
        var nativeAd: AdizNative?
        func requestInitAd(hiveAdKey: String?) {
                // バナーサイズを設定
                var bannerSize: BannerSize = .normal
                if let adKey = hiveAdKey,
                        adKey.count > 0 {
                        // AdizNativeインスタンスを初期化します (ViewController, hiveAdKey, BannerSize, AdizListener)
                        self.nativeAd = AdizNative.initialize(self, hiveAdKey: adKey, size: bannerSize, adizListener: self)
                }
                else {
                        // デフォルトのAdizNativeインスタンスを初期化します (ViewController, BannerSize, AdizListener)
                        self.nativeAd = AdizNative.initialize(self, size: bannerSize, adizListener: self)
                }
        }
        func requestInitAdWithPlacementId(placementId: String?) {
                // バナーサイズを設定
                var bannerSize: BannerSize = .normal
                if let placementId = placementId,
                        placementId.count > 0 {
                        // AdizNativeインスタンスを初期化します (ViewController, placementId, BannerSize, AdizListener)
                        self.nativeAd = AdizNative.initializeWithPlacementId(self, placementId: placementId, size: bannerSize, adizListener: self)
                }
                else {
                        // デフォルトのAdizNativeインスタンスを初期化します (ViewController, BannerSize, AdizListener)
                        self.nativeAd = AdizNative.initialize(self, size: bannerSize, adizListener: self)
                }
        }
        func requestLoadAd() {
                // Load AdizNative
                if let ad = self.nativeAd,
                    ad.isInitialized() {
                        ad.load()
                }
        }
        func requestShowAd() {
                // 位置タイプを設定
                var position: PositionType = .top
                // AdizNativeを表示
                if let ad = self.nativeAd,
                    ad.isLoaded() {
                        ad.show(position)
                }
        }
        func requestDestroyAd() {
                // Destroy AdizNative
                self.nativeAd?.destroy()
                self.nativeAd = nil
        }
}
extension NativeViewController: AdizListener {
        func onLoad() {
                // requestShowAd()
        }
        func onFail(_ error: AdizError) {
        }
        func onShow() {
        }
        func onClick() {
        }
        func onPaidEvent(_ revenueData: AdRevenueData) {
        }
}
#import <UIKit/UIKit.h>
#import <HiveAdiz/HiveAdiz-Swift.h>
@interface NativeViewController : UIViewController<AdizListener>
@property (nonatomic, strong) AdizNative* nativeAd;
@end
@implementation NativeViewController
- (void) requestInitAd: (NSString*)hiveAdKey {
        // バナーサイズを設定
        BannerSize bannerSize = BannerSizeNormal;
        if (hiveAdKey != nil && ![hiveAdKey isEqualToString:@""]) {
                // AdizNativeインスタンスを初期化します(ViewController、hiveAdKey、BannerSize、AdizListener)
                self.nativeAd = [AdizNative initialize:self hiveAdKey:hiveAdKey size: bannerSize adizListener:self];
        }
        else {
                // デフォルトのAdizNativeインスタンスを初期化します(ViewController、BannerSize、AdizListener)
                self.nativeAd = [AdizNative initialize:self size:bannerSize adizListener:self];
        }
}
- (void) requestInitAdWithPlacementId: (NSString*)placementId {
        // バナーサイズを設定
        BannerSize bannerSize = BannerSizeNormal;
        if (placementId != nil && ![placementId isEqualToString:@""]) {
                // AdizNativeインスタンスを初期化します (ViewController, placementId, BannerSize, AdizListener)
                self.nativeAd = [AdizNative initializeWithPlacementId:self placementId:placementId size: bannerSize adizListener:self];
        }
        else {
                // デフォルトのAdizNativeインスタンスを初期化します (ViewController, BannerSize, AdizListener)
                self.nativeAd = [AdizNative initialize:self size:bannerSize adizListener:self];
        }
}
- (void) requestLoadAd {
        // AdizNativeを読み込む
        if (self.nativeAd != nil && [self.nativeAd isInitialized]) {
                [self.nativeAd load];
        }
}
- (void) requestShowAd {
        // 位置タイプを設定
        PositionType position = PositionTypeTop;
        // AdizNativeを表示
        if (self.nativeAd != nil && [self.nativeAd isLoaded]) {
                [self.nativeAd show: position];
        }
}
- (void) requestDestroyAd {
        // Destroy AdizNative
        if (self.nativeAd != nil) {
                [self.nativeAd destroy];
                self.nativeAd = nil;
        }
}
#pragma mark - AdizListener
- (void) onLoad {
        // [self requestShowAd];
}
- (void) onFail:(AdizError *)error {
}
- (void) onShow {
}
- (void) onClick {
}
- (void) onPaidEvent:(AdRevenueData *)revenueData {
}
@end
報酬型広告 (Rewarded)¶
ユーザーが広告を一定時間以上視聴すると報酬を受け取る報酬型広告です。報酬の支払いが完了すると onRewarded() コールバックで報酬アイテムの情報を受け取ります。
import UIKit
import HiveAdiz  
class RewardViewController: UIViewController {
        // AdizRewarded インスタンスを作成する
        var rewardAd: AdizRewarded?
        func requestInitAd(hiveAdKey: String?) {
                if let adKey = hiveAdKey,
                        adKey.count > 0 {
                        // AdizRewardedインスタンスを初期化します (ViewController, hiveAdKey, AdizListener)
                        self.rewardAd = AdizRewarded.initialize(self, hiveAdKey: adKey, adizListener: self)
                }
                else {
                        // デフォルトのAdizRewardedインスタンスを初期化します (ViewController, AdizListener)
                        self.rewardAd = AdizRewarded.initialize(self, adizListener: self)
                }
        }
        func 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() {
                // AdizRewardedを表示
                if let ad = self.rewardAd,
                    ad.isLoaded() {
                        ad.show()
                }
        }
        func requestDestroyAd() {
                // Destroy AdizRewarded
                self.rewardAd?.destroy()
                self.rewardAd = nil
        }
}
extension RewardViewController: AdizListener {
        func onLoad() {
                // requestShowAd()
        }
        func onFail(_ error: AdizError) {
        }
        func onShow() {
        }
        func onClick() {
        }
        func onPaidEvent(_ revenueData: AdRevenueData) {
        }
        func onClose() {
                // requestDestroyAd()
        }
        func onRewarded(_ rewardItem: RewardItem) {
        }
}
#import <UIKit/UIKit.h>
#import <HiveAdiz/HiveAdiz-Swift.h>
@interface RewardedViewController : UIViewController<AdizListener>
@property (nonatomic, strong) AdizRewarded* rewardedAd;
@end
@implementation RewardedViewController
- (void) requestInitAd: (NSString*)hiveAdKey {
        if (hiveAdKey != nil && ![hiveAdKey isEqualToString:@""]) {
                // AdizRewardedインスタンスを初期化します (ViewController, hiveAdKey, AdizListener)
                self.rewardedAd = [AdizRewarded initialize:self hiveAdKey:hiveAdKey adizListener:self];
        }
        else {
                // デフォルトのAdizRewardedインスタンスを初期化します (ViewController, AdizListener)
                self.rewardedAd = [AdizRewarded initialize:self adizListener:self];
        }
}
- (void) requestInitAdWithPlacementId: (NSString*)placementId {
        if (placementId != nil && ![placementId isEqualToString:@""]) {
                // AdizRewardedインスタンスを初期化します (ViewController, placementId, AdizListener)
                self.rewardedAd = [AdizRewarded initializeWithPlacementId:self placementId:placementId adizListener:self];
        }
        else {
                // デフォルトのAdizRewardedインスタンスを初期化します (ViewController, AdizListener)
                self.rewardedAd = [AdizRewarded initialize:self adizListener:self];
        }
}
- (void) requestLoadAd {
        // Load AdizRewarded
        if (self.rewardedAd != nil && [self.rewardedAd isInitialized]) {
                [self.rewardedAd load];
        }
}
- (void) requestShowAd {
        // AdizRewardedを表示
        if (self.rewardedAd != nil && [self.rewardedAd isLoaded]) {
                [self.rewardedAd show];
        }
}
- (void) requestDestroyAd {
        // AdizRewardedを破棄
        if (self.rewardedAd != nil) {
                [self.rewardedAd destroy];
                self.rewardedAd = nil;
        }
}
#pragma mark - AdizListener
- (void) onLoad {
        // [self requestShowAd];
}
- (void) onFail:(AdizError *)error {
}
- (void) onShow {
} 
- (void) onClick {
} 
- (void) onPaidEvent:(AdRevenueData *)revenueData {
}
- (void) onClose {
        // [self requestDestroyAd];
}
- (void) onRewarded:(RewardItem *)rewardItem {
}
@end
報酬型インタースティシャル広告 (Rewarded Interstitial)¶
ユーザーが広告を一定時間以上視聴すると報酬を受け取る報酬型インタースティシャル広告です。報酬の支払いが完了すると、onRewarded() コールバックで報酬アイテムの情報を受け取ります。
import UIKit
import HiveAdiz  
class RewardInterstitialViewController: UIViewController {
        // AdizRewardedInterstitial インスタンスを作成する
        var rewardInterstitialAd: AdizRewardedInterstitial?
        func requestInitAd(hiveAdKey: String?) {
                if let adKey = hiveAdKey,
                        adKey.count > 0 {
                        // 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 {
                        // AdizAppOpen インスタンスを初期化します (ViewController, placementId, AdizListener)
                        self.appOpenAd = AdizAppOpen.initializeWithPlacementId(self, placementId: placementId, adizListener: self)
                }
                else {
                        // デフォルトの AdizAppOpen インスタンスを初期化します (ViewController, AdizListener)
                        self.appOpenAd = AdizAppOpen.initialize(self, adizListener: self)
                }    
        }   
        func requestLoadAd() {
                // Load AdizAppOpen
                if let ad = self.appOpenAd,
                    ad.isInitialized() {
                        ad.load()
                }
        }     
        func requestShowAd() {
                print("[appOpenAd] appOpenAd は表示を要求しません")
        }     
        func requestDestroyAd() {
                // Destroy AdizAppOpen
                self.appOpenAd?.destroy()
                self.appOpenAd = nil
        }
}
extension AppOpenViewController: AdizListener {
        func onLoad() {
        }    
        func onFail(_ error: AdizError) {
        }    
        func onShow() {
        }    
        func onClick() {
        }
        func onPaidEvent(_ revenueData: AdRevenueData) {
        }
        func onClose() {
                // requestDestroyAd()
        }
}
#import <UIKit/UIKit.h>
#import <HiveAdiz/HiveAdiz-Swift.h>
@interface AppOpenViewController : UIViewController<AdizListener>
@property (nonatomic, strong) AdizAppOpen* appOpenAd;
@end
@implementation AppOpenViewController
- (void) requestInitAd: (NSString*)hiveAdKey {
        if (hiveAdKey != nil && ![hiveAdKey isEqualToString:@""]) {
                // AdizAppOpenインスタンスを初期化します (ViewController, hiveAdKey, AdizListener)
                self.appOpenAd = [AdizAppOpen initialize:self hiveAdKey:hiveAdKey adizListener:self];
        }
        else {
                // デフォルトのAdizAppOpenインスタンスを初期化します (ViewController, AdizListener)
                self.appOpenAd = [AdizAppOpen initialize:self adizListener:self];
        }
} 
- (void) requestInitAdWithPlacementId: (NSString*)placementId {
        if (placementId != nil && ![placementId isEqualToString:@""]) {
                // AdizAppOpenインスタンスを初期化します (ViewController, placementId, AdizListener)
                self.appOpenAd = [AdizAppOpen initializeWithPlacementId:self placementId:placementId adizListener:self];
        }
        else {
                // デフォルトのAdizAppOpenインスタンスを初期化します (ViewController, AdizListener)
                self.appOpenAd = [AdizAppOpen initialize:self adizListener:self];
        }
} 
- (void) requestLoadAd {
        // Load AdizAppOpen
        if (self.appOpenAd != nil && [self.appOpenAd isInitialized]) {
                [self.appOpenAd load];
        }
} 
- (void) requestShowAd {
        NSLog(@"[appOpenAd] appOpenAdは表示をリクエストしません");
}
- (void) requestDestroyAd {
        // AdizAppOpenを破棄します
        if (self.appOpenAd != nil) {
                [self.appOpenAd destroy];
                self.appOpenAd = nil;
        }
} 
#pragma mark - AdizListener
- (void) onLoad {
} 
- (void) onFail:(AdizError *)error {
} 
- (void) onShow {
} 
- (void) onClick {
} 
- (void) onPaidEvent:(AdRevenueData *)revenueData {
}
- (void) onClose {
        // [self requestDestroyAd];
}
@end






