Unity
ADOP用AdKit: Unity¶
ADOP用AdKit(以下、ADOP用AdKit)は、ADOPのAPIを使用し、ADOPのガイドラインに従って開発された広告モジュールです。Hive SDKと共にAdKitを使用すると、ログデータがAnalyticsサーバーに送信され、広告の分析をスキップできます。
このガイドでは、AdKitの実装方法を説明し、Unityパッケージを統合する際に発生するエラーを修正することで、より簡単にします。AdKitの使用方法やサポートSDKについては、このページをお読みください。
インストール¶
- ここからADOP用の最新バージョンのAdKitをダウンロードしてインストールします。
-
Unityのツールバーで、Assets > Import Package > Custom Package...の下にある.unitypackageファイルを選択し、Importをクリックします。
-
インポート後、Assetsフォルダの下にAdKitおよびADOP関連のファイルとフォルダが作成されているか確認してください。
- 最新版のEDM4Uをこちらからダウンロードしてインストールしてください。
- Hive SDK v4を使用している場合、EDM4Uが含まれているため、このステップはスキップできます。
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を入力します。
iOS 14以降、Info.plistにSKAdNetworkItemsを追加します。(Assets/Bidmad/Editor/BidmadPostProcessBuild.csファイルを使用してビルドする場合、SKAdNetworkIdentifierは自動的に追加されます。)
使い方¶
iOS¶
iOSプロジェクトをビルドすると、UnityはDynamicFrameworkとして動作するUnityFrameworkターゲットを生成します。
- EDM4Uの設定 (バージョン1.2.179に基づく)
UnityエディタのiOS Resolver Settings(メニュー: Assets > External Dependency Manager > iOS Resolver > Settings)でstatic_frameworkをビルドするように設定されていることを確認してください。
- Assets/HIVEAdKit/Editor/AdKitPostprocess.csファイルで、
dynamicFramework
をインポートする行のコメントを解除します。行の位置は以下の通りです。
(string Name, string Source)[] dynamicFrameworks = {
//("FBLPromises.xcframework", "Libraries/Bidmad/Plugins/iOS"),
("OMSDK_Pubmatic.xcframework","Pods/OpenWrapSDK/OpenWrapSDK"),
//("ADOPUtility.xcframework", "Pods/ADOPUtility"),
//("OMSDK_Teadstv.xcframework", "Pods/TeadsSDK/Frameworks"),
//("TeadsSDK.xcframework", "Pods/TeadsSDK/Frameworks"),
//("IASDKCore.xcframework", "Pods/Fyber_Marketplace_SDK/IASDKCore"),
//("AdFitSDK.framework","Pods/AdFitSDK/Frameworks")
};
- プロジェクトをビルドします。ビルドが完了したら、プロジェクトのルートパスにあるPodfileを開いてファイル設定を確認します。
source 'https://github.com/Com2uSPlatformCorp/HiveAdKit-iOS.git'
source 'https://cdn.cocoapods.org/'
platform :ios, '12.0'
target 'UnityFramework' do
pod 'BidmadAdFitAdapter', '3.12.7.4'
pod 'BidmadADOPCoupangAdapter', '1.0.0.3'
pod 'BidmadAppLovinAdapter', '12.2.1.0'
pod 'BidmadAtomAdapter', '1.0.0.3'
pod 'BidmadFyberAdapter', '8.2.6.0'
pod 'BidmadGoogleAdManagerAdapter', '11.2.0.0'
pod 'BidmadGoogleAdMobAdapter', '11.2.0.0'
pod 'BidmadIronSourceAdapter', '7.8.0.0.0'
pod 'BidmadPangleAdapter', '5.8.0.7.0'
pod 'BidmadPartners/AdMobBidding', '1.0.3'
pod 'BidmadPubmaticAdapter', '3.2.0.3'
pod 'BidmadSDK', '6.6.1'
pod 'BidmadTeadsAdapter', '5.0.27.3'
pod 'BidmadUnityAdsAdapter', '4.9.3.0'
pod 'BidmadVungleAdapter', '7.2.2.0'
pod 'HiveAdKit_ADOP_PrivacyInfo', '1.4.6'
pod 'OpenBiddingHelper', '6.6.1'
end
target 'Unity-iPhone' do
end
use_frameworks!
pod install
を実行した後、ワークスペースを開いてXcodeの設定を続けます。一般タブを確認すると、必要なDynamic /Frameworksが自動的に次のように埋め込まれます:
Note
[Facebook SDKのデプロイに関する問題] Facebook SDKは動的フレームワークとしてビルドを提供し、広告モジュールは静的フレームワークとして提供しますが、Podfileは両方のフレームワークのうちの1つしかサポートしていません。したがって、Unityでビルドし、Facebookを適用する際は、Facebook SDKと広告モジュール間のクラッシュを解決するために、以下の追加設定に従ってください。
XcodeビルドのTARGETリストに追加のライブラリ依存関係を追加します。
FBSDKAMKit、FBSDKCoreKit_Baseic、FBSDKCoreKit、FBSDKLoginKit、およびFBSDKShareKitフレームワークをダイナミックフレームワークとして追加します。
Note
アプリを配布する際のプライバシー調査フォームの記入に関する情報は、プライバシー調査ガイドを参照してください。
ADOP Proguard 設定¶
Proguardを使用している場合は、以下のADOP Proguard設定を追加してください。
-keep class com.adop.sdk.** { *; }
-keep class ad.helper.openbidding.** { *; }
-keep class com.adop.adapter.fc.** { *; }
-keep class com.adop.adapter.fnc.** { *; }
-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 ;
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 ;
}
# 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 Environment
public static string adopAppKey = "6933aab2-7f78-11ed-a117-026864a21938";
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 Environment
public static string adopAppKey = "6b097551-7f78-11ed-a117-026864a21938";
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";
// Other Environments (Only the mobile envs supported.)
public static string adopAppKey = "NotSuport";
public static string rewardVideoUnitId = "NotSuport";
public static string InterstitialAdUnitId = "NotSuport";
public static string AdaptiveBannerAdUnitId = "NotSuport";
AdKitの初期化¶
ADOP広告を初期化するには、adopAppKey
を発行する必要があります。発行されたadopAppKey
は、ADOP広告の初期化メソッドの引数として使用する必要があります。
Note
リセットを実行すると、EEAおよびUK地域にいる場合はGDPR同意ポップアップが自動的に表示されます。他の地域では、すぐにリセットを実行してください。 ゲームがEEAおよびUK地域を対象としている場合は、GDPRメッセージガイドに従ってGDPR同意ポップアップが設定されていることを確認してください。
// For commercial distribution
HIVEAdKit.InitializeWithShowGDPRConsent(adopAppKey, false, null);
// When testing GDPR
HIVEAdKit.GDPR.Reset();
HIVEAdKit.InitializeWithShowGDPRConsent(adopAppKey, true, testDeviceId);
コールバック¶
Callbackを使用するには、BidmadManagerをGameObjectとして登録する必要があります。
GameObject bidmadManager = new GameObject("BidmadManager");
bidmadManager.AddComponent<BidmadManager>();
DontDestroyOnLoad(bidmadManager);
詳細設定¶
// GameData Example
[Serializable]
public class SendInfo
{
public int level;
public int gold;
}
SendInfo addtionalInfo = new SendInfo();
addtionalInfo.level = 1;
addtionalInfo.gold = 100;
// Send as a JSON Obejct format
HIVEAdKit.SetAdditionalInfo(JsonUtility.ToJson(addtionalInfo));
報酬型広告¶
報酬型広告は、一定の時間ビデオを視聴したユーザーに報酬を与え、1回に1つの広告を読み込むことができます。
// 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を指定すると、バナーは画面の下部に配置され、その後、指定したyPosの値だけ上に移動します。
// the example codes using the 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);
// This example shows adjusting the banner position with specifiying the yPos value.
// 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 Developersを参照してください。
アンインストール¶
ADOP用のAdKitをアンインストールするには、Unityプロジェクト内の以下のフォルダーを削除してください。
- アセット/Bidmad
- アセット/HIVEAdKit
- アセット/HIVEAdKit_Example