iOS
Adiz iOS¶
Adiz iOSは、Hiveによって提供されるiOS用の広告モジュールで、AdMobが提供する広告露出機能をより簡単に使用できるようにします。Adiz iOSが提供する広告の種類は以下の通りです:
- インタースティシャル広告
- バナー広告
- ネイティブ広告
- リワード広告
- リワードインタースティシャル広告
- アプリオープニング広告
Adiz iOSをインストールして使用するには、以下のガイドを順番に参照してください。
前提条件¶
Adiz iOS 開発環境を設定します。
インストール¶
XcodeプロジェクトのInfo.plistファイルにGADApplicationIdentifierキーを追加し、AdMobId値(ca-app-pub-XXXXX~YYYYY形式)をこのキーの値として追加します。
さらに、iOS 14以降では、<i>Info.plist</i>ファイルにSKAdNetworkリストを追加するために、info.plistを更新するガイドを参照してください。   
その後、プロジェクトのCocoaPods設定(Podfile)に以下を追加してください。
source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/Com2uSPlatformCorp/HiveAdiz-iOS.git'
platform :ios, '12.0'
target 'UnityFramework' do
  pod 'HiveAdizUnityPlugin', '2.0.1'
end
target 'Unity-iPhone' do
end
use_frameworks!
# fix for dyld issue in pods when using Project
post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      # xcode 15 Toolchain Issue
      xcconfig_path = config.base_configuration_reference.real_path
      xcconfig = File.read(xcconfig_path)
      xcconfig_mod = xcconfig.gsub(/DT_TOOLCHAIN_DIR/, "TOOLCHAIN_DIR")
      File.open(xcconfig_path, "w") { |file| file << xcconfig_mod }
      # end
      config.build_settings["BUILD_LIBRARY_FOR_DISTRIBUTION"] = "YES"
      if config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'].to_f < 12.0
        config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'
      end
    end
  end
end
$pod installを実行してCocoaPodの設定を適用します。
テスト広告の設定¶
Adizでは、テスト広告を2つの方法で表示できます。
- テストモードを有効にする: AdMobによって発行されたテスト広告のみを表示します。
- テストデバイスを登録し広告を表示する: テスト目的で実際の広告を表示します。テスト中に無効なトラフィックが発生しないように、テスト広告を表示するデバイスを登録してください。
テストモードを有効にする¶
開発段階では、テストモードを有効にして、テスト広告のクリックが広告主に料金を発生させないようにします。テストモードが有効になると、テスト広告のみが表示されます。テストモードでは、テスト広告を表示するためにHiveコンソールにAdMob広告キーを入力する必要はありません。商業配信のためにはテストモードを無効にしてください。
Note
開発段階でテストモードではないときに広告をクリックしすぎると、無効なトラフィックと見なされる可能性があり、あなたのAdMobアカウントが報告され、広告を表示できなくなることがあります。
広告表示のためのテストデバイスの設定¶
テスト広告を表示するためにテストデバイスを登録する必要がある状況は次のとおりです:
- Hive コンソールに登録された AdMob 広告キーが正しく機能しているかテストする場合
- GDPR メッセージを書いた後に GDPR 同意ポップアップが正しく機能していることを確認したい場合
- 広告リクエストを分析しデバッグするために Ad Inspector を実行する必要がある場合
テストデバイスを登録せずに実際の広告でテストすることは、無効なトラフィックと見なされる可能性があり、その結果、あなたのAdMobアカウントがブロックされ、広告を表示できなくなることがあります。テストデバイスを登録すると、広告表示中に「テストモード」または「テスト広告」(ネイティブ広告用)が表示されます。テストデバイスは、本番環境へのデプロイ時には無効にする必要があります。
テストデバイスを登録するには、まずテストデバイスIDを特定します。テストデバイスID(例: B74F6468-1516-467C-99AD-CC5973C5DB52)は、次の2つの方法を使用して見つけることができます:
- Adiz.Initialize()を呼び出した後にLogcatログを確認してください:
 - このデバイスのデバッグモードを有効にするには、次のように設定します: UMPDebugSettings.testDeviceIdentifiers = @[B74F6468-1516-467C-99AD-CC5973C5DB52]
- Adiz.Initialize()を呼び出した後、広告の種類に関係なく- initialize()→- load()を呼び出した後にLogcatログを確認してください:
 - GADMobileAds.sharedInstance().requestConfiguration.testDeviceIdentifiers = [ "B74F6468-1516-467C-99AD-CC5973C5DB52" ]
テストデバイスIDを特定した後、既存のAdiz初期化コードでAdiz.initializeを実行する前にAdiz.SetTestDevice(DEVICE_ID)の行を追加します。DEVICE_IDをコピーしたテストデバイスIDに置き換えます。
広告インスペクターの使用¶
広告インスペクターは、テストデバイス上で実際の広告をリクエストして表示するプロセスをリアルタイムで分析するためのアプリ内オーバーレイツールです。広告の読み込みにかかった時間を通知し、表示に失敗した場合はその理由を提供します。さらに、特定の広告ネットワークを指定して、広告が正しく表示されているかどうかを確認でき、問題がある場合はコードレベルでデバッグできます。これらのすべてのプロセスは、広告インスペクターUIを使用して実行されます。これは、Google Mobile Ads SDKのiOSバージョン7.68.0以上に含まれており、AdizDeveloperTool.OpenAdInspectorを呼び出すことで使用できます。
Ad Inspectorを使用するには、次の2つの条件を満たす必要があります:
Adiz appIDの設定¶
Hive コンソール AppCenter に登録した Adiz AppID を設定してください。これが設定されていない場合、バンドル 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を入力し、Localization file > Base.Iprojフォルダー > InfoPlist.stringsに指定された値を追加します。
次に、ローカリゼーションファイルに指定されたアプリユーザーからの許可承認を要求するメッセージを書いてください(一般設定 > 許可リクエスト設定)。許可リクエストポップアップメッセージを入力しない場合、ユーザーアクセス許可に関する追加説明ガイドが不足しているため、レビュー過程でアプリが拒否される可能性があります。
これが完了すると、ATT同意ポップアップが自動的に表示されます。ユーザーがATT同意ポップアップで「許可」をクリックすると、IDFAが有効になり、ユーザーにパーソナライズされた広告が表示されます。
GDPR同意ポップアップの表示(ヨーロッパおよび英国)¶
あなたのゲームがヨーロッパとUK(EEA & UK)を対象とする場合、GDPR(一般データ保護規則)同意ポップアップを表示する必要があります。GDPR同意ポップアップは、ユーザーのデバイスのIPアドレスがヨーロッパまたはUK(EEA & UK)からの場合にのみ表示されます。 Adizは、GDPR同意ポップアップを表示するために、GoogleのUMP(ユーザー メッセージング プラットフォーム)をサポートしています。
GDPRメッセージGDPR messageをAdMobコンソールで作成した後、ユーザーがヨーロッパおよび英国からアクセスすると、GDPRポップアップが表示されます。Adizを初期化するとき。
Warning
たとえヨーロッパやイギリス以外の地域を対象にしていても、Adizの初期化が正しく実行されるためには、AdMobコンソールでGDPRメッセージを作成する必要があります。
GDPRメッセージの作成¶
Google AdMobコンソールにアクセスしてGDPRメッセージを作成します。GDPRメッセージを作成する前に、GDPRメッセージ作成ガイドを参照してください。
GDPRメッセージを作成した後、GDPR同意ポップアップはAdizの初期化中に自動的に表示されます。
GDPR同意/撤回のオプションを実装する¶
GDPR同意ポップアップは、ユーザーがいつでも同意を変更できるようにする必要があります。たとえば、最初にGDPRに同意しなかったユーザーがパーソナライズされた広告を受け取りたい場合、同意することを希望するかもしれませんし、その逆もあります。このようなシナリオに対応するために、開発者はユーザーが再度同意するか、以前の同意を撤回する機能を実装する必要があります。GDPR同意/撤回機能を実装するには、以下の手順に従ってください:
- アプリにボタンUIを実装して、GDPR同意ポップアップウィンドウを再読み込みします。
- 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 = [AdizConsentManager isPrivacyOptionsRequired];
   // HiveAdiz 初期化    
   [Adiz initialize: targetViewController handler:^(AdizError * error, NSDictionary<NSString *,id> * json) {
       // ...
       // showPrivacyOptionsForm ボタンの有効チェック
       targetViewController.showPrivacyFormButton.enabled = [AdizConsentManager isPrivacyOptionsRequired];
       // ...
   }];
    } 
    (void)showPrivacyOptionsForm: (UIViewController*) targetViewController {
   // GDPRフォームを表示
   if ([AdizConsentManager isPrivacyOptionsRequired]) {
    [AdizConsentManager showPrivacyOptionsForm: targetViewController handler:^(AdizError *error) {
           // エラーハンドリングは必要ありません。
       }];
   }
    }
同意の年齢未満のタグを設定する¶
同意年齢(TFUA)の下にいるユーザーに対して、広告リクエストを構成することができます。ヨーロッパ経済地域(EEA)、イギリス、スイスに居住するユーザーを限定データ処理の対象とします。子供向けのアプリの場合、AdizConsentManager.SetUserPrivacySettingsを使用して、ユーザーが同意年齢未満であることを設定できます。ヨーロッパの国々にはいくつかの違いがありますが、GDPRは親の同意が必要な年齢を16歳未満と定義しています。同意年齢の設定は、Adiz.initializeを実行する前に構成する必要があります。
Warning
同意年齢未満のユーザーのためのGDPRタグsetTagForUnderAgeOfConsentと、子供向けのCOPPAタグsetTagForChildDirectedTreatmentの両方がtrueに設定されている場合、COPPAタグが優先されます。したがって、両方をtrueに設定して同時に使用しないでください。
Note
Hive SDK v4 24.2.0 以上を Adiz 2.0.1 以上と一緒に使用する場合、Hive SDK はユーザーの年齢に応じて同意年齢未満のユーザーに自動的にタグを適用します。したがって、AdizConsentManager.SetUserPrivacySettings を呼び出す必要はありません。
func initialize(_ appId: String) {
bool isTagForUnderAgeOfConsent = false // change this to true if the user is a child
let privacySet = PrivacySettings.Builder()
            .setTagForUnderAgeOfConsent(isTagForUnderAgeOfConsent)
AdizConsentManager.setUserPrivacySettings(privacySet.build())
// HiveAdiz 初期化
Adiz.initialize(targetViewController) { error, json in
        // ...
    }
}
(void)initialize: (NSString *)appId {
bool isTagForUnderAgeOfConsent = false; // change this to true if the user is a child
PrivacySettingsBuilder* privacySet = [[PrivacySettingsBuilder alloc] init];
privacySet = [builder setTagForUnderAgeOfConsent: isTagForUnderAgeOfConsent];
[AdizConsentManager setUserPrivacySettings: [privacySet build]];
// HiveAdiz 初期化
[Adiz initialize: targetViewController handler:^(AdizError * error, NSDictionary<NSString *,id> * json) {
        // ...
}];
}
GDPRテストデバイスの設定¶
GDPR同意ポップアップは、デバイスのIPアドレスがヨーロッパまたは英国からの場合にのみ表示されます。開発中は、GDPRテストデバイスを設定することで、デバイスのIPアドレスに関係なくGDPR同意ポップアップを強制的に表示させることができます。以下の手順に従ってGDPRテストデバイスを設定してください。以下の内容は、テストデバイスでの広告表示と同じです。
- 初期化 Adiz。この初期化の目的はテストデバイスIDを確認することであり、事前にGDPR同意メッセージを作成する必要はありません。
- Logcatのログ出力でデバイス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 // 子供向けの処理をする場合はtrueに変更してください
        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) {
                // ...
        }];
}
ad メディエーションを追加¶
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.0.1'
def adiz
  pod 'HiveAdiz', $HIVE_ADIZ_VERSION
end
def adizAdapter
  pod 'HiveAdizAdapterAppLovin', $HIVE_ADIZ_VERSION
  pod 'HiveAdizAdapterPangle', $HIVE_ADIZ_VERSION
  pod 'HiveAdizAdapterUnityAds', $HIVE_ADIZ_VERSION
  pod 'HiveAdizAdapterMeta', $HIVE_ADIZ_VERSION
end
target 'MyGame-mobile' do
  adiz
  adizAdapter
end
# ...
Adizアダプターの設定が正しく適用されることを確認するには、アプリを実行し、Ad Inspector画面の設定リストを確認してください。 
Adizの初期化¶
Adizの初期化は、あらゆる種類の広告を公開する前の重要なステップです。Adizを初期化すると、広告を表示するために必要な広告キーを受け取ることができます。テストモードが有効になっている場合、テストキーを受け取ります。Hive SDKを使用している場合は、AuthV4.setupを呼び出した後にAdizの初期化を進めてください。
Note
あなたのゲームがヨーロッパおよび英国(EEA & UK)地域を対象としていて、Hive SDKを使用していない場合、Adizの初期化を進める前にGDPRの同意が必要です。GDPRの同意を取得する方法の詳細については、Google AdMobガイドを確認してください。
import HiveAdiz
// Adizを初期化中
Adiz.initialize(targetViewController) { error, json in
        if error.isSuccess,
                let responseList = json?["keys"] as? [[String:Any]] {
                var interstitialKeyList = [String]()
                var bannerKeyList = [String]()
                var nativeKeyList = [String]()
                var rewardedKeyList = [String]()
                var rewardedInterstitialKeyList = [String]()
                var appOpenKeyList = [String]()
                for response in responseList {
                        if let isDefault = response["is_default"] as? Bool,
                                isDefault == false {
                                let hiveAdKey = response["key"] as? String ?? ""
                                let hiveForm = response["form"] as? String ?? ""
                                switch hiveForm {
                                case "interstitial": interstitialKeyList.append(hiveAdKey)
                                case "banner": bannerKeyList.append(hiveAdKey)
                                case "native": nativeKeyList.append(hiveAdKey)
                                case "rewarded": rewardedKeyList.append(hiveAdKey)
                                case "rewarded_interstitial": rewardedInterstitialKeyList.append(hiveAdKey)
                                case "app_open": appOpenKeyList.append(hiveAdKey)
                                default: break
                                }
                        }
                }
                print("interstitialKeyList \(interstitialKeyList)");
                print("bannerKeyList \(bannerKeyList)");
                print("nativeKeyList \(nativeKeyList)");
                print("rewardedKeyList \(rewardedKeyList)");
                print("rewardedInterstitialKeyList \(rewardedInterstitialKeyList)");
                print("appOpenKeyList \(appOpenKeyList)");
        }
}
#import <HiveAdiz/HiveAdiz-Swift.h> 
// Adizを初期化中
[Adiz initialize: targetViewController handler:^(AdizError * error, NSDictionary<NSString *,id> * json) {
        if([error isSuccess] && json[@"keys"] != nil) {
                NSArray* responseList = json[@"keys"];
                NSMutableArray<NSString*> *interstitialKeyList = [[NSMutableArray alloc] init];
                NSMutableArray<NSString*> *bannerKeyList = [[NSMutableArray alloc] init];
                NSMutableArray<NSString*> *nativeKeyList = [[NSMutableArray alloc] init];
                NSMutableArray<NSString*> *rewardedKeyList = [[NSMutableArray alloc] init];
                NSMutableArray<NSString*> *rewardedInterstitialKeyList = [[NSMutableArray alloc] init];
                NSMutableArray<NSString*> *appOpenKeyList = [[NSMutableArray alloc] init];
                for (NSDictionary* response in responseList) {
                        // これは、広告キーのリストを設定する例です(is_default = false)広告キーを直接設定したい場合。
                        if (response[@"is_default"] != nil && [response[@"is_default"] boolValue] == false) {
                                NSString* hiveAdKey = response[@"key"];
                                NSString* hiveForm = response[@"form"];
                                if ([hiveForm isEqualToString: @"interstitial"]) {
                                        [interstitialKeyList addObject: hiveAdKey];
                                } else if ([hiveForm isEqualToString: @"banner"]) {
                                        [bannerKeyList addObject: hiveAdKey];
                                } else if ([hiveForm isEqualToString: @"native"]) {
                                        [nativeKeyList addObject: hiveAdKey];
                                } else if ([hiveForm isEqualToString: @"rewarded"]) {
                                        [rewardedKeyList addObject: hiveAdKey];
                                } else if ([hiveForm isEqualToString: @"rewarded_interstitial"]) {
                                        [rewardedInterstitialKeyList addObject: hiveAdKey];
                                } else if ([hiveForm isEqualToString: @"app_open"]) {
                                        [appOpenKeyList addObject: hiveAdKey];
                                }
                        }
                }
                NSLog(@"interstitialKeyList %@", interstitialKeyList);
                NSLog(@"bannerKeyList %@", bannerKeyList);
                NSLog(@"nativeKeyList %@", nativeKeyList);
                NSLog(@"rewardedKeyList %@", rewardedKeyList);
                NSLog(@"rewardedInterstitialKeyList %@", rewardedInterstitialKeyList);
                NSLog(@"appOpenKeyList %@", appOpenKeyList);
        }
}];
コールバックとして受信したJSONファイルには、広告キーのリストが含まれています。広告キーリストの形式は次のとおりです:
    {
        "keys":[
            {
                "mediation_id":5,
                "key":"ca-app-pub-3940256099942544/5354046379",
                "form":"rewarded_interstitial",
                "is_default":true
            },
            {
                "mediation_id":4,
                "key":"ca-app-pub-3940256099942544/5224354917",
                "form":"rewarded",
                "is_default":true
            },
            {
                "mediation_id":3,
                "key":"ca-app-pub-3940256099942544/2247696110",
                "form":"native",
                "is_default":true
            },
            {
                "mediation_id":1,
                "key":"ca-app-pub-3940256099942544/1033173712",
                "form":"interstitial",
                "is_default":true
            },
            {
                "mediation_id":2,
                "key":"ca-app-pub-3940256099942544/6300978111",
                "form":"banner",
                "is_default":true
            },
            {
                "mediation_id":6,
                "key":"ca-app-pub-3940256099942544/9257395921",
                "form":"app_open",
                "is_default":true
            }
        ]
    }
テストモードで初期化すると、Hive コンソールにAdMobの広告キーを登録していなくても、テスト広告キーのリストが受け取れます。商業モードで初期化すると、Hive コンソールに登録されたAdMobの広告キーのリストが受け取れます。
各広告フォーマットには、デフォルト広告として1つの広告があります("is_default":trueの広告)。最初に登録された広告が、その広告フォーマットのデフォルト広告になります。デフォルト広告のインスタンスを作成する際(initialize())、広告キー(hiveAdKey)を入力する必要はありません。デフォルト広告を変更するには、Hive コンソールで既存のデフォルト広告を削除し、広告を再登録する必要があります。
広告コールバックリスナーの設定¶
広告インスタンスを作成する際にAdizListenerを実装することで、広告の状態変化に基づいてコールバックを受け取ることができます。
| 名前 | 説明 | 必須 | 
|---|---|---|
| onLoad() | 広告の読み込み成功 | O | 
| onFail(error: AdizError) | 失敗( error.getCode()およびerror.getMessage()を通じて失敗の理由を理解できます) | O | 
| onShow() | 広告の表示成功 | O | 
| onClick() | 広告がクリックされました | O | 
| onPaidEvent(_ revenueData: AdRevenueData) | 広告が表示された後に有料イベントが受信されるポイントです。この時点で、広告収益情報が提供されます。 | O | 
| onClose() | 広告が閉じられました * 広告が閉じられた後、同じ広告インスタンスを再度表示するには、 load()を呼び出してからshow()を呼び出す必要があります。* もはや広告を表示したくない場合は、 destroy()を呼び出して広告インスタンスを削除します。 | X | 
| onRewarded(_ rewardItem: RewardItem) | 報酬付き広告( 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() が受信されたときのエラーコードとエラーメッセージは次のとおりです:
一般的なコード¶
| 番号 | ケース | 説明 | 
|---|---|---|
| 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同意ポップアップを表示する必要がない、または表示できない | 
広告の露出と終了¶
広告を公開して終了するには、次の手順に従ってください:
- 公開したい広告の種類ごとに広告クラスから広告インスタンスを作成します。公開したい広告がデフォルト広告でない場合は、初期化から取得した広告キーを入力する必要があります。広告キー(hiveAdKey)を入力しない場合、デフォルトの広告インスタンスが作成されます。
- 公開したい広告を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 requestLoadAd() {
                // Load AdizInterstitial
                self.interstitialAd?.load()
        }
        func requestShowAd() {
                // AdizInterstitialを表示
                self.interstitialAd?.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) requestLoadAd {
        // Load AdizInterstitial
        if (self.interstitialAd != nil) {
                [self.interstitialAd load];
        }
}
- (void) requestShowAd {
        // AdizInterstitialを表示
        if (self.interstitialAd != nil) {
                [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 高さ) | 説明 | 対応デバイス | バナーサイズ定数 | 
|---|---|---|---|
| 320x50 | バナー | 携帯電話とタブレット | BannerSize.normal | 
| 320x100 | 大バナー | 携帯電話とタブレット | BannerSize.medium | 
| 300x250 | IABミディアムレクタングル | 携帯電話とタブレット | BannerSize.large | 
| 468x60 | 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 requestLoadAd() {
                // AdizBannerをロードします
                self.bannerAd?.load()
        }     func requestShowAd() {
                // 位置タイプを設定します
                var position: PositionType = .top
                // AdizBannerを表示
                self.bannerAd?.show(position)
        }     func requestDestroyAd() {
                // AdizBannerを破棄
                self.bannerAd?.destroy()
                self.bannerAd = nil
        }} extension BannerViewController: AdizListener {
        func onLoad() {
                // requestShowAd()
        }    func onFail(_ error: AdizError) {
        }    func onShow() {
        }    func onClick() {
        }    func onPaidEvent(_ revenueData: AdRevenueData) {    }}
#import <UIKit/UIKit.h>
#import <HiveAdiz/HiveAdiz-Swift.h>
@interface BannerViewController : UIViewController<AdizListener>
@property (nonatomic, strong) AdizBanner* bannerAd;
@end
@implementation BannerViewController
- (void) requestInitAd: (NSString*)hiveAdKey {
        // バナーサイズを設定
        BannerSize bannerSize = BannerSizeNormal;
        if (hiveAdKey != nil && ![hiveAdKey isEqualToString:@""]) {
                // AdizBannerインスタンスを初期化します (ViewController, hiveAdKey, BannerSize, AdizListener)
                self.bannerAd = [AdizBanner initialize:self hiveAdKey:hiveAdKey size: bannerSize adizListener:self];
        }    else {
                // デフォルトのAdizBannerインスタンスを初期化します (ViewController, BannerSize, AdizListener)
                self.bannerAd = [AdizBanner initialize:self size:bannerSize adizListener:self];
        }} - (void) requestLoadAd {
        // AdizBannerをロードします
        if (self.bannerAd != nil) {
                [self.bannerAd load];
        }} - (void) requestShowAd {
        // 位置タイプを設定します
        PositionType position = PositionTypeTop;
        // AdizBannerを表示
        if (self.bannerAd != nil) {
                [self.bannerAd show: position];
        }} - (void) requestDestroyAd {
        // AdizBannerを破棄
        if (self.bannerAd != nil) {
                [self.bannerAd destroy];
                self.bannerAd = nil;
        }} #pragma mark - AdizListener
- (void) onLoad {
        // [self requestShowAd];
} - (void) onFail:(AdizError *)error {
} - (void) onShow {
} - (void) onClick {
} - (void) onPaidEvent:(AdRevenueData *)revenueData {
} @end
ネイティブ広告¶
ネイティブ広告は、ネイティブテンプレートの特定のサイズを表示します。ネイティブ広告はポートレート画面に最適化されているため、ポートレートゲーム(縦画面ゲーム)での使用が推奨されます。ネイティブ広告は onClose() コールバックを受け取りません。したがって、広告を終了するには別の場所から destroy() を呼び出す必要があります。 
現在、テンプレートは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 requestLoadAd() {
                // Load AdizNative
                self.nativeAd?.load()
        }
        func requestShowAd() {
                // 位置タイプを設定
                var position: PositionType = .top
                // AdizNativeを表示
                self.nativeAd?.show(position)
        }
        func requestDestroyAd() {
                // Destroy AdizNative
                self.nativeAd?.destroy()
                self.nativeAd = nil
        }
}
extension NativeViewController: AdizListener {
        func onLoad() {
                // requestShowAd()
        }
        func onFail(_ error: AdizError) {
        }
        func onShow() {
        }
        func onClick() {
        }
        func onPaidEvent(_ revenueData: AdRevenueData) {
        }
}
#import <UIKit/UIKit.h>
#import <HiveAdiz/HiveAdiz-Swift.h>
@interface NativeViewController : UIViewController<AdizListener>
@property (nonatomic, strong) AdizNative* nativeAd;
@end
@implementation NativeViewController
- (void) requestInitAd: (NSString*)hiveAdKey {
        // バナーサイズを設定
        BannerSize bannerSize = BannerSizeNormal;
        if (hiveAdKey != nil && ![hiveAdKey isEqualToString:@""]) {
                // AdizNativeインスタンスを初期化 (ViewController, hiveAdKey, BannerSize, AdizListener)
                self.nativeAd = [AdizNative initialize:self hiveAdKey:hiveAdKey size: bannerSize adizListener:self];
        }
        else {
                // デフォルトのAdizNativeインスタンスを初期化 (ViewController, BannerSize, AdizListener)
                self.nativeAd = [AdizNative initialize:self size:bannerSize adizListener:self];
        }
}
- (void) requestLoadAd {
        // AdizNativeを読み込む
        if (self.nativeAd != nil) {
                [self.nativeAd load];
        }
}
- (void) requestShowAd {
        // 位置タイプを設定
        PositionType position = PositionTypeTop;
        // AdizNativeを表示
        if (self.nativeAd != nil) {
                [self.nativeAd show: position];
        }
}
- (void) requestDestroyAd {
        // AdizNativeを破棄します
        if (self.nativeAd != nil) {
                [self.nativeAd destroy];
                self.nativeAd = nil;
        }
}
#pragma mark - AdizListener
- (void) onLoad {
        // [self requestShowAd];
}
- (void) onFail:(AdizError *)error {
}
- (void) onShow {
}
- (void) onClick {
}
- (void) onPaidEvent:(AdRevenueData *)revenueData {
}
@end
リワード広告 (リワード)¶
これらは、ユーザーが一定の時間広告を視聴することで報酬を受け取るリワード広告です。報酬が発行されると、onRewarded() コールバックを通じて報酬アイテムに関する情報を受け取ります。
import UIKit
import HiveAdiz  
class RewardViewController: UIViewController {
        // AdizRewardedインスタンスを作成する
        var rewardAd: AdizRewarded?
        func requestInitAd(hiveAdKey: String?) {
                if let adKey = hiveAdKey,
                        adKey.count > 0 {
                        // AdizRewardedインスタンスを初期化 (ViewController, hiveAdKey, AdizListener)
                        self.rewardAd = AdizRewarded.initialize(self, hiveAdKey: adKey, adizListener: self)
                }
                else {
                        // デフォルトのAdizRewardedインスタンスを初期化 (ViewController, AdizListener)
                        self.rewardAd = AdizRewarded.initialize(self, adizListener: self)
                }
        }
        func requestLoadAd() {
                // Load AdizRewarded
                self.rewardAd?.load()
        }
        func requestShowAd() {
                // Show AdizRewarded
                self.rewardAd?.show()
        }
        func requestDestroyAd() {
                // Destroy AdizRewarded
                self.rewardAd?.destroy()
                self.rewardAd = nil
        }
}
extension RewardViewController: AdizListener {
        func onLoad() {
                // requestShowAd()
        }
        func onFail(_ error: AdizError) {
        }
        func onShow() {
        }
        func onClick() {
        }
        func onPaidEvent(_ revenueData: AdRevenueData) {
        }
        func onClose() {
                // requestDestroyAd()
        }
        func onRewarded(_ rewardItem: RewardItem) {
        }
}
#import <UIKit/UIKit.h>
#import <HiveAdiz/HiveAdiz-Swift.h> 
@interface RewardedViewController : UIViewController<AdizListener>
@property (nonatomic, strong) AdizRewarded* rewardedAd;
@end
@implementation RewardedViewController
- (void) requestInitAd: (NSString*)hiveAdKey {
        if (hiveAdKey != nil && ![hiveAdKey isEqualToString:@""]) {
                // AdizRewardedインスタンスを初期化します (ViewController, hiveAdKey, AdizListener)
                self.rewardedAd = [AdizRewarded initialize:self hiveAdKey:hiveAdKey adizListener:self];
        }
        else {
                // デフォルトのAdizRewardedインスタンスを初期化します (ViewController, AdizListener)
                self.rewardedAd = [AdizRewarded initialize:self adizListener:self];
        }
}
- (void) requestLoadAd {
        // Load AdizRewarded
        if (self.rewardedAd != nil) {
                [self.rewardedAd load];
        }
}
- (void) requestShowAd {
        // AdizRewardedを表示
        if (self.rewardedAd != nil) {
                [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 {
                        // Initialize AdizRewardedInterstitial Instance (ViewController, hiveAdKey, AdizListener)
                        self.rewardInterstitialAd = AdizRewardedInterstitial.initialize(self, hiveAdKey: adKey, adizListener: self)
                }
                else {
                        // Initialize Default AdizRewardedInterstitial Instance (ViewController, AdizListener)
                        self.rewardInterstitialAd = AdizRewardedInterstitial.initialize(self, adizListener: self)
                }    }     func requestLoadAd() {
                // Load AdizRewardedInterstitial
                self.rewardInterstitialAd?.load()
        }     func requestShowAd() {
                // Show AdizRewardedInterstitial
                self.rewardInterstitialAd?.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) requestLoadAd {
        // AdizRewardedInterstitialをロード
        if (self.rewardedInterstitialAd != nil) {
                [self.rewardedInterstitialAd load];
        }} - (void) requestShowAd {
        // AdizRewardedInterstitialを表示
        if (self.rewardedInterstitialAd != nil) {
                [self.rewardedInterstitialAd show];
        }} - (void) requestDestroyAd {
        // AdizRewardedInterstitialを破棄
        if (self.rewardedInterstitialAd != nil) {
                [self.rewardedInterstitialAd destroy];
                self.rewardedInterstitialAd = nil;
        }} #pragma mark - AdizListener
- (void) onLoad {
        // [self requestShowAd];
} - (void) onFail:(AdizError *)error {
} - (void) onShow {
} - (void) onClick {
} - (void) onPaidEvent:(AdRevenueData *)revenueData {
}
- (void) onClose {
        // [self requestDestroyAd];
}
- (void) onRewarded:(RewardItem *)rewardItem {
}
@end
アプリオープニング広告 (appopen)¶
アプリオープニング広告は、アプリの状態がバックグラウンドからフォアグラウンドに変更されたときに、事前にロードされた (load()) 広告を表示します。広告がロードされてから3時間後に show() が呼び出されると、広告は表示される前に自動的に再ロードされます。一度広告が表示されると、その後は自動的にロードされることはありません。
import UIKit
import HiveAdiz  
class AppOpenViewController: UIViewController {
        // AdizAppOpenインスタンスを作成する
        var appOpenAd: AdizAppOpen?
        func requestInitAd(hiveAdKey: String?) {
                if let adKey = hiveAdKey,
                        adKey.count > 0 {
                        // AdizAppOpenインスタンスを初期化します (ViewController, hiveAdKey, AdizListener)
                        self.appOpenAd = AdizAppOpen.initialize(self, hiveAdKey: adKey, adizListener: self)
                }
                else {
                        // デフォルトのAdizAppOpenインスタンスを初期化します (ViewController, AdizListener)
                        self.appOpenAd = AdizAppOpen.initialize(self, adizListener: self)
                }    }     func requestLoadAd() {
                // AdizAppOpenをロードします
                self.appOpenAd?.load()
        }     func requestShowAd() {
                print("[appOpenAd] appOpenAdは表示をリクエストしません")
        }     func requestDestroyAd() {
                // AdizAppOpenを破棄します
                self.appOpenAd?.destroy()
                self.appOpenAd = nil
        }
}
extension AppOpenViewController: AdizListener {
        func onLoad() {
        }    func onFail(_ error: AdizError) {
        }    func onShow() {
        }    func onClick() {
        }
        func onPaidEvent(_ revenueData: AdRevenueData) {
        }
        func onClose() {
                // requestDestroyAd()
        }
}
#import <UIKit/UIKit.h>
#import <HiveAdiz/HiveAdiz-Swift.h> 
@interface AppOpenViewController : UIViewController<AdizListener>
@property (nonatomic, strong) AdizAppOpen* appOpenAd;
@end
@implementation AppOpenViewController
- (void) requestInitAd: (NSString*)hiveAdKey {
        if (hiveAdKey != nil && ![hiveAdKey isEqualToString:@""]) {
                // AdizAppOpenインスタンスを初期化します (ViewController, hiveAdKey, AdizListener)
                self.appOpenAd = [AdizAppOpen initialize:self hiveAdKey:hiveAdKey adizListener:self];
        }    else {
                // デフォルトのAdizAppOpenインスタンスを初期化します (ViewController, AdizListener)
                self.appOpenAd = [AdizAppOpen initialize:self adizListener:self];
        }} - (void) requestLoadAd {
        // AdizAppOpenをロードします
        if (self.appOpenAd != nil) {
                [self.appOpenAd load];
        }} - (void) requestShowAd {
        NSLog(@"[appOpenAd] appOpenAdは表示をリクエストしません");
}
- (void) requestDestroyAd {
        // 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




