Unity プラグイン実装
LevelPlay メディエーションは、Unity バージョン2017.2以降および Android OS バージョン4.4( API レベル 19 )以降をサポートします。
iOS バージョンのサポートはネットワークごとに定義されています。ironSource Ads と Unity LevelPlay メディエーションは iOS バージョン 11 以降、Xcode バージョン 15.4 以降をサポートします。
ironSource SDK 7.3.0 以降サポートされている Kotlin の最低バージョンは 1.7.0 です。
SDK のダウンロード、使用、およびアクセスには、ironSource Mobile SDK Publisher のオンライン利用規約が適用されます。ironSource Mobile SDK Publisher Online の利用規約に同意しない場合は、SDK または基盤となるサービスをダウンロード、アクセス、または使用しないでください。
Apple のプライバシー要件と互換性を保つために、ironSource SDK は SKAdNetwork アトリビューションと iOS プライバシーマニフェストの両方をサポートしています。詳細については、こちらをご覧ください。
AndroidXのアダプターサポートの詳細をご覧ください。
Important! 現在 Unity プラグインのバージョン 8.0.0 を実装している場合は、新しいバージョンをダウンロードし、プロジェクトにインポートして Unity パッケージを新しいバージョンに更新する必要があります。
Unity Package Manager を使用して Ads Mediation パッケージをプロジェクトに追加できます。詳細はこちら。
ステップ 1. LevelPlay Unity パッケージをプロジェクトに追加する
Unity プラグインの以前のバージョンから 8.0.0 以降にアップグレードするには、こちらのガイドに従ってください。
Unity プラグインを使用して、LevelPlay 用の ironSource Unity パッケージをプロジェクトに追加するには、次の手順を実行します:
- Download Unity Plugin Version 8.4.1
- Unity プロジェクトが開いていることを確認し、Unity パッケージをインポートする
- 抽出したファイルをダブルクリックする:以下に示すように、さまざまなファイルが自動的に入力されます。
Ad Quality SDK を追加する
- Ad Quality dependency XML をダウンロード
- ダウンロードした XML をプロジェクトの Assets/IronSource/Editor へ配置
ironSource メディエーションデモアプリ
Integration デモアプリは、LevelPlay メディエーションをアプリに実装する方法を示しています。
Download Unity Demo Application
ステップ 2. LevelPlay Network Manager – 推奨
使用する広告ネットワークのアダプターをインストールします。左側のメニューにある Ad Network Integration ガイドに従って、広告ネットワークを適切に設定してください。
前提条件
- Unity Developer バージョン 2017.2 以降
- iOS の場合 – CocoaPods が適用されます。
SDK バージョンを管理する
新しい SDK と Network Manager の Unity パッケージを更新すると、Unity メニューバーに Ads Mediation メニューが表示されるようになります。
SDK またはアダプターのバージョンをアップグレードするには:
- Ads Mediation > Network Manager へ移動
- 「 Install 」または「 Update 」を選択
既に最新バージョンの ironSource SDK またはアダプターを使用している場合、アクションボタンは「 Updated 」に変更され、無効になります。
Android
変更を適用するには、必ず「 Resolve 」プロセスを使用してください。これにより、選択に応じて関連するすべてのアーティファクトがダウンロードされます。
Manual Resolve
手順:Assets → Mobile Dependency Resolver → Android Resolver → Resolve
このアクションは、LevelPlay Network Manager を変更するたびに実行する必要があります。
Automatic Resolve を使用している場合、Network Manager ウィンドウを閉じるときにすべての更新が実行されます。
Gradle を使用する場合
Unity の LevelPlay Network Manager を使用すると、Android アーティファクトをプロジェクトにダウンロードすることを回避できます。代わりに、アーティファクトはコンパイル中に gradle ファイルに追加されます。
このプロセスを有効にするには、次の手順に従います:
- Project Settings > Player > Android > Publishing Settings へ移動
- Custom Main Gradle Template を有効化
- Assets > Mobile Dependency Manager > Android Resolver > Settings へ移動
- 「 Patch mainTemplate.gradle 」を選択
- 「 OK 」を押して変更を保存
iOS
CocoaPods がインストールされていることを確認してください:
手順:Assets → Mobile Dependency Resolver → iOS Resolver → Install CocoaPods
ステップ 3. iOS の追加設定
Xcode プロジェクトに Ad-Support を追加する
Unity プラグインは通常、必要なすべてのフレームワークを自動的に追加します。Unity 5.6を使用していると、AdSupport.framework が自動的に追加されない場合があります。フレームワークが追加されているかどうかを確認し、自動的に追加されていない場合は、必ず手動で追加してください。
SKAdNetwork サポート
SDK 7 以降で ironSource ネットワーク広告の表示を有効にするには、アプリのプロパティリストファイル( Info.plist )に ironSource アドネットワークIDを必ず追加してください。
- Xcode のプロジェクトナビゲーターで Info.plist を選択
- プロパティリストエディタのキーの横にある追加ボタン(+)をクリックして、 Return キーを押す
- キー名「 SKAdNetworkItems 」を入力
- 「 Type 」列のポップアップメニューから「 Array 」を選択
- dictionary アイテムを作成し、その下に単一の「 string 」アイテムを作成
- キー名「 SKAdNetworkIdentifier 」とキー値を入力:
su67r6k2v3.skadnetwork
次のコードを使用して、SKAdNetworkIdentifier を info.plist に追加することもできます:
<key>SKAdNetworkItems</key>
<array>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>su67r6k2v3.skadnetwork</string>
</dict>
</array>
プロパティリストの編集の詳細については、Xcode のドキュメントを参照してください。
Universal SKAN レポート
ユーザー獲得を実施しているアプリのすべてから、獲得したインストールポストバックのコピーを受け取るには、アプリの info.plist に NSAdvertisingAttributionReportEndpoint キーを追加します。
- Xcode のプロジェクトナビゲーターで info.plist を選択します
- プロパティリストエディタのキーの横にある [追加] ボタン (+) をクリックし、Return キーを押します
- キー名「 NSAdvertisingAttributionReportEndpoint 」を入力します
- 「 Type 」列のポップアップメニューから「 String 」を選択します
- URL を入力:https://postbacks-is.com
Universal SKAN レポートの詳細については、こちらをご覧ください。
App Transport Security 設定
すべてのメディエーションネットワークで ironSource 広告配信を滞りなくサポートするには、info.plist に次の変更を加えることが重要です:
- 「 NSAppTransportSecurity 」という「 dictionary 」を追加します。これは必ず「 Top Level Key 」に追加してください。
- この dictionary 内に、「 NSAllowsArbitraryLoads 」という「 Boolean 」を追加し、「 YES 」に設定します。
- 競合が発生する可能性があるため、info.plist に「 NSAllowsArbitraryLoads 」以外の例外が含まれていないことを確認してください。
- ATS の詳細については、こちらをご覧ください。
ステップ 4. Android の追加設定
ターゲット API レベルを 33 ( Android 13 ) に更新するアプリは、次のようにマニフェストファイルで Google Play サービスの通常のアクセス許可を宣言する必要があります:
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
Google Advertising ID についての詳細はこちら
Unity 2020 の設定
Unity 2020 以降を使用している場合、次の gradle プロパティを android/gradle.properties に追加して下さい:
android.enableDexingArtifactTransform=false
ステップ 5. 手動インテグレーション
Unity Network Manager の代わりに、ironSource SDK を手動で実装できます。
Android 手動インテグレーション
- Download Android SDK Version 8.4.0
- Download Ad Quality SDK
- .aar ファイルを「 /Assets/Plugins/Android 」にコピー
Google ID パーミッション
ironSource SDK には「 Google Play Services Basement 」と「 Google Play Services Identifier 」が必要ですが、他のネットワークでも追加の Google Play Services が必要になる場合があります。
Play Services の依存関係を dependencies ブロックに追加して、GAID および App Set ID 情報を取得できるようにします。
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.google.android.gms:play-services-appset:16.0.0'
implementation 'com.google.android.gms:play-services-ads-identifier:17.0.0'
implementation 'com.google.android.gms:play-services-basement:17.1.1'
}
App Set ID についての詳細はこちら。
iOS 手動インテグレーション
- Download iOS SDK Version 8.4.0
- ファイルを解凍し、「 IronSource.xcframework 」を「 /Assets/Plugins/iOS 」に追加
- Download Ad Quality SDK
- ファイルを解凍し、「 IronSourceAdQuality.xcframework 」を「 /Assets/Plugins/iOS 」に追加
- ライブラリをインポート – “z”,”sqlite3.0″
- フレームワークをインポート – “JavaScriptCore”,”WebKit”,”AdSupport”,”SystemConfiguration”
ステップ 6. 広告ユニットを初期化する
- ironSource は、SDK を初期化する前に設定する必要がある UserID や Segments などのオプションをサポートしています。セットアップ手順については、「詳細設定に関するガイド」をご覧ください。
- アプリの起動時にポップアップを使用してユーザーの ATT 同意( iOS14 )を取得する場合は、ironSource SDK を初期化する前にこのアクションを実行することをお勧めします。App Tracking Transparency について詳しくは、 Apple のドキュメントをご覧ください。
- アプリの起動時にユーザーの ATT 同意( iOS14 )を要求しない場合は、起動後すぐに ironSource SDK を初期化してください。
- サーバー間コールバックを使用してユーザーに ironSource リワード広告ユニットのリワードを提供する場合、または Ad Quality User Journey を使用している場合は、UserIDを設定します。
Application State
まず、アプリケーションのライフサイクル中に次のイベント関数を実行して、アプリケーションの状態を渡す必要があります。
各 Unity シーンで onApplicationPause を呼び出します:
void OnApplicationPause(bool isPaused) { IronSource.Agent.onApplicationPause(isPaused); }
プラグインと広告ユニットを初期化する
プラグインは二つの方法で初期化できます。一つ目は定義した特定の広告ユニットを取得するので、この方法をお勧めします。
- このメソッドは、adUnits パラメーターで指定された特定の広告ユニットを初期化します:
IronSource.Agent.init (YOUR_APP_KEY, IronSourceAdUnits.REWARDED_VIDEO, IronSourceAdUnits.INTERSTITIAL, IronSourceAdUnits.BANNER);
この初期化アプローチを使用すると、一つのセッションでアプリフローのさまざまなタッチポイントで各広告ユニットを個別に初期化できるようになります。
// For Rewarded Video IronSource.Agent.init (YOUR_APP_KEY, IronSourceAdUnits.REWARDED_VIDEO); // For Interstitial IronSource.Agent.init (YOUR_APP_KEY, IronSourceAdUnits.INTERSTITIAL); // For Banners IronSource.Agent.init (YOUR_APP_KEY, IronSourceAdUnits.BANNER);
- または、以下の様にSDKを初期化すると、SDK は ironSource プラットフォームで設定した広告ユニットを初期化します:
IronSource.Agent.init (YOUR_APP_KEY);
ironSource 初期化完了コールバックリスナー
ironSource SDK 7.2.1 以降は ironSource SDK が正常に初期化されたことを通知するコールバックを発火します。このリスナーは、初期化プロセスが完了したことを示し、広告の読み込みを開始できます。コールバックはセッションごとに1 回送信され、SDK の最初の初期化を示します。
IronSourceEvents.onSdkInitializationCompletedEvent += SdkInitializationCompletedEvent;
private void SdkInitializationCompletedEvent(){}
ステップ 7. インテグレーションを確認する
ironSource SDK は、動画リワードメディエーションのインテグレーションが正常に完了したことを確認する簡単な方法を提供しています。ironSource SDK の実装と、実装した追加のアドネットワークを確認するには、次のメソッドをプロジェクトに追加するだけです:
IronSource.Agent.validateIntegration();
ironSource Integration Verificationツールの詳細については、こちらの記事をお読みください。
ProGuard ユーザーのみ
ironSource SDK で ProGuard を使用する場合は、ProGuard ファイルに次のコードを追加する必要があります。( Android Studio:proguard-rules.pro または Eclipse:proguard-project.txt ):
-keepclassmembers class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
#noinspection ShrinkerUnresolvedReference
#unity
-keep class com.ironsource.unity.androidbridge.** { *;}
-keep class com.google.android.gms.ads.** {public *;}
-keep class com.google.android.gms.appset.** { *; }
-keep class com.google.android.gms.tasks.** { *; }
#adapters
-keep class com.ironsource.adapters.** { *; }
#sdk
-dontwarn com.ironsource.**
-dontwarn com.ironsource.adapters.**
-keepclassmembers class com.ironsource.** { public *; }
-keep public class com.ironsource.**
-keep class com.ironsource.adapters.** { *;
}
#omid
-dontwarn com.iab.omid.**
-keep class com.iab.omid.** {*;}
#javascript
-keepattributes JavascriptInterface
-keepclassmembers class * { @android.webkit.JavascriptInterface <methods>; }
#For AmazonAps integration
-keep class com.amazon.device.ads.DtbThreadService {
static *;
}
-keep public interface com.amazon.device.ads** {*; }
#For AppLovin integration
-keepclassmembers class com.applovin.sdk.AppLovinSdk {
static *;
}
-keep public interface com.applovin.sdk** {*; }
-keep public interface com.applovin.adview** {*; }
-keep public interface com.applovin.mediation** {*; }
-keep public interface com.applovin.communicator** {*; }
#For Bytedance integration
-keep public interface com.bytedance.sdk.openadsdk** {*; }
#For Facebook integration
-keepclassmembers class com.facebook.ads.internal.AdSdkVersion {
static *;
}
-keepclassmembers class com.facebook.ads.internal.settings.AdSdkVersion {
static *;
}
-keepclassmembers class com.facebook.ads.BuildConfig {
static *;
}
-keep public interface com.facebook.ads** {*; }
#For Fairbid
-keep public interface com.fyber.fairbid.ads.interstitial** {*; }
-keep public interface com.fyber.fairbid.ads.rewarded** {*; }
-keep class com.fyber.offerwall.*
#For Fivead
-keep public interface com.five_corp.ad** {*; }
#For Fyber(Inneractive) integration
-keep public interface com.fyber.inneractive.sdk.external** {*; }
-keep public interface com.fyber.inneractive.sdk.activities** {*; }
-keep public interface com.fyber.inneractive.sdk.ui** {*; }
#For HyprMX integration
-keepclassmembers class com.hyprmx.android.sdk.utility.HyprMXProperties {
static *;
}
-keepclassmembers class com.hyprmx.android.BuildConfig {
static *;
}
-keep public interface com.hyprmx.android.sdk.activity** {*; }
-keep public interface com.hyprmx.android.sdk.graphics** {*; }
# For Inmobi integration
-keep class com.inmobi.*
-keep public interface com.inmobi.ads.listeners** {*; }
-keep public interface com.inmobi.ads.InMobiInterstitial** {*; }
-keep public interface com.inmobi.ads.InMobiBanner** {*; }
# For ironSource integration
-keep public interface com.ironsource.mediationsdk.sdk** {*; }
-keep public interface com.ironsource.mediationsdk.impressionData.ImpressionDataListener {*; }
#For Maio integration
-keep public interface jp.maio.sdk.android.MaioAdsListenerInterface {*; }
# For Mintergral integration
-keep public interface com.mbridge.msdk.out** {*; }
-keep public interface com.mbridge.msdk.videocommon.listener** {*; }
-keep public interface com.mbridge.msdk.interstitialvideo.out** {*; }
-keep public interface com.mintegral.msdk.out** {*; }
-keep public interface com.mintegral.msdk.videocommon.listener** {*; }
-keep public interface com.mintegral.msdk.interstitialvideo.out** {*; }
#For MyTarget integration
-keep class com.my.target.** {*;}
#For Ogury integration
-keep public interface io.presage.interstitial** {*; }
-keep public interface io.presage.interstitial.PresageInterstitialCallback {*; }
#For Pubnative integration
-keep public interface net.pubnative.lite.sdk.interstitial.HyBidInterstitialAd** {*; }
-keep public interface net.pubnative.lite.sdk.rewarded.HyBidRewardedAd** {*; }
-keep public interface net.pubnative.lite.sdk.views.HyBidAdView** {*; }
#For Smaato integration
-keep public interface com.smaato.sdk.interstitial** {*; }
-keep public interface com.smaato.sdk.video.vast** {*; }
-keep public interface com.smaato.sdk.banner.widget** {*; }
-keep public interface com.smaato.sdk.core.util** {*; }
# For Tapjoy integration
-keep public interface com.tapjoy.** {*; }
# For Tencent integration
-keep public interface com.qq.e.ads.interstitial2** {*; }
-keep public interface com.qq.e.ads.interstitial3** {*; }
-keep public interface com.qq.e.ads.rewardvideo** {*; }
-keep public interface com.qq.e.ads.rewardvideo2** {*; }
-keep public interface com.qq.e.ads.banner2** {*; }
-keep public interface com.qq.e.comm.adevent** {*; }
#For Verizon integration
-keepclassmembers class com.verizon.ads.edition.BuildConfig {
static *;
}
-keep public interface com.verizon.ads.interstitialplacement** {*; }
-keep public interface com.verizon.ads.inlineplacement** {*; }
-keep public interface com.verizon.ads.vastcontroller** {*; }
-keep public interface com.verizon.ads.webcontroller** {*; }
#For Vungle integration
-keep public interface com.vungle.warren.PlayAdCallback {*; }
-keep public interface com.vungle.warren.ui.contract** {*; }
-keep public interface com.vungle.warren.ui.view** {*; }
#For AndroidX
-keep class androidx.localbroadcastmanager.content.LocalBroadcastManager { *;}
-keep class androidx.recyclerview.widget.RecyclerView { *;}
-keep class androidx.recyclerview.widget.RecyclerView$OnScrollListener { *;}
#For Android
-keep class * extends android.app.Activity
完了!
これで、ironSource の広告ユニットとメディエーションツールの使用を開始する準備が整いました。
次のステップは?
Integration Helper で実装を確認したら、インテグレーションガイドに従って、広告ユニットを実装します:
メディエーションに興味がありますか?このメディエーションの記事に従って動画リワードまたはインタースティシャル広告をアプリに実装してください。