헤더 비딩
헤더 비딩은 광고 게시자의 앱에서 프로그래매틱 입찰을 수집한 후 NAM 서버로 광고 요청을 보내는 시스템입니다. NAM SDK 는 APS(Amazon Publisher Services) 모듈을 통해 배너 광고의 헤더 비딩을 지원합니다.
헤더 비딩을 사용할 경우, 광고를 로드하는 데 더 많은 시간이 소요될 수 있다는 단점이 있지만, 더 높은 가격의 광고를 게재할 수 있어 수익을 극대화할 수 있습니다.
APS SDK 포함하기
앱 수준 build.gradle 에 APS 미디에이션 모듈의 종속 항목을 추가합니다.
APS 모듈을 통해 헤더 비딩을 사용하려면 NAM 관리자에게 문의하시기 바랍니다.
명시적으로 APS 미디에이션 종속 항목의 버전을 설정할 경우, NAM SDK 와 호환되는 APS SDK 버전은 9.8.8 버전 이상입니다.
- Kotlin DSL
- Groovy
dependencies {
implementation("com.naver.gfpsdk.mediation:nam-aps:<latest-version>")
}
dependencies {
implementation 'com.naver.gfpsdk.mediation:nam-aps:<latest-version>'
}
APS SDK 초기화
APS SDK 를 사용하려면 Application.onCreate() 에서 아래와 같이 초기화해야 합니다.
- Kotlin
- Java
class SampleApplication : Application() {
override fun onCreate() {
super.onCreate()
...
AdRegistration.getInstance("YOUR_APS_APP_KEY", this)
AdRegistration.setMRAIDSupportedVersions(arrayOf("1.0", "2.0", "3.0"))
AdRegistration.setMRAIDPolicy(MRAIDPolicy.CUSTOM)
}
}
public class SampleApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
...
AdRegistration.getInstance("YOUR_APS_APP_KEY", this);
AdRegistration.setMRAIDSupportedVersions(new String[] {"1.0", "2.0", "3.0"});
AdRegistration.setMRAIDPolicy(MRAIDPolicy.CUSTOM);
}
}
배너 광고 로드
APS 배너 광고를 NAM SDK 에 통합하려면 먼저 APS 배너 광고를 로드해야 합니다. NAM 배너 광고를 로드하기 전에 APS 배너 광고 로드 성공 시 전달받는 DTBAdResponse 객체를 AdParam 에 추가한 후 GfpBannerAdView.loadAd() 를 호출해야 하고 로드 실패시에는 DTBAdResponse 객체 전달 없이 GfpBannerAdView.loadAd() 를 호출해야 합니다.
- Kotlin
- Java
class ExampleActivity : AppCompatActivity() {
private lateinit var bannerAdView: GfpBannerAdView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_example)
// The view container of banner ad view
val bannerAdContainer = findViewById(R.id.banner_ad_container)
// Create a new ad parameter
val adParam = AdParam.Builder()
.setAdUnitId("YOUR_AD_UNIT_ID")
.build()
// Create a new banner ad view
bannerAdView = GfpBannerAdView(this, adParam)
// Add the banner ad view to the view container
bannerAdContainer.addView(bannerAdView)
...
val dtbAdRequest = DTBAdRequest()
dtbAdRequest.sizes = DTBAdSize(320, 100, "YOUR_UUID")
dtbAdRequest.loadAd(object: DTBAdCallback {
override fun onFailure(adError: AdError) {
bannerAdView.loadAd()
}
override fun onSuccess(dtbAdResponse: DTBAdResponse) {
val adSizes = dtbAdResponse.dtbAds
if (adSizes != null && adSizes.isNotEmpty()) {
val apsAdParam = ApsUtils.createGfpApsAdParam(dtbAdResponse)
adParam.apsParam = apsAdParam
}
bannerAdView.loadAd()
}
})
}
override fun onDestroy() {
bannerAdView.destroy()
super.onDestroy()
}
}
public class ExampleActivity extends AppCompatActivity {
private GfpBannerAdView bannerAdView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_example);
// The view container of banner ad view
FrameLayout bannerAdContainer = findViewById(R.id.banner_ad_container);
// Create a new ad parameter.
AdParam adParam = new AdParam.Builder()
.setAdUnitId("YOUR_AD_UNIT_ID")
.build();
// Create a new banner ad view.
bannerAdView = new GfpBannerAdView(this, adParam);
...
DtbAdRequest dtbAdRequest = new DTBAdRequest();
dtbAdRequest.setSizes(new DTBAdSize(320, 100, "YOUR_UUID"));
dtbAdRequest.loadAd(new DTBAdCallback() {
@Override
public void onFailure(@NonNull AdError adError) {
bannerAdView.loadAd();
}
@Override
public void onSuccess(@NonNull DTBAdResponse dtbAdResponse) {
List<DTBAdSize> adSizes = dtbAdResponse.getDTBAds();
if (adSizes != null && !adSizes.isEmpty()) {
GfpApsAdParam apsAdParam =
ApsUtils.createGfpApsAdParam(dtbAdResponse);
adParam.setApsParam(apsAdParam);
}
bannerAdView.loadAd();
}
});
}
@Override
protected void onDestroy() {
bannerAdView.destroy();
super.onDestroy();
}
private void initialize() {
adParam = new AdParam.Builder()
.setAdUnitId("GFP_AD_UNIT_ID")
.build();
bannerAdView = new GfpBannerAdView(this, adParam);
bannerAdContainer.addView(bannerAdView);
}
}
하나의 AdParam 객체를 재사용하여 APS 광고를 여러번 요청할 경우, 요청 직전에 AdParam.buildUpon().setApsParam(null) 메서드를 호출하여 새로운 AdParam 객체를 생성함으로써 통해 기존에 설정된 AdParam 내 GfpApsAdParam 값을 초기화 해줘야 합니다.
DtbAdRequest.loadAd() 를 통해 APS 배너 광고 로드 후 onSuccess() 콜백이 전달되면 AdParam 에 GfpApsAdParam 객체를 반드시 전달해야 합니다. onFailure() 콜백이 전달되면
APS SDK 테스트
APS SDK 의 테스트 모드를 활성화할 경우, 테스트 광고를 수신할 수 있습니다. 아래 예시는 테스트 모드를 활성화하는 예시를 보여줍니다.
release 빌드에서는 테스트 모드를 비활성화 해야 합니다.
- Kotlin
- Java
class SampleApplication : Application() {
override fun onCreate() {
super.onCreate()
...
AdRegistration.enableTesting(true)
AdRegistration.enableLogging( true )
}
}
public class SampleApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
...
AdRegistration.enableTesting(true);
AdRegistration.enableLogging(true);
}
}
APS 가이드
APS 에 대한 자세한 사용법은 APS Android 가이드 를 참조하시면 됩니다. 아마존 계정으로 로그인이 필요합니다.