メインコンテンツへスキップ

概要

Adrop Android SDKのサンプルコードとサンプルプロジェクトをご確認ください。

サンプルプロジェクト

GitHubで完全なサンプルプロジェクトを確認できます。

Androidサンプルプロジェクト

Kotlinで作成されたAndroidサンプルアプリ

クイックスタートサンプル

バナー広告(Kotlin)

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import io.adrop.ads.banner.AdropBanner

class BannerActivity : AppCompatActivity() {
    private lateinit var adropBanner: AdropBanner

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_banner)

        // バナー広告を初期化
        adropBanner = findViewById(R.id.adrop_banner)
        adropBanner.unitId = "YOUR_UNIT_ID"

        // 広告リスナーを設定(任意)
        adropBanner.listener = object : AdropBanner.Listener {
            override fun onAdReceived(banner: AdropBanner) {
                // 広告受信成功
            }

            override fun onAdClicked(banner: AdropBanner) {
                // 広告がクリックされた
            }

            override fun onAdFailedToReceive(banner: AdropBanner, errorCode: Int) {
                // 広告受信失敗
            }
        }

        // 広告を読み込む
        adropBanner.load()
    }
}
レイアウトファイル(activity_banner.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <io.adrop.ads.banner.AdropBanner
        android:id="@+id/adrop_banner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

ネイティブ広告(Kotlin)

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.widget.ImageView
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import io.adrop.ads.native.AdropNativeAd
import io.adrop.ads.native.AdropNativeAdView

class NativeAdActivity : AppCompatActivity() {
    private lateinit var nativeAd: AdropNativeAd
    private lateinit var nativeAdView: AdropNativeAdView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_native)

        // ネイティブ広告を初期化
        nativeAd = AdropNativeAd(this, "YOUR_UNIT_ID")

        // 広告リスナーを設定
        nativeAd.listener = object : AdropNativeAd.Listener {
            override fun onAdReceived(ad: AdropNativeAd) {
                // 広告受信成功 - UIをバインド
                displayNativeAd(ad)
            }

            override fun onAdClicked(ad: AdropNativeAd) {
                // 広告がクリックされた
            }

            override fun onAdFailedToReceive(ad: AdropNativeAd, errorCode: Int) {
                // 広告受信失敗
            }
        }

        // 広告を読み込む
        nativeAd.load()
    }

    private fun displayNativeAd(ad: AdropNativeAd) {
        // ネイティブ広告ビューをインフレート
        val inflater = LayoutInflater.from(this)
        nativeAdView = inflater.inflate(
            R.layout.native_ad_layout,
            null
        ) as AdropNativeAdView

        // 広告要素をバインド
        val iconView = nativeAdView.findViewById<ImageView>(R.id.ad_icon)
        val titleView = nativeAdView.findViewById<TextView>(R.id.ad_title)
        val bodyView = nativeAdView.findViewById<TextView>(R.id.ad_body)
        val ctaButton = nativeAdView.findViewById<TextView>(R.id.ad_cta)

        // 広告データを設定
        ad.icon?.let { iconView.setImageBitmap(it) }
        titleView.text = ad.title
        bodyView.text = ad.body
        ctaButton.text = ad.callToAction

        // ネイティブ広告ビューに広告を登録
        nativeAdView.setNativeAd(ad)

        // コンテナに追加
        val adContainer = findViewById<View>(R.id.native_ad_container)
        adContainer.removeAllViews()
        adContainer.addView(nativeAdView)
    }

    override fun onDestroy() {
        nativeAd.destroy()
        super.onDestroy()
    }
}
ネイティブ広告レイアウト(native_ad_layout.xml)
<?xml version="1.0" encoding="utf-8"?>
<io.adrop.ads.native.AdropNativeAdView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="16dp">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <ImageView
            android:id="@+id/ad_icon"
            android:layout_width="48dp"
            android:layout_height="48dp"
            android:layout_alignParentStart="true" />

        <TextView
            android:id="@+id/ad_title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_toEndOf="@id/ad_icon"
            android:layout_marginStart="12dp"
            android:textSize="16sp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/ad_body"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/ad_title"
            android:layout_toEndOf="@id/ad_icon"
            android:layout_marginStart="12dp"
            android:layout_marginTop="4dp"
            android:textSize="14sp" />

        <TextView
            android:id="@+id/ad_cta"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/ad_body"
            android:layout_alignParentEnd="true"
            android:layout_marginTop="12dp"
            android:background="@drawable/button_background"
            android:padding="12dp"
            android:textColor="@android:color/white"
            android:textSize="14sp"
            android:textStyle="bold" />

    </RelativeLayout>

</io.adrop.ads.native.AdropNativeAdView>

インタースティシャル広告(Kotlin)

import android.os.Bundle
import android.widget.Button
import androidx.appcompat.app.AppCompatActivity
import io.adrop.ads.interstitial.AdropInterstitialAd

class InterstitialActivity : AppCompatActivity() {
    private var interstitialAd: AdropInterstitialAd? = null
    private lateinit var showButton: Button

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_interstitial)

        showButton = findViewById(R.id.show_interstitial_button)
        showButton.isEnabled = false

        // インタースティシャル広告を読み込む
        loadInterstitialAd()

        showButton.setOnClickListener {
            showInterstitialAd()
        }
    }

    private fun loadInterstitialAd() {
        interstitialAd = AdropInterstitialAd(this, "YOUR_UNIT_ID")

        interstitialAd?.listener = object : AdropInterstitialAd.Listener {
            override fun onAdReceived(ad: AdropInterstitialAd) {
                // 広告読み込み完了 - 表示可能
                showButton.isEnabled = true
            }

            override fun onAdFailedToReceive(ad: AdropInterstitialAd, errorCode: Int) {
                // 広告読み込み失敗
                showButton.isEnabled = false
            }

            override fun onAdFailedToShow(ad: AdropInterstitialAd, errorCode: Int) {
                // 広告表示失敗
            }

            override fun onAdDidPresentFullScreen(ad: AdropInterstitialAd) {
                // インタースティシャル広告が画面に表示された
            }

            override fun onAdDidDismissFullScreen(ad: AdropInterstitialAd) {
                // インタースティシャル広告が閉じられた - 新しい広告を読み込む
                loadInterstitialAd()
            }

            override fun onAdClicked(ad: AdropInterstitialAd) {
                // 広告がクリックされた
            }
        }

        interstitialAd?.load()
    }

    private fun showInterstitialAd() {
        interstitialAd?.let { ad ->
            if (ad.isLoaded) {
                ad.show()
            }
        }
    }

    override fun onDestroy() {
        interstitialAd?.destroy()
        super.onDestroy()
    }
}

リワード広告(Kotlin)

import android.os.Bundle
import android.widget.Button
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import io.adrop.ads.rewarded.AdropRewardedAd

class RewardedAdActivity : AppCompatActivity() {
    private var rewardedAd: AdropRewardedAd? = null
    private lateinit var showButton: Button

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_rewarded)

        showButton = findViewById(R.id.show_rewarded_button)
        showButton.isEnabled = false

        // リワード広告を読み込む
        loadRewardedAd()

        showButton.setOnClickListener {
            showRewardedAd()
        }
    }

    private fun loadRewardedAd() {
        rewardedAd = AdropRewardedAd(this, "YOUR_UNIT_ID")

        rewardedAd?.listener = object : AdropRewardedAd.Listener {
            override fun onAdReceived(ad: AdropRewardedAd) {
                // 広告読み込み完了 - 表示可能
                showButton.isEnabled = true
            }

            override fun onAdFailedToReceive(ad: AdropRewardedAd, errorCode: Int) {
                // 広告読み込み失敗
                showButton.isEnabled = false
            }

            override fun onAdFailedToShow(ad: AdropRewardedAd, errorCode: Int) {
                // 広告表示失敗
            }

            override fun onAdDidPresentFullScreen(ad: AdropRewardedAd) {
                // フルスクリーン広告が表示された
            }

            override fun onAdDidDismissFullScreen(ad: AdropRewardedAd) {
                // 広告が閉じられた - 新しい広告を読み込む
                loadRewardedAd()
            }

            override fun onAdClicked(ad: AdropRewardedAd) {
                // 広告がクリックされた
            }

            override fun onAdEarnRewardHandler(ad: AdropRewardedAd, type: Int, amount: Int) {
                // リワードを付与
                Toast.makeText(
                    this@RewardedAdActivity,
                    "リワード獲得: タイプ $type$amount 個",
                    Toast.LENGTH_SHORT
                ).show()

                // ここで実際のリワード付与ロジックを実装
                grantReward(type, amount)
            }
        }

        rewardedAd?.load()
    }

    private fun showRewardedAd() {
        rewardedAd?.let { ad ->
            if (ad.isLoaded) {
                ad.show()
            }
        }
    }

    private fun grantReward(type: Int, amount: Int) {
        // ユーザーにリワードを付与するロジック
        // 例:ゲームコイン、ライフ、アイテムなど
    }

    override fun onDestroy() {
        rewardedAd?.destroy()
        super.onDestroy()
    }
}

Javaサンプル

バナー広告(Java)

import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import io.adrop.ads.banner.AdropBanner;

public class BannerActivity extends AppCompatActivity {
    private AdropBanner adropBanner;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_banner);

        // バナー広告を初期化
        adropBanner = findViewById(R.id.adrop_banner);
        adropBanner.setUnitId("YOUR_UNIT_ID");

        // 広告リスナーを設定
        adropBanner.setListener(new AdropBanner.Listener() {
            @Override
            public void onAdReceived(AdropBanner banner) {
                // 広告受信成功
            }

            @Override
            public void onAdClicked(AdropBanner banner) {
                // 広告がクリックされた
            }

            @Override
            public void onAdFailedToReceive(AdropBanner banner, int errorCode) {
                // 広告受信失敗
            }
        });

        // 広告を読み込む
        adropBanner.load();
    }
}

インタースティシャル広告(Java)

import android.os.Bundle;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
import io.adrop.ads.interstitial.AdropInterstitialAd;

public class InterstitialActivity extends AppCompatActivity {
    private AdropInterstitialAd interstitialAd;
    private Button showButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_interstitial);

        showButton = findViewById(R.id.show_interstitial_button);
        showButton.setEnabled(false);

        loadInterstitialAd();

        showButton.setOnClickListener(v -> showInterstitialAd());
    }

    private void loadInterstitialAd() {
        interstitialAd = new AdropInterstitialAd(this, "YOUR_UNIT_ID");

        interstitialAd.setListener(new AdropInterstitialAd.Listener() {
            @Override
            public void onAdReceived(AdropInterstitialAd ad) {
                showButton.setEnabled(true);
            }

            @Override
            public void onAdFailedToReceive(AdropInterstitialAd ad, int errorCode) {
                showButton.setEnabled(false);
            }

            @Override
            public void onAdFailedToShow(AdropInterstitialAd ad, int errorCode) {
                // 広告表示失敗
            }

            @Override
            public void onAdDidPresentFullScreen(AdropInterstitialAd ad) {
                // 広告が表示された
            }

            @Override
            public void onAdDidDismissFullScreen(AdropInterstitialAd ad) {
                // 広告が閉じられた - 新しい広告を読み込む
                loadInterstitialAd();
            }

            @Override
            public void onAdClicked(AdropInterstitialAd ad) {
                // 広告がクリックされた
            }
        });

        interstitialAd.load();
    }

    private void showInterstitialAd() {
        if (interstitialAd != null && interstitialAd.isLoaded()) {
            interstitialAd.show();
        }
    }

    @Override
    protected void onDestroy() {
        if (interstitialAd != null) {
            interstitialAd.destroy();
        }
        super.onDestroy();
    }
}

応用サンプル

ダークモード対応

import io.adrop.ads.AdropSDK

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        // ダークモードを設定
        val isDarkMode = resources.configuration.uiMode and
            Configuration.UI_MODE_NIGHT_MASK == Configuration.UI_MODE_NIGHT_YES

        AdropSDK.setDarkMode(isDarkMode)
    }
}

テストモード

import io.adrop.ads.AdropSDK

class MyApplication : Application() {
    override fun onCreate() {
        super.onCreate()

        // 初期化
        AdropSDK.initialize(this, "YOUR_PRODUCTION_KEY")

        // 開発中のみテストモードを有効化
        if (BuildConfig.DEBUG) {
            AdropSDK.setTestMode(true)
        }
    }
}

関連ドキュメント