コンテンツにスキップ

Unity

AD(X)のためのAdkit: Unity

AdKitは、AD(X) Unityパッケージの処理中に発生したエラーを修正し、ユーザーの利便性をサポートする広告モジュールです。このページを一つずつ読んで、AdKitおよびサポートSDKの使用方法を確認してください。

インストール

Hive 開発者にアクセスし、AdKitをダウンロードして適用してください。

  1. Hive の開発者から最新の AdKit をダウンロードし、ここで解凍します。
  2. Unity ツールバーで、Assets > Import Package > Custom Package… の下にある .unitypackage ファイルを選択し、Import をクリックします。

  1. インポートが完了したら、Assetsフォルダーの下にAdKitおよびAD(X)関連のファイルとフォルダーが作成されているか確認してください。

Warning

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

更新

アンインストールしているAdKitを削除し、最新バージョンをインストールして更新してください。

使い方

iOS (Unity 2019.4 以降)

Unity 2019.4以降でiOSプロジェクトを構築する際、**UnityFramework**というターゲットが作成され、これはダイナミックフレームワークとして機能します。

  1. EDM4Uの設定(バージョン1.2.171に基づく) Unityの**iOS Resolver Settings**(メニュー: Assets > External Dependency Manager > iOS Resolver > Settings)でstatic_frameworkビルド設定が有効になっていることを確認してください。

  2. Hive AdKitのバージョン1.5.0以降から、AppLovinSDKはダイナミックフレームワークとして提供されます。したがって、static_frameworkを使用している場合は、次の手順を実行する必要があります。

    Assets/HIVEAdKit/Editor/AdKitPostprocess.csファイルで、iOSAdd_DynamicFrameworks関数内のdynamicFramework Importのコメントを解除します。コメントの位置は以下の通りです。

    (string Name, string Source) [] dynamicFrameworks = {
        // Hive AdKitのバージョン1.5.0以降からAppLovinSDKを使用しており、Pod Staticを設定している場合は、以下のAppLovinSDK行のコメントを解除してください。
        // ("AppLovinSDK.xcframework", "Pods/AppLovinSDK/applovin-ios-sdk-12.6.1"),
    }
    

    Warning

    static_frameworkが有効で、ビルドしているときのみコメントを解除する必要があります。ダイナミックフレームワークを使用しているときにコメントを解除すると、競合が発生する可能性があります。

  3. プロジェクトをビルドします。ビルドが完了したら、生成されたプロジェクトのルートパスにあるPodfileを開いて、ファイル設定を確認します。

    source 'https://github.com/adxcorp/AdxLibrary_iOS_Release.git'
    source 'https://cdn.cocoapods.org/'
    
    プラットフォーム :ios, '12.0'
    
    target 'UnityFramework' do
        pod 'ADXLibrary', '2.6.2'
        pod 'Google-Mobile-Ads-SDK', '~> 11.8.0'
    end
    target 'Unity-iPhone' do
    end
    use_frameworks!
    

  4. Xcodeの設定を進めてください。

iOS: Facebook SDKと広告モジュール間の競合を解決する

Facebook SDKはダイナミックフレームワークのみを提供していますが、広告モジュールはスタティックフレームワークのみを提供しており、Podfileの設定はこれらの方法のいずれか一方のみをサポートしています。したがって、Unityでアプリのビルド中にFacebook SDKを適用するには、Facebook SDKと広告モジュールの間の競合を次のように解決する必要があります。

iOSAdd_DynamicFrameworks関数内のHIVEAdKit/Editor/AdKitPostprocess.csファイルで使用しているFacebook SDKのコメントを削除して、Dynamic SDKを埋め込んでください。

   (string Name, string Source) [] dynamicFrameworks = {
       // If you are using AppLovinSDK starting from version 1.5.0 of Hive AdKit and have set Pod Static, uncomment the AppLovinSDK line below.
       // ("AppLovinSDK.xcframework", "Pods/AppLovinSDK/applovin-ios-sdk-12.6.1"),

       // If you are using the Facebook SDK, uncomment the lines below according to the SDK type you are using.
       // ("FBAEMKit.xcframework","Pods/FBAEMKit/XCFrameworks"),
       // ("FBSDKCoreKit_Basics.xcframework","Pods/FBSDKCoreKit_Basics/XCFrameworks"),
       // ("FBSDKCoreKit.xcframework","Pods/FBSDKCoreKit/XCFrameworks"),
       // ("FBSDKLoginKit.xcframework","Pods/FBSDKLoginKit/XCFrameworks"),
       // ("FBSDKShareKit.xcframework","Pods/FBSDKShareKit/XCFrameworks"),
       // ("FBSDKGamingServicesKit.xcframework","Pods/FBSDKGamingServicesKit/XCFrameworks")
   };
Warning

現在使用しているFacebook SDKのみをコメント解除する必要があります。

機能

  • 報酬型
    • AD(X)は広告表示のためのAPIを提供していませんが、AdMobガイドに従うように通知します。
    • ログの送信は、AdKit APIとHive SDKが使用されている場合に呼び出されたRewardVideo APIによって決定されます。ログデータはAnalyticsサーバーに送信され、この機能をサポートする最小バージョンは以下の通りです。
      • Hive SDK v4.11.0
  • インタースティシャル型
  • アダプティブバナー型

AdKitの使用方法の詳細については、以下のガイドをお読みください。

AdKitを初期化中

初期化、読み込み、すべてのタイプの広告(AD)を表示する前に必要なステップ

欧州および英国ターゲティング

あなたのゲームがヨーロッパとイギリス(EEAおよびUK)を対象としている場合、GDPR(一般データ保護規則)同意ポップアップを表示する必要があります。Adkitは、GDPR同意ポップアップを表示するためにGoogleのUMP(ユーザー メッセージ プラットフォーム)をサポートしています。Google UMPを使用するには、まずGDPRメッセージ作成ガイドを参照して、GDPRメッセージを作成してください。

Hive SDKを使用する際、AuthV4.setupはIDFAメッセージを公開するため、IDFAメッセージを作成することは基本的にオプションです。ただし、GDPRメッセージを使用している場合は、IDFAメッセージとATT通知に関する詳細な説明に従ってIDFAメッセージを作成する必要があります。

GDPRメッセージとIDFAメッセージの両方を作成した場合は、以下のようにInitializeWithShowADXConsentでHive AdKitを初期化します。

Important

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

// When targeting Europe & the UK for commercial distribution
int debugState = 0;
HIVEAdKit.InitializeWithShowADXConsent(appId, debugState, null, adkitConsentState =>
{
    /*
    * adkitConsentState : User's personal information usage and collection status for AD(X)
    * - 0 : No consent status exists
    * - 1 : Region where consent is not required
    * - 2 : User has refused the usage and collection of personal information
    * - 3 : User has consented to the usage and collection of personal information
    */
});

/* 
 * To test the GDPR consent popup, set debugState to 1 and configure testDeviceId to display the GDPR test popup.
 * The device ID for the Test Device (testDeviceId) can be found in the Android Logcat and Xcode console logs.
 * The testDeviceId is used only for testing. You must specify testDeviceId as null during commercial distribution.
 * Example Android log: Use new ConsentDebugSettings.Builder().addTestDeviceHashedId("ABCDEFGHIJKLMNOPQRSTUVWXYZ") to set this as a debug device.
 * Example Xcode log: To enable debug mode for this device, set: UMPDebugSettings.testDeviceIdentifiers = @[ABCDEFGHIJKLMNOPQRSTUVWXYZ]
 */

int debugState = 1;
string testDeviceId = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
List testDevices = new List();
testDevices.Add(testDeviceId);

HIVEAdKit.InitializeWithShowADXConsent(appId, debugState, testDevices, adkitConsentState =>
{
    /*
    * adkitConsentState : User's personal information usage and collection status for AD(X)
    * - 0 : No consent status exists
    * - 1 : Region where consent is not required
    * - 2 : User has refused the usage and collection of personal information
    * - 3 : User has consented to the usage and collection of personal information
    */
});

Hive AdKitを初期化する際、ターゲット地域がヨーロッパおよび英国(EEAおよびUK)であると判断された場合、以下に示すようにGDPR同意画面が自動的に表示されます。

iOS環境では、IDFAの説明メッセージがヨーロッパおよび英国以外の地域で自動的に表示されます。

高度な設定

// 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));

報酬タイプ

// Initialize Rewarded AD
// Initialize Rewarded AD
EventHandlers eventHandlers = new EventHandlers.Builder()
                                                .OnAdLoaded(OnAdLoadedCB)
                                                .OnAdOpening(OnAdOpeningCB)
                                                .OnAdClosed(OnAdClosedCB)
                                                .OnAdFailedToLoad(OnAdFailedToLoadCB)
                                                .OnAdFailedToShow(OnAdFailedToShowCB)
                                                .OnAdReward(OnAdRewardCB)
                                                .OnPaidEvent(OnPaidEventCB)
                                                .Build();
// Generate an instance
RewardVideoAd = HIVEAdKit.RewardVideo.Initialize(rewardVideoUnitId, eventHandlers);

// Load Rewarded AD
// Send AD loading information to Analytics
if( HIVEAdKit.RewardVideo.IsInitialzed(RewardVideoAd) ) {
    HIVEAdKit.RewardVideo.LoadAd(RewardVideoAd, "Unity-AdaptiveBanner-Show-AdditionalInfo");
}

// Show RewardVideo type
// Send AD loading information to Analytics
if( HIVEAdKit.RewardVideo.IsLoaded(RewardVideoAd) ) {
    HIVEAdKit.RewardVideo.Show(RewardVideoAd, "Unity-AdaptiveBanner-Show-AdditionalInfo");
}

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

EventHandlers eventHandlers = new EventHandlers.Builder()
                                                .OnAdLoaded(OnAdLoadedCB)
                                                .OnAdOpening(OnAdOpeningCB)
                                                .OnAdClosed(OnAdClosedCB)
                                                .OnAdFailedToLoad(OnAdFailedToLoadCB)
                                                .OnAdClick(OnAdClickCB)
                                                .OnPaidEvent(OnPaidEventCB)
                                                .Build();
// Generate an instance
InterstitialAd = HIVEAdKit.Interstitial.Initialize(InterstitialAdUnitId, eventHandlers);

// Load
// Send AD loading information to Analytics
if( HIVEAdKit.Interstitial.IsInitialzed(InterstitialAd) ) {
     HIVEAdKit.Interstitial.Load(InterstitialAd, "Unity-AdaptiveBanner-Show-AdditionalInfo");
}

// Show
// Send AD loading information to Analytics
if( HIVEAdKit.Interstitial.IsLoaded(InterstitialAd) ) {
     HIVEAdKit.Interstitial.Show(InterstitialAd, "Unity-AdaptiveBanner-Show-AdditionalInfo");
}

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

EventHandlers eventHandlers = new EventHandlers.Builder()
                                                            .OnAdLoaded(OnBannerAdLoadedCB)
                                                            .OnAdOpening(OnAdOpeningCB)
                                                            .OnAdClosed(OnAdClosedCB)
                                                            .OnAdFailedToLoad(OnAdFailedToLoadCB)
                                                            .OnAdClick(OnAdClickCB)
                                                            .OnPaidEvent(OnPaidEventCB)
                                                            .Build();
HIVEAdKit.AdaptiveBanner.AdPosition bannerPosition = HIVEAdKit.AdaptiveBanner.AdPosition.Top;
HIVEAdKit.AdaptiveBanner.AdSize adaptiveSize = HIVEAdKit.AdaptiveBanner.AdSize.AD_SIZE_320x50;

// Generate an instance
AdaptiveBannerAd = HIVEAdKit.AdaptiveBanner.Initialize(AdaptiveBannerAdUnitId, adaptiveSize, bannerPosition, eventHandlers);

// Load and show
// Send AD loading information to Analytics
HIVEAdKit.AdaptiveBanner.LoadAd(AdaptiveBannerAd, "Unity-AdaptiveBanner-Show-AdditionalInfo");

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

iOS 14のサポート

以下は、iOS 14以降をサポートするAD(X)のSKAdNetworkリストです。AdKitPostprocessは2021年1月29日の更新に基づいています。最新の更新を確認することを忘れないでください。

Android 11のサポート

AD(X)ライブラリのAndroidManifest.xmlファイルに、Android 11をサポートすることで<queries>タグが追加されます。プロジェクトをUnityでビルドしている際に以下のようなエラーログが表示された場合は、Unity-Android 11でビルドするためのガイドラインを参照してください。

  • Unityのサンプルエラーログ
  AndroidManifest.xml: AAPT: error: unexpected element <queries> found in <manifest>.

ADX Proguard 設定

ライブラリAARファイルにはProguardのルールが含まれているため、設定が自動的に実行されます。  

Unity統合通知

GoogleMobileAdsSettingsのApp IDが削除された場合は、Unity > Assets > Google Mobile Ads > Settingsに移動し、Delay app measurementチェックボックスを選択してから、再度クリアしてください。

 

Gradle & Gradle プラグインバージョンの設定

Adkit 1.4.4 以上には、Gradle 6.7.1 以上のバージョンを推奨します。Adkit 1.4.4 以上に対して低い Gradle バージョンを使用すると、AdMob Unity プラグインから「この機能は ASM7 を必要とします」というエラーが発生する可能性があります。これは、以下のいずれかの解決策で解決できます。

  • GradleとGradleプラグインのバージョンを変更する(推奨される解決策)
  • Unityエンジンを更新する
  • android.enableDexingArtifactTransform=falseを注釈する

 

GradleおよびGradleプラグインのバージョンを変更する方法(Gradle 6.7.1以上、Gradleプラグイン4.2.0以上)については、以下の手順を参照してください。

  1. カスタムベースGradleテンプレートを使用するように変更します。
    • ビルド設定 > プロジェクト設定 > プレイヤー > カスタムベースGradleテンプレートを確認します。
    • Assets/Plugins/Android/baseProjectTemplate.gradleが生成されます。
  2. Gradleプラグインのバージョンを変更します。Assets/Plugins/Android/baseProjectTemplate.gradleファイルを開き、バージョンを次のように変更します: com.android.tools.build:gradle:4.2.0
  3. Gradleをダウンロードします。Gradle 6.7.1はこちらからダウンロードできます。ダウンロード後、ダウンロードしたファイルを希望の場所に解凍します(例: ~/Users/honggd/gradle-6.7.1)。
  4. UnityでGradleのインストールパスを変更します。
    1. Preferences > External Tools > Unityに付属のGradleをチェック解除します。
    2. ダウンロードしたGradleファイルを解凍したディレクトリにインストールパスを設定します(例: ~/Users/honggd/gradle-6.7.1)。
  5. Player > その他の設定 > 識別 > ターゲットAPIレベルが33以上であることを確認し、プロジェクトをビルドします。

テスト広告

開発中にテスト広告がクリックされたときに広告主が料金を請求されないことは重要です。テストモード以外で広告をクリックしすぎると、それは無効な行動と見なされます。したがって、報告対象のアカウントにならないように注意してください。テスト広告を使用するには、Google Developersを参照してください。

 

アンインストール

AD(X)用のAdKitをアンインストールするには、以下のファイルとフォルダーのリストを削除してください。

    • AdKitに関連
      • /Assets/HIVEAdKit
      • /Assets/HIVEAdKit_Example
    • AD(X)に関連
      • /Assets/ADXLibrary
      • /Assets/GoogleMobilesAds
      • /Assets/MoPub
      • /Assets/Plugins/Android/GoogleMobileAdsPlugins
Note

AD(X)に関連するファイルのリストは、AdKitに含まれるAD(X)のバージョンによって異なる場合があります。