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 を追加する

Important! Target SDK レベル 30 を使用してアプリを構築している場合は、必ず ironSource SDK バージョン 6.18.0 以降を使用してください。
ironSource SDK バージョン 6.16.0 以降、ironSource SDK は AAR としてリリースされていることに注意してください。
以下の情報に従って、依存関係セクションを更新してください。
Manifest Activities が AAR に含まれていることに注意してください。

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

Gradle

  1. アプリの build.gradle ファイル内のリポジトリセクションに以下を追加します:
    repositories {
        maven {
            url 'https://android-sdk.is.com/'
       }
    }
  2. 次に、dependencies セクションに以下を追加します:
    dependencies {
        implementation 'com.ironsource.sdk:mediationsdk:8.5.0' 
    
        // Supports LevelPlay SDK version 8.4.0
        implementation 'com.ironsource:adqualitysdk:7.22.1'
    }

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

Gradle バージョン 7 以降

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

dependencyResolutionManagement {
    repositories {
        maven {
            url 'https://android-sdk.is.com/' 
         }
    }
}

SDK ダウンロード

  1. Download Android SDK Version 8.5.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: 'mediationsdk-8.5.0', ext:'aar')
    implementation(name: 'IronSourceAdQuality-v7.22.1', ext:'aar')
  8. ironSource SDK 7.0.4 以降では、Kotlin JAR をプロジェクトに追加する必要があります。 Kotlin のサポートについて詳しくは、こちらをご覧ください。
  9. オプション:手動 JAR 実装

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

    1. 新しい mediationsdk-xxx.aar の名前を mediationsdk-xxx.zip へ変更します
    2. 新しい IronSourceAdQuality-xxx.jar の名前を IronSourceAdQuality-xxx.zip へ変更します
    3. Classes.jar を抽出します
    4. 名前を mediationsdk_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" />
      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" />

    デモアプリケーション

    実装デモアプリケーションでは、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' 
      }

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

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

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

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

    動画リワード

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

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

    IronSource.setLevelPlayRewardedVideoListener(mLevelPlayRewardedVideoListener);

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

    インタースティシャルとバナーは、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);
    
    // Init the SDK when implementing the Multiple Ad Units Interstitial and Banner APIs, and Rewarded using legacy APIs 
     
    val legacyAdFormats = listOf(LevelPlay.AdFormat.INTERSTITIAL,LevelPlay.AdFormat.REWARDED)
    val initRequest = LevelPlayInitRequest.Builder("AppKey")
                                          .withLegacyAdFormats(legacyAdFormats)
                                          .withUserId("UserId")
                                          .build()
    LevelPlay.init(context, initRequest, object: LevelPlayInitListener {
        override fun onInitFailed(error: LevelPlayInitError) {
            //Recommended to initialize again
        }
        override fun onInitSuccess(configuration: LevelPlayConfiguration) {
            //Create ad objects and load ads
        }
    })

    初期化完了リスナー

    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

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

    ironSource SDK は、動画リワードメディエーションの実装が正常に完了したことを確認する簡単な方法を提供しています。ironSource SDK の実装と、実装した追加のアドネットワークを確認するには、次のメソッドをプロジェクトに追加するだけです:

    IntegrationHelper.validateIntegration(activity);

    Integration Verification ツールの詳細については、こちらの記事をお読みください。

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


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