개요
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()
}
}
복사
<?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()
}
}
복사
<?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,
"보상 획득: $amount 개의 $type",
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)
}
}
}