Unity プラグイン実装

Before you start

LevelPlay メディエーションは、Unity バージョン2021.3以降および Android OS バージョン4.4( API レベル 19 )以降をサポートします。

iOS バージョンのサポートはネットワークごとに定義されています。ironSource Ads と Unity LevelPlay メディエーションは iOS バージョン 11 以降、Xcode バージョン 15.4 以降をサポートします。

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.5.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 バージョン 2021.3 以降
  • 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 のドキュメントを参照してください。

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

Unity 6 の設定

Unity 6 を使用している場合、次の gradle プロパティを android/gradle.properties に追加して下さい:

android.useFullClasspathForDexingTransform=true

Step 5. SDKを初期化する

Application State

まず、アプリケーションのライフサイクル中に次のイベント関数を実行して、アプリケーションの状態を渡す必要があります。
各 Unity シーンで onApplicationPause を呼び出します:

void OnApplicationPause(bool isPaused) {
    IronSource.Agent.onApplicationPause(isPaused);
}

プラグインと広告フォーマットを初期化する

SDK を初期化するには、以下の手順に従ってください:

  1. 初期化完了ハンドラーの Success と Failure を定義します。
  2. セッションで初期化する広告フォーマットのリストを定義します。このリストには REWARDED を含める必要があります。
  3. appKey、広告フォーマット、および必要に応じて UserID を使用して、LevelPlay init API を呼び出します。
User ID サーバー間コールバックを使用してユーザーに ironSource SDK リワード広告ユニットのリワードを提供する場合、または Ad Quality User Journey を使用している場合は、UserID を設定します。
using com.unity3d.mediation;
// Init the SDK when implementing the Multiple Ad Units API for Interstitial and Banner formats, with Rewarded using legacy APIs 
LevelPlayAdFormat[] legacyAdFormats = new[] { LevelPlayAdFormat.REWARDED };
LevelPlay.OnInitSuccess += SdkInitializationCompletedEvent;
LevelPlay.OnInitFailed += SdkInitializationFailedEvent;
LevelPlay.Init("appKey","UserId", legacyAdFormats);

初期化完了リスナー

OnInitSuccess – 初期化が正常に完了するとトリガーされます。この通知を受け取ったら、広告を作成して読み込むことができます。

OnInitFailed – 設定が正常に取得されなかったため、広告を読み込むことができません。後で (インターネット接続が利用可能なとき、または失敗の理由が解決されたとき)、ironSource SDK の初期化を再試行することをお勧めします。

ステップ 6. インテグレーションを確認する

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 で実装を確認したら、インテグレーションガイドに従って、広告ユニットを実装します:

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