앱 기동 시 최초 실행되는 액티비티를 에이드랍의 스플래시 액티비티로 대체함으로써 간단하게 스플래시 광고를 연동할 수 있는 방법입니다.
0단계. 구성요소 확인하기
스플래시 광고가 게재되는 스플래시 화면은 로고와 광고 유닛으로 구성됩니다.
로고가 너무 클 경우, 광고에 로고가 가려지는 경우가 발생할 수 있으니 아래의 가이드를 꼭 확인해 주세요.
로고 영역 : 스플래시 화면에 표시될 로고 이미지는 배경을 포함한 로고 이미지 사이즈는 288dp x 288dp, 가운데 로고 128dp x 128dp를 권장합니다.
광고 영역 : 영역 자체 사이즈는 360dp X 270dp 입니다. 광고 소재 이미지 사이즈는 실제 노출 시 화질의 손상을 막기 위해 영역의 3배 사이즈인 1080dp x 810dp를 권장합니다.
1단계. 리소스 추가
로컬 환경에서 배너 노출을 확인하고 싶다면, 아래의 TEST_UNIT_ID를 사용해주세요.
자세한 예시는 Github에서 확인하실 수 있습니다.
개발용 광고 Unit Id 는 PUBLIC_TEST_UNIT_ID_SPLASH
입니다.
PUBLIC_TEST_UNIT_ID_SPLASH
아래 리소스를 추가해주세요. 스플래시 광고 직후에 실행 될 메인 액티비티 이름을 패키지명을 포함해서 입력해주세요. 광고 Unit Id 는 Adrop 콘솔에서 생성한 스플래시 애드 Unit Id를 입력해주세요.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="adrop_splash_ad_next_activity"
translatable="false">{your_init_activity}
</string> <!-- com.company.app.MainActivity -->
<string name="adrop_splash_ad_unit_id"
translatable="false">{your_splash_unit_id}
</string> <!-- PUBLIC_TEST_UNIT_ID_SPLASH for test -->
<integer name="adrop_splash_ad_display_duration">1000
</integer> <!-- (optional) default 1s -->
</resources>
- values/theme.xml
아래 스타일과 같이 SplashTheme 의 parent를 수정해주세요.
<style
name="Theme.App.SplashTheme"
parent="Theme.AppCompat.NoActionBar"/>
- values-v31/theme.xml
API 31 (안드로이드 12) 부터 아래 설정이 필요합니다.
스플래시 화면에 표시 될 로고 이미지를 추가하고, windowSplashScreenAnimatedIcon
에 입력해주세요. 배경을 포함한 로고 이미지 사이즈는 288dp x 288dp, 가운데 로고 128dp x 128dp를 권장합니다.
windowSplashScreenBackground
에 배경 색상을 입력해주세요.
<style name="Theme.App.SplashTheme" parent="Theme.SplashScreen">
<item name="windowSplashScreenAnimatedIcon">@drawable/your_logo</item>
<item name="windowSplashScreenBackground">#ffffff</item>
<item name="windowSplashScreenAnimationDuration">200</item>
<item name="postSplashScreenTheme">@style/Theme.App.SplashTheme.TranslucentStatus</item>
</style>
<style name="Theme.App.SplashTheme.TranslucentStatus" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowTranslucentStatus">true</item>
</style>
2단계. Androidmanifest.xml
수정
io.adrop.ads.splash.AdropSplashAdActivity
액티비티를 매니페스트에 추가해주세요.
기존의 메인 액티비티가 실행되지 않도록 android.intent.action.MAIN
와 android.intent.category.LAUNCHER
를 삭제해주세요.
<application>
...
<activity
android:name="io.adrop.ads.splash.AdropSplashAdActivity"
android:exported="true"
android:theme="@style/Theme.App.SplashTheme"
tools:replace="android:theme">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
...
</application>
3단계. layout/activity_adrop_splash_ad.xml
추가
파일을 추가하신 후, 로고 이미지와 배경 색상을 수정해주세요.
adrop_splash_ad_image
는 스플래시 광고에 사용될 뷰이므로, 삭제하시면 안됩니다.
스플래시 화면이 자연스럽게 이어지려면, 첨부파일에서 뷰의 위치는 수정되지 않아야 합니다.
(선택) 고급 설정
스플래시 광고의 on / off 를 컨트롤 하고 싶을 경우 콜백 함수를 활용할 수 있습니다.
class YourApp: Application {
// Before splash activity start
val splashAd = AdropSplashAd(application) {
return remoteConfig.getValue("").asBoolean()
}
splashAd.splashAdListener = object : AdropSplashAdListener {
override fun onAdReceived(ad: AdropSplashAd) {
Log.d("Adrop", "splash ad received ${ad.unitId}, ${ad.creativeId}")
}
override fun onAdFailedToReceive(ad: AdropSplashAd, errorCode: AdropErrorCode) {
Log.d("Adrop", "splash ad failed to receive ${ad.unitId}, $errorCode")
}
override fun onAdImpression(ad: AdropSplashAd) {
Log.d("Adrop", "splash ad onAdImpression ${ad.unitId}")
}
}
...
}
...
// When you want to stop splash before finishing
splashAd.close()
public class App extends Application {
// Before splash activity start
AdropSplashAd splashAd = new AdropSplashAd(this, (ad) -> {
return remoteConfig.getValue("").asBoolean();
});
splashAd.setSplashAdListener(new AdropSplashAdListener() {
@Override
public void onAdReceived(@NotNull AdropSplashAd ad) {
Log.d("Adrop", "splash ad received " + ad.getUnitId() + ", " + ad.getCreativeId());
}
@Override
public void onAdFailedToReceive(@NotNull AdropSplashAd ad, @NotNull AdropErrorCode errorCode) {
Log.d("Adrop", "splash ad failed to receive " + ad.getUnitId() + " , error: " + errorCode);
}
@Override
public void onAdImpression(@NotNull AdropSplashAd ad) {
Log.d("Adrop", "splash ad impressed " + ad.getUnitId());
}
});
...
}
스플래시 광고가 노출되는 도중 중단하고 싶을 경우, close() 함수를 호출 할 수 있습니다.
// When you want to stop splash before finishing
splashAd.close()
// When you want to stop splash before finishing
splashAd.close();
console에서 발급받은 unitId가 한 번이라도 request 가 들어가면 성공적으로 연결됩니다.
광고 유닛에 연결된 광고가 없다면, 배너가 랜더링 되지 않습니다.
따라서 배너가 정상적으로 랜더링 되는지 확인하고 싶으면, TEST_UNIT_ID 를 사용해 주세요.
TEST_UNIT_ID 를 사용하면 배너 랜더링 확인은 할 수 있지만, console과 연결되지는 않습니다.
따라서 성공적인 연결을 확인하려면 콘솔에 등록한 광고 유닛의 아이디를 적용해 주시고, 하단 이미지 처럼 콘솔을 확인해 주세요.