Unity プラグイン実装

Before you start

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 パッケージをプロジェクトに追加するには、次の手順を実行します:

  1. Download Unity Plugin Version 8.4.1
  2. Unity プロジェクトが開いていることを確認し、Unity パッケージをインポートする
  3. 抽出したファイルをダブルクリックする:以下に示すように、さまざまなファイルが自動的に入力されます。

Unity Editor で ironSource SDK を使用する ironSourceSDK は、Android および iOS プラットフォームで動作するように設計されています。Unity Editor には、Unity コードを操作するためのシミュレーターが含まれています。プラグインを使用するには、Android または iOS ビルドのいずれかをターゲットにして実装をテストする必要があります。

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 が適用されます。
Important! Unity プラグインを既に実装している場合は、こちらの手順に従ってください。

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 ファイルに追加されます。

このプロセスを有効にするには、次の手順に従います:

  1. Project Settings > Player > Android > Publishing Settings へ移動
  2. Custom Main Gradle Template を有効化
  3. Assets > Mobile Dependency Manager > Android Resolver > Settings へ移動
  4. 「 Patch mainTemplate.gradle 」を選択
  5. 「 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を必ず追加してください。

  1. Xcode のプロジェクトナビゲーターで Info.plist を選択
  2. プロパティリストエディタのキーの横にある追加ボタン(+)をクリックして、 Return キーを押す
  3. キー名「 SKAdNetworkItems 」を入力
  4. 「 Type 」列のポップアップメニューから「 Array 」を選択
  5. dictionary アイテムを作成し、その下に単一の「 string 」アイテムを作成
  6. キー名「 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 キーを追加します。

  1. Xcode のプロジェクトナビゲーターで info.plist を選択します
  2. プロパティリストエディタのキーの横にある [追加] ボタン (+) をクリックし、Return キーを押します
  3. キー名「 NSAdvertisingAttributionReportEndpoint 」を入力します
  4. 「 Type 」列のポップアップメニューから「 String 」を選択します
  5. URL を入力:https://postbacks-is.com

Universal SKAN レポートの詳細については、こちらをご覧ください。

App Transport Security 設定

すべてのメディエーションネットワークで ironSource 広告配信を滞りなくサポートするには、info.plist に次の変更を加えることが重要です:

  • NSAppTransportSecurity 」という「 dictionary 」を追加します。これは必ず「 Top Level Key 」に追加してください。
  • この dictionary 内に、「 NSAllowsArbitraryLoads 」という「 Boolean 」を追加し、「 YES 」に設定します。ats
  • 競合が発生する可能性があるため、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 手動インテグレーション

  1. Download Android SDK Version 8.4.0
  2. Download Ad Quality SDK
  3. .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 手動インテグレーション

  1. Download iOS SDK Version 8.4.0
  2. ファイルを解凍し、「 IronSource.xcframework 」を「 /Assets/Plugins/iOS 」に追加
  3. Download Ad Quality SDK
  4. ファイルを解凍し、「 IronSourceAdQuality.xcframework 」を「 /Assets/Plugins/iOS 」に追加
  5. ライブラリをインポート – “z”,”sqlite3.0″
  6. フレームワークをインポート – “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);
}

プラグインと広告ユニットを初期化する

プラグインは二つの方法で初期化できます。一つ目は定義した特定の広告ユニットを取得するので、この方法をお勧めします。

  1. このメソッドは、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);
  2. または、以下の様に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 で実装を確認したら、インテグレーションガイドに従って、広告ユニットを実装します:

メディエーションに興味がありますか?このメディエーションの記事に従って動画リワードまたはインタースティシャル広告をアプリに実装してください。