Android SDK 実装

⚡ Before you start ironSource は Android オペレーティングシステムバージョン 4.4( API レベル 19 )以降をサポートしています。

サポートされている Kotlin の最低バージョンは 1.7.0 です。

SDK のダウンロード、使用、およびアクセスには、ironSource Mobile SDK Publisher のオンライン利用規約が適用されます。ironSource Mobile SDK Publisher のオンライン利用規約に同意しない場合は、SDK または基盤となるサービスをダウンロード、アクセス、または使用しないでください。

ステップ 1. プロジェクトに ironSource SDK を追加する

ironSource SDK は、実装のために Gradle dependencies と手動ダウンロードメカニズムの両方をサポートしています:

Gradle

  1. アプリの build.gradle ファイル内のリポジトリセクションに以下を追加します:
    repositories {
    	mavenCentral()
    }
    • Light theme
    • Dark theme
    • Copy to clipboard

  2. 次に、dependencies セクションに以下を追加します:
    dependencies {
        implementation 'com.unity3d.ads-mediation:mediation-sdk:8.7.0' 
        implementation 'com.unity3d.ads-mediation:adquality-sdk:7.24.0'
    }
    • Light theme
    • Dark theme
    • Copy to clipboard

    Ad Quality をプロジェクトからオプトアウトするには、Ad Quality SDK の依存関係を dependencies セクションから削除してください。

Gradle バージョン 7 以降

Gradle バージョン 7 以降を使用している場合は、build.gradle ではなく、settings.gradle ファイルのリポジトリセクションを更新します。リポジトリ セクションは、dependencyResolutionManagement セクションの一部として含める必要があることに注意してください:

dependencyResolutionManagement {
    repositories {
	mavenCentral()
    }
}
  • Light theme
  • Dark theme
  • Copy to clipboard

SDK ダウンロード

  1. Download Android SDK Version 8.7.0
  2. Download Ad Quality SDK
  3. AAR ファイルをライブラリプロジェクトとしてインポートします。
  4. Android Studio を使用している場合は、ironSource .AAR ファイルをダウンロードし、依存関係として独自のモジュールに追加します。
  5. FileNewNew ModuleImport .AAR に移動し、ironSource.AAR ファイルがダウンロードされた場所を指定します。
  6. 注:ironSource Manifest Activities は AAR に含まれています。
  7. build.gradle ファイルの dependencies セクションに以下を追加してください。
    implementation(name: 'mediation-sdk-8.7.0', ext:'aar')
    implementation(name: 'adquality-sdk-7.24.0', ext:'aar')
    • Light theme
    • Dark theme
    • Copy to clipboard
  8. ironSource SDK 7.0.4 以降では、Kotlin JAR をプロジェクトに追加する必要があります。 Kotlin のサポートについて詳しくは、こちらをご覧ください。

オプション:手動 JAR 実装

プロジェクトで mediation-sdk-xxx.jaradquality-sdk-xxx.jar を使用している場合でも、同じ構成を使用できます。

  1. 新しい mediation-sdk-xxx.aar の名前を mediation-sdk-xxx.zip へ変更します
  2. 新しい adquality-sdk-xxx.jar の名前を adquality-sdk-xxx.zip へ変更します
  3. Classes.jar を抽出します
  4. 名前を mediation-sdk-xxx.jar と adquality-sdk-xxx.jar に変更します
  5. AndroidManifext.xml を更新します

手動 JAR 実装のために AndroidManifest.xml を更新する

AndroidManifest.xml を更新するには、次の手順を実行してください:

    1. Manifest Permissions
      AndroidManifest.xml ファイルにマニフェストタグ内で <application> タグ外に次の権限を追加します:
      <uses-permission android:name="android.permission.INTERNET" />
      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
      • Light theme
      • Dark theme
      • Copy to clipboard
    2. Manifest Activities and Provider
      AndroidManifest<application> タグ内に次のアクティビティを追加します:
      <activity
          android:name="com.ironsource.sdk.controller.ControllerActivity"
          android:configChanges="orientation|screenSize"
          android:hardwareAccelerated="true" />
      <activity
          android:name="com.ironsource.sdk.controller.InterstitialActivity"
          android:configChanges="orientation|screenSize"
          android:hardwareAccelerated="true"
          android:theme="@android:style/Theme.Translucent" />
      <activity
          android:name="com.ironsource.sdk.controller.OpenUrlActivity"
          android:configChanges="orientation|screenSize"
          android:hardwareAccelerated="true"
          android:theme="@android:style/Theme.Translucent" />
      <provider
          android:authorities="${applicationId}.IronsourceLifecycleProvider"
          android:name="com.ironsource.lifecycle.IronsourceLifecycleProvider" />
      • Light theme
      • Dark theme
      • Copy to clipboard

デモアプリケーション

実装デモアプリケーションでは、LevelPlay Mediation をアプリに実装する方法を確認できます。
Download Android Demo Application

ステップ 2. Google ID パーミッション

  1. 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:18.1.0' 
        implementation 'com.google.android.gms:play-services-basement:18.1.0' 
    }
    • Light theme
    • Dark theme
    • Copy to clipboard

    App Set IDについての詳細はこちら

  2. ターゲット API レベルを 33( Android 13 )に更新するアプリは、次のようにマニフェストファイルで Google Play サービスの通常のアクセス許可を宣言する必要があります:
    <uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
    • Light theme
    • Dark theme
    • Copy to clipboard

    Google Advertising ID についての詳細はこちら

Amazon デバイスは Google Play Services を利用していません。 Amazon プラットフォーム用にビルドする場合は上記の手順をスキップしてください。

ステップ 3. アクティビティライフサイクルメソッドをオーバーライドする

Application Lifecycle
各アクティビティの onPause()onResume() メソッドをオーバーライドして、対応する ironSource メソッドを次のように呼びます

protected void onResume() {
    super.onResume();
    IronSource.onResume(this);
}
protected void onPause() {
    super.onPause();
    IronSource.onPause(this);
}
  • Light theme
  • Dark theme
  • Copy to clipboard

ステップ 4. リスナーを設定する

動画リワード

ironSource SDK は、広告ユニットのアクティビティを通知するためにいくつかのイベントを発火します。これらのイベントを受信するには、LevelPlay プラットフォームで設定した広告ユニットのリスナーを登録します。

情報の損失を防ぐために、リスナーは必ずSDKを初期化する前に設定してください。

IronSource.setLevelPlayRewardedVideoListener(mLevelPlayRewardedVideoListener);
  • Light theme
  • Dark theme
  • Copy to clipboard

インタースティシャルとバナー

インタースティシャルとバナーは、LevelPlay マルチ広告ユニット SDK を使用します。delegate の実装については、実装ガイドを確認してください。

Step 5. SDK を初期化する

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

  1. 初期化完了ハンドラーの Success と Failure を定義します。
  2. セッションで初期化する広告フォーマットのリストを定義します。REWARDED ユニットはマルチ広告ユニット API では正式にサポートされていないため、このリストに含める必要があります。
  3. appKey、広告フォーマット、および必要に応じて UserID を使用して、LevelPlay init API を呼び出します。
User ID サーバー間コールバックを使用してユーザーに ironSource SDK リワード広告ユニットのリワードを提供する場合、または Ad Quality User Journey を使用している場合は、UserID を設定します。
// Init the SDK when implementing the Multiple Ad Units Interstitial and Banner APIs, and Rewarded using legacy APIs 
List<LevelPlay.AdFormat> legacyAdFormats = Arrays.asList(LevelPlay.AdFormat.REWARDED);

LevelPlayInitRequest initRequest = new LevelPlayInitRequest.Builder(appKey)
                                     .withLegacyAdFormats(legacyAdFormats)
                                     .withUserId("UserID")
                                     .build();
LevelPlayInitListener initListener = new LevelPlayInitListener() {
    @Override
    public void onInitFailed(@NonNull LevelPlayInitError error) {
        //Recommended to initialize again 
    }
    @Override
    public void onInitSuccess(LevelPlayConfiguration configuration) {
        //Create ad objects and load ads 
    }
};
LevelPlay.init(context, initRequest, initListener);
  • Light theme
  • Dark theme
  • Copy to clipboard

初期化完了リスナー

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

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

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.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
  • Light theme
  • Dark theme
  • Copy to clipboard

ステップ 6. 実装を確認する

ironSource SDK は、LevelPlay 実装を簡単に確認できるテストスイートを提供しています。アプリの実装やプラットフォームの設定確認、登録されたアドネットワークの広告を確認できます。

アプリでテストスイートを有効にするには、SDK の初期前に以下の様に setMetaData API を呼びます:

IronSource.setMetaData("is_test_suite", "enable");
  • Light theme
  • Dark theme
  • Copy to clipboard

メディエーションの初期化が正常に完了したら、次のメソッドを呼んでテストスイートを起動します( Application Context が必要です):

IronSource.launchTestSuite(context);
  • Light theme
  • Dark theme
  • Copy to clipboard

LevelPlay 実装テストスイートの詳細については、こちらの記事をお読みください。

完了!これで、ironSource SDK がアプリに実装されました
これで、広告ユニットとメディエーションツールの使用を開始する準備が整いました。


次のステップは?
  1. 実装ガイドに従って、広告フォーマットを実装します。
  2. メディエーションに興味がありますか?こちらのメディエーションの記事に従って動画リワード、インタースティシャル、またはバナー広告をアプリに実装してください。
  3. Test Suite を使用して実装を確認します。