コンテンツにスキップ

Unity

Hive AdKit for ADOP: Unity

Hive AdKit for ADOP (以下 AdKit for ADOP) は ADOP の API を使用し、ADOP 開発ガイドに従って開発されました。AdKit for ADOP を Hive SDK または個別モジュールと共に使用すると、アナリティクスサーバーにログが送信され、別途広告分析作業を省略できます。 このガイドは Hive SDK ユーザーが ADOP が提供する Unity パッケージを適用する過程で発生するエラーを修正し、試行錯誤を減らし、使用の便利さを助けるために作成された AdKit for ADOP 適用ガイドです。AdKit for ADOP をサポートするバージョンと適用方法について学びましょう。

インストール

  1. ADOPの最新バージョンのAdKitをダウンロードしてインストールしてください。
  2. Unityツールバーの Assets > Import Package > Custom Package... から .unitypackage ファイルを選択し、Import をクリックしてください。
  3. インポートが完了した後、Assetsフォルダーの下に Hive AdKit および ADOP関連のファイルとフォルダーが生成されているか確認してください。
  4. EDM4Uの最新バージョンを ダウンロードしてインストールしてください。
    • Hive SDK v4にはEDM4Uが含まれています。Hive SDK v4を使用している場合、このステップは省略してください。
Warning

開発中にAdKitテストを行う際には必ずテスト広告キーを適用する必要があります。

アップデート

使用中のAdKitは削除して最新バージョンをインストールしてアップデートしてください。

設定

以下のオペレーティングシステム別ガイドに従ってAdKitを設定してください。

  • Android
    Unityプロジェクトに作成されたAssets/Plugins/Android/AndroidManifest.xmlファイルにca-app-pub-XXXXX~YYYYY形式の`AdMobId`値を追加してください。
    <application>
        <!-- AdKit -->
        <meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="ca-app-pub-XXXXX~YYYYY"/>
        <meta-data android:name="com.google.android.gms.ads.AD_MANAGER_APP" android:value="true" />
        <!-- AdKit -->
        </application>
    
  • iOS
    Unityビルド時に生成されたXcodeプロジェクトのInfo.plistファイルにGADApplicationIdentifierを追加し、ca-app-pub-XXXXX~YYYYY形式のAdMobId値をStringタイプで入力してください。
    <key>GADApplicationIdentifier</key>
    <string>ca-app-pub-XXXXX~YYYYY</string>
    
    iOS 14 以上では ADOPの SKAdNetwork リストを Info.plist ファイルに追加してください。 (Assets/Bidmad/Editor/BidmadPostProcessBuild.cs ファイルを使用してビルド時に自動的に追加されます。)

適用する

iOS PrivacyInfo

アプリ配布時にプライバシーに関するアンケートを作成するために必要な情報は、[Privacy Surveyガイド]を参照してください。(https://github.com/bidmad/Bidmad-iOS/wiki/Guide-for-Privacy-Manifest-&-Privacy-Survey-%5BKR%5D#앱-배포-및-개인정보-라벨-생성).

ADOP Proguard 設定

Proguardを使用している場合は、以下のADOP Proguard設定を追加する必要があります。

  -keep class com.adop.sdk.** { *; }
  -keep class ad.helper.openbidding.** { *; }
  -keep class com.adop.sdk.adapter.**{ *; }
  -keepnames class * implements java.io.Serializable
  -keepclassmembers class * implements java.io.Serializable {
      static final long serialVersionUID;
      private static final java.io.ObjectStreamField[] serialPersistentFields;
      !static !transient <fields>;
      private void writeObject(java.io.ObjectOutputStream);
      private void readObject(java.io.ObjectInputStream);
      java.lang.Object writeReplace();
      java.lang.Object readResolve();
  }
  -keepclassmembers class * {
      @android.webkit.JavascriptInterface <methods>;
  }

  # Pangle
  -keep class com.bytedance.sdk.** { *; }
  -keep class com.bykv.vk.openvk.component.video.api.** { *; }

  # Tapjoy
  -keep class com.tapjoy.** { *; }
  -keep class com.moat.** { *; }
  -keepattributes JavascriptInterface
  -keepattributes *Annotation*
  -keep class * extends java.util.ListResourceBundle {
  protected Object[][] getContents();
  }
  -keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
  public static final *** NULL;
  }
  -keepnames @com.google.android.gms.common.annotation.KeepName class *
  -keepclassmembernames class * {
  @com.google.android.gms.common.annotation.KeepName *;
  }
  -keepnames class * implements android.os.Parcelable {
  public static final ** CREATOR;
  }
  -keep class com.google.android.gms.ads.identifier.** { *; }
  -dontwarn com.tapjoy.**

ADOPテスト広告キー

ADOPで発行された広告キーを使用する必要があります。

    // ANDROID 환경
    public static string adopAppDomain =                    "common-serving-bidmad.adop.co.kr";
    public static string rewardVideoUnitId =                "7d9a2c9e-5755-4022-85f1-6d4fc79e4418";
    public static string InterstitialAdUnitId =             "e9acd7fc-a962-40e4-aaad-9feab1b4f821";
    public static string AdaptiveBannerAdUnitId =           "944fe870-fa3a-4d1b-9cc2-38e50b2aed43";

    // IOS 환경
    public static string adopAppDomain =                    "common-serving-bidmad.adop.co.kr";
    public static string rewardVideoUnitId =                "29e1ef67-98d2-47b3-9fa2-9192327dd75d";
    public static string InterstitialAdUnitId =             "228b95a9-6f42-46d8-a40d-60f17f751eb1";
    public static string AdaptiveBannerAdUnitId =           "1c3e3085-333f-45af-8427-2810c26a72fc";

    // 기타 환경 (모바일이 아닌 환경은 미지원)
    public static string adopAppDomain = "NotSuport";
    public static string rewardVideoUnitId = "NotSuport";
    public static string InterstitialAdUnitId = "NotSuport";
    public static string AdaptiveBannerAdUnitId = "NotSuport";

Hive AdKitの初期化

ADOP広告を初期化するには、adopAppDomainを必ず発行する必要があります。発行したadopAppDomainは、ADOP広告初期化メソッドの引数として使用する必要があります。

Warning

AdKit 1.5.1バージョンからは、従来使用していたAppKeyがAppDomainに変更されました。AppDomainは従来のAppKeyと互換性がないため、Hive AdKitの初期化には新しいAppDomainを取得する必要があります。 AppDomainに関する情報はテックラボプラットフォーム事業部運営チームにお問い合わせください。

Note

初期化を実行する際、ヨーロッパおよびイギリス(EEA & UK)地域の場合、GDPR同意ポップアップが自動的に表示されます。それ以外の地域では、初期化をすぐに実行します。

Warning

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

  • ゲームがヨーロッパおよびイギリス(EEA & UK)地域をターゲットにしている場合、GDPR同意ポップアップがGDPRメッセージ作成ガイドに従って設定されていることを確認してください。
  • // 상용 배포시
    HIVEAdKit.InitializeWithShowGDPRConsent(adopAppDomain, false, null, consentState => {
        /* 
        동의 = 1, 비동의 = 0, 알수없음 = -1, 필요없음 = -2
        초기화 완료 콜백으로 GDPR 동의 상태 결과 값 consentState가 전달됩니다. 결과값에 따른 별도 처리가 필요하지 않습니다. 
        */
        Debug.Log(TAG + "::InitializeWithShowGDPRConsent consentState : " + consentState);
    });
    
    // GDPR 테스트 사용시
    HIVEAdKit.GDPR.Reset();
    HIVEAdKit.InitializeWithShowGDPRConsent(adopAppDomain, true, testDeviceId, consentState => {
        /* 
        동의 = 1, 비동의 = 0, 알수없음 = -1, 필요없음 = -2
        초기화 완료 콜백으로 GDPR 동의 상태 결과 값 consentState가 전달됩니다. 결과값에 따른 별도 처리가 필요하지 않습니다. 
        */
        Debug.Log(TAG + "::InitializeWithShowGDPRConsent consentState : " + consentState);
    });
    

コールバックを使用する

Callbackを使用するためには、BidmadManagerをGameObjectとして登録する必要があります。

GameObject bidmadManager = new GameObject("BidmadManager");
bidmadManager.AddComponent<BidmadManager>();
DontDestroyOnLoad(bidmadManager);

付加情報設定機能

// GameDataの例
[Serializable]
public class SendInfo 
{
    public int level;
    public int gold;
}
SendInfo addtionalInfo = new SendInfo();
addtionalInfo.level = 1;
addtionalInfo.gold = 100;

// JSONオブジェクト形式で送信
HIVEAdKit.SetAdditionalInfo(JsonUtility.ToJson(addtionalInfo));

報酬型広告

一定時間以上広告視聴時に報酬が与えられる報酬型広告です。一度に一つの広告のみロードできます。

    // Set Event Callback
    EventHandlers eventHandlers = new EventHandlers.Builder()
                                                   .OnAdLoaded(OnAdLoadedCB)
                                                   .OnAdOpening(OnAdOpeningCB)
                                                   .OnAdClosed(OnAdClosedCB)
                                                   .OnAdFailed(OnAdFailedCB)
                                                   .OnAdReward(OnAdRewardCB)
                                                   .Build();
    
    // Create RewardVideoAd Instance
    RewardVideoAd = HIVEAdKit.RewardVideo.Initialize(rewardVideoUnitId, eventHandlers);
    
    // Load RewardVideoAd
    HIVEAdKit.RewardVideo.LoadAd(RewardVideoAd, "Unity-RewardVideo-Load-AdPlacementInfo");
    
    // Show RewardVideoAd
    if( HIVEAdKit.RewardVideo.IsLoaded(RewardVideoAd) ) {
       HIVEAdKit.RewardVideo.Show(RewardVideoAd, "Unity-RewardVideo-Show-AdPlacementInfo");
    }
    

インタースティシャルタイプ広告

画面全体を占めるフルスクリーン広告です。

    // Set Event Callback
    EventHandlers eventHandlers = new EventHandlers.Builder()
                                                   .OnAdLoaded(OnAdLoadedCB)
                                                   .OnAdOpening(OnAdOpeningCB)
                                                   .OnAdClosed(OnAdClosedCB)
                                                   .OnAdFailed(OnAdFailedCB)
                                                   .OnAdClick(OnAdClickCB)
                                                   .Build();
    
    // Create InterstitialAd Instance                                               
    InterstitialAd = HIVEAdKit.Interstitial.Initialize(InterstitialAdUnitId, eventHandlers);
    
    // Load InterstitialAd
    HIVEAdKit.Interstitial.LoadAd(InterstitialAd, "Unity-Interstitial-Load-AdPlacementInfo");
    
    // Show InterstitialAd
    if( HIVEAdKit.Interstitial.IsLoaded(InterstitialAd) ) {
       HIVEAdKit.Interstitial.Show(InterstitialAd, "Unity-Interstitial-Show-AdPlacementInfo");
    }
    

アダプティブバナータイプ広告

画面の一部を占めるロールバナーです。BannerPosition値または特定のyPos値を入力してバナーの位置を調整できます。 yPos値を入力してバナーの位置を調整する際、バナーの位置はBottom整列状態で指定したyPos値だけ上に移動します。

// BannerPosition을 사용하는 예제입니다.
// Set Event Callback
EventHandlers eventHandlers = new EventHandlers.Builder()
                                               .OnAdLoaded(OnAdLoadedCB)
                                               .OnAdClosed(OnAdClosedCB)
                                               .OnAdFailed(OnAdFailedCB)
                                               .OnAdClick(OnAdClickCB)
                                               .Build();

// Create AdaptiveBanner Instance at Top of View
AdaptiveBannerAd = HIVEAdKit.AdaptiveBanner.Initialize(AdaptiveBannerAdUnitId, HIVEAdKit.AdaptiveBanner.BannerPosition.Top, eventHandlers);

// Create AdaptiveBanner Instance at Bottom of View
AdaptiveBannerAd = HIVEAdKit.AdaptiveBanner.Initialize(AdaptiveBannerAdUnitId, HIVEAdKit.AdaptiveBanner.BannerPosition.Bottom, eventHandlers);

// Automatic Load & Show AdaptiveBanner
HIVEAdKit.AdaptiveBanner.LoadAd(AdaptiveBannerAd, "Unity-AdaptiveBanner-Load-AdPlacementInfo");

// Destroy AdaptiveBanner
HIVEAdKit.AdaptiveBanner.Destroy(AdaptiveBannerAd);


// yPos 값을 지정하여 사용하는 예제입니다.
// Set Event Callback
EventHandlers eventHandlers = new EventHandlers.Builder()
                                               .OnAdLoaded(OnAdLoadedCB)
                                               .OnAdClosed(OnAdClosedCB)
                                               .OnAdFailed(OnAdFailedCB)
                                               .OnAdClick(OnAdClickCB)
                                               .Build();

// Set yPos
var yPos  = 100;
AdaptiveBannerAd = HIVEAdKit.AdaptiveBanner.Initialize(AdaptiveBannerAdUnitId, yPos, eventHandlers);

// Automatic Load & Show AdaptiveBanner
HIVEAdKit.AdaptiveBanner.LoadAd(AdaptiveBannerAd, "Unity-AdaptiveBanner-Load-AdPlacementInfo");

// Destroy AdaptiveBanner
HIVEAdKit.AdaptiveBanner.Destroy(AdaptiveBannerAd);


テスト広告

開発中にはテスト広告をクリックしても広告主に費用が請求されないように設定することが重要です。テストモードでない状態で広告を過剰にクリックすると無効な活動と見なされ、その結果、該当アカウントが報告対象となる可能性があるため注意してください。テスト広告の利用方法はGoogle 開発者サイトで確認できます。

削除

Hive ADOPのためのAdKitを削除するには、以下のリストのUnityプロジェクト内のフォルダを削除してください。

    • 資産/Bidmad
    • 資産/HIVEAdKit
    • 資産/HIVEAdKit_Example