클릭 처리 재정의
본 가이드에서는 광고 클릭 시 열리는 랜딩 페이지를 연동 앱의 설정에 따라 앱 내 내부 브라우저 또는 커스텀 탭으로 변경 처리하는 방법을 설명합니다.
클릭 처리 재정의는 S2S(Server-to-Server) 광고에 한해서만 지원되며, DFP, FAN, AppLovin 과 같은 C2S(Client-to-Server) 광고에서는 지원되지 않습니다.
클릭 처리 재정의는 SdkPropertiesBuilder.clickHandler() 로 정의할 수 있는 전역적인 설정방식과 개별 광고 로더별로 설정할 수 있는 설정방식이 있고 만약, 전역 설정과 개별 광고 로더 설정이 모두 되어 있을 경우, 우선순위는 아래와 같습니다.
- 개별 광고 로더 설정 (높은 우선순위)
- 전역 설정 (낮은 우선순위)
또한, 두 설정 방식 모두 아래 예시와 같이 ClickHandler 구현체를 생성하여 설정하는 방식이고 자세한 설명은 아래에 이어서 설명합니다.
- Kotlin
- Java
val clickHandler = object : ClickHandler {
override fun handleClick(context: Context, vararg clickThroughs: String): Boolean {
// 클릭 처리가 성공할 경우 true 반환
// 클릭 처리가 실패할 경우 false 반환
}
}
ClickHandler clickHandler = new ClickHandler() {
@Override
public boolean handleClick(@NonNull Context context, @NonNull String... clickThroughs) {
// 클릭 처리가 성공할 경우 true 반환
// 클릭 처리가 실패할 경우 false 반환
}
};
ClickHandler 구현 시, handleClick() 메서드에서 클릭 처리가 성공할 경우에만 true 값을 반환해야 합니다. 정확한 return 값을 전달해야만 올바른 과금이 발생하니 반드시 확인해 주세요.
handleClick()의 두 번째 인자로 전달되는 clickThroughs 값은 최대 2개의 값이 전달될 수 있습니다. 순차적으로 랜딩 처리를 수행하고 둘 중 하나라도 랜딩 처리가 성공할 경우에만 true 를 반환하고, 이외의 경우는 false 를 반환해 주세요.
전역 설정
아래 예시와 같이 SdkPropertiesBuilder.clickHandler() 메서드에 ClickHandler 구현체를 설정하는 방 식입니다.
- Kotlin
- Java
GfpSdk.setSdkProperties(
GfpSdk.getSdkProperties().buildUpon()
.clickHandler(object : ClickHandler {
override fun handleClick(context: Context, vararg clickThroughs: String): Boolean {
for (clickThrough in clickThroughs) {
try {
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(clickThrough))
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(intent)
return true
} catch (ignore: Exception) {
// do nothing
}
}
return false
}
})
.build()
)
GfpSdk.setSdkProperties(
GfpSdk.getSdkProperties().buildUpon()
.clickHandler(new ClickHandler() {
@Override
public boolean handleClick(@NonNull Context context, @NonNull String... clickThroughs) {
for (String clickThrough : clickThroughs) {
try {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(clickThrough));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
return true;
} catch (Exception ignore) {
// do nothing
}
}
return false;
}
})
.build()
);
개별 광고 로더 설정
특정 광고에만 별도의 클릭 처리 재정의가 필요한 경우, 사용할 광고 로더별로 별도의 클릭 처리를 재정의할 수 있습니다.
GfpBannerAdView 사용시
- Kotlin
- Java
val bannerAdView = GfpBannerAdView(this, adParam)
...
bannerAdView.setClickHandler(object: ClickHandler {
override fun handleClick(context: Context, vararg clickThroughs: String): Boolean {
...
}
})
GfpBannerAdView bannerAdView = new GfpBannerAdView(this, adParam);
...
bannerAdView.setClickHandler(new ClickHandler() {
@Override
public boolean handleClick(@NonNull Context context, @NonNull String... clickThroughs) {
...
}
});
GfpAdLoader 사용시
- Kotlin
- Java
val adLoader = GfpAdLoader.Builder(this, adParam)
.withClickHandler(object : ClickHandler {
override fun handleClick(context: Context, vararg clickThroughs: String): Boolean {
...
}
})
.build()
GfpAdLoader adLoader = new GfpAdLoader.Builder(this, adParam)
.withClickHandler(new ClickHandler() {
@Override
public boolean handleClick(@NonNull Context context, @NonNull String... clickThroughs) {
...
}
})
.build();
GfpRewardedAdManager 사용시
- Kotlin
- Java
val rewardedAdManager = GfpRewardedAdManager(this, adParam)
...
rewardedAdManager.setClickHandler(object : ClickHandler {
override fun handleClick(context: Context, vararg clickThroughs: String): Boolean {
...
}
})
GfpRewardedAdManager rewardedAdManager = new GfpRewardedAdManager(this, adParam);
...
rewardedAdManager.setClickHandler(new ClickHandler() {
@Override
public boolean handleClick(@NonNull Context context, @NonNull String... clickThroughs) {
...
}
});
GfpInterstitialAdManager 사용시
- Kotlin
- Java
val interstitialAdManager = GfpInterstitialAdManager(this, adParam)
...
interstitialAdManager.setClickHandler(object : ClickHandler {
override fun handleClick(context: Context, vararg clickThroughs: String): Boolean {
...
}
})
GfpInterstitialAdManager interstitialAdManager = new GfpInterstitialAdManager(this, adParam);
...
interstitialAdManager.setClickHandler(new ClickHandler() {
@Override
public boolean handleClick(@NonNull Context context, @NonNull String... clickThroughs) {
...
}
});
GfpVideoAdScheduleManager 사용시
- Kotlin
- Java
val videoAdScheduleManager = GfpVideoAdScheduleManager(...)
...
videoAdScheduleManager.setGfpVideoProperties(
GfpVideoProperties(0L, object: ClickHandler {
override fun handleClick(context: Context, vararg strings: String): Boolean {
...
}
})
)
GfpVideoAdScheduleManager videoAdScheduleManager = new GfpVideoAdScheduleManager(...);
...
videoAdScheduleManager.setGfpVideoProperties(
new GfpVideoProperties(0L, new ClickHandler() {
@Override
public boolean handleClick(@NonNull Context context, @NonNull String... strings) {
...
}
})
);
Prism 플레이어 사용시
- Kotlin
- Java
val gladAdParams = GladAdParams(
param = adParamOf(unitId, vid),
scheduleParam = VideoAdScheduleParam.Builder(unitId)
.setDuration(contentDurationMs / 1000L)
.setAdSchedulePolicy(pre, mid, post)
.setAdNoticeDurationSec(noticeDurationMs / 1000L)
.build(),
clickHandler = { context, clickThroughs ->
...
true
}
)
GladAdParams gladAdParams = new GladAdParams(
adParamOf(unitId, vid),
new VideoAdScheduleParam.Builder(unitId)
.setDuration(contentDurationMs / 1000L)
.setAdSchedulePolicy(pre, mid, post)
.setAdNoticeDurationSec(noticeDurationMs / 1000L)
.build(),
(context, clickThroughs) -> {
...
return true;
}
);