개요
Vungle Banner는 현재 베타 단계에 있습니다. 성공적인 시작을 위해 액세스하려면 계정 관리자에게 직접 문의하시기 바랍니다.
Vungle은 Vungle SDK v6.5.1부터 배너 광고를 지원합니다. MREC 및 배너 광고 모두 API 버전 16 이상이 필요합니다.
MREC 광고와 유사하게 배너 동영상 광고는 앱 레이아웃 내 어디에나 위치할 수 있는 직사각형 광고로, 일반적으로 화면 상단 또는 하단에 표시되므로 광고가 재생되는 동안 사용자가 앱과 계속 상호 작용할 수 있습니다. 배너 광고를 렌더링하기 위한 컨테이너 크기에는 320x50, 300x50 또는 728x90(태블릿용)이 있습니다.
배너 크기 | 측정 기준 |
|
320x50 |
|
300x50 |
|
728x90 (태블릿용) |
1단계. 기본 통합 완료
Android 또는 Amazon 앱에 배너를 통합하려면 먼저 기본 통합 문서의 지침을 따릅니다. 이 문서에는 추가 정보가 포함되어 있으며 기본 통합을 완료했다고 가정하고 설명을 진행합니다.
2단계. 이벤트 리스너 구현
이제 광고 로드 이벤트용 LoadAdCallback
및 광고 재생 이벤트용 PlayAdCallback
을(를) 구현하거나, loadAd
및playAd
을(를) 호출하는 인라인 콜백을 구현하여 모든 이벤트에 일반 콜백을 사용할 수 있습니다.
LoadAdCallback 구현
private final LoadAdCallback vungleLoadAdCallback = new LoadAdCallback() {
@Override
public void onAdLoad(String id) {
// Ad has been successfully loaded for the placement
}
@Override
public void onError(String id, VungleException exception) {
// Ad has failed to load for the placement
}
};
// 6.4.x & below
private final LoadAdCallback vungleLoadAdCallback = new LoadAdCallback() {
@Override
public void onAdLoad(String id) {
// Ad has been successfully loaded for the placement
}
@Override
public void onError(String id, Throwable throwable) {
// Ad has failed to load for the placement
}
};
오버라이딩 가능 메서드 | 설명 |
---|---|
onAdLoad(String id) |
광고가 성공적으로 로드되고 플레이스먼트에 재생될 때 호출됩니다 |
onError(String id) |
광고를 재생하는 동안 오류가 발생하면 호출됩니다. VungleException 의 getLocalizedMessage 오류 메시지를 확인하고 getExceptionCode 을(를) 디버깅에 사용할 수 있습니다.
|
PlayAdCallback 구현
private final PlayAdCallback vunglePlayAdCallback = new PlayAdCallback() {
@Override
public void onAdStart(String id) {
// Ad experience started
}
@Override
public void onAdEnd(String id) {
// Ad experience ended
}
@Override
public void onAdClick(String id) {
// User clicked on ad
}
@Override
public void onAdRewarded(String id) {
// User earned reward for watching an ad
}
@Override
public void onAdLeftApplication(String id) {
// User has left app during an ad experience
}
@Override
public void onError(String id, VungleException exception) {
// Ad failed to play
}
};
// 6.5.x & below
private final PlayAdCallback vunglePlayAdCallback = new PlayAdCallback() {
@Override
public void onAdStart(String placementReferenceId) {
// Ad experience started
}
// Deprecated
@Override
public void onAdEnd(String placementReferenceId, boolean completed, boolean isCTAClicked) {
// Invoked when the ad experience is completed
// isCTAClicked flag indicates whether CTA download button has been triggered
// completed flag will indicate whether user has watched 80% of video or longer.
}
@Override
public void onError(String placementReferenceId, VungleException exception) {
// Ad failed to play
}
};
오버라이딩 가능 메서드 | 설명 |
---|---|
onAdStart(String id) |
광고가 성공적으로 실행되고 기기에 표시될 때 호출됩니다. |
onAdEnd(String id) |
컨트롤이 호스팅 앱으로 다시 반환되기 직전에 전체 광고 경험이 완료될 때 호출됩니다. |
onAdClick(String id) |
사용자가 동영상 광고 또는 다운로드 버튼을 클릭할 때 호출됩니다. |
onAdRewarded(String id) |
사용자가 보상형 동영상의 80%를 완료하고 보상을 받아야 할 때 호출됩니다. 사용자에 대한 보상은 해당 장소에서 이루어져야 하며 오직 보상형 플레이스먼트에 대해서만 트리거됩니다. |
onAdLeftApplication(String id) |
광고에 관련된 스토어 페이지를 여는 것과 같이 광고 경험이 완료되기 전에 사용자가 앱을 떠날 때 호출됩니다. |
onAdError(String id, VungleException exception) |
광고를 재생하는 동안 오류가 발생하면 호출됩니다. VungleException 의 getLocalizedMessage 오류 메시지를 확인하고 getExceptionCode 을(를) 디버깅에 사용할 수 있습니다.
|
3단계. 배너 광고 로드, 표시 및 닫기
배너 광고 로드
배너 광고 로드는 다른 광고 형식과 다르게 작동합니다. 로드, 재생 및 광고 가용성 확인에 사용하는 특정 Banners
API가 있습니다. 로드하려는 배너의 크기를 지정해야 합니다. 그러면 SDK가 대시보드에서 구성한 시간 간격으로 이를 자동 새로 고침합니다. 또한 배너 피드를 지원하도록 플레이스먼트를 구성해야 하므로 플레이스먼트에 대해 배너 광고를 활성화하려면 Vungle 계정 관리자에게 문의해 주십시오.
-
loadBanner
메서드 호출을 통한 배너 광고 로드:Banners.loadBanner("BANNER_ID", AdConfig.AdSize.BANNER, vungleLoadAdCallback);
-
canPlayAd
메서드 호출을 통한 배너 광고 유효성 확인:Banners.canPlayAd(ad.placementReferenceId, AdConfig.AdSize.BANNER);
배너 광고 표시
뷰 크기가 고정되어 있으므로, 배너 광고 표시에 사용되는 컨테이너를 지원 크기인 320x50, 300x50 또는 728x90(태블릿용) 중 하나로 지정해야 합니다. 화면의 아무 곳에나 뷰를 배치 할 수 있습니다. 이 컨테이너는 LayOut
입니다. 컨테이너 크기는 사용 중인 배너 크기와 같거나 커야 합니다. LayOut
은(는) 화면 어디에나 배치할 수 있습니다. 그런 다음 Banners
API를 통해 사용 중인 배너의 크기를 전달해야 합니다.
표시할 크기를 지정하기 위해 Banners.loadBanner
을(를) 호출할 때, 이 개체를 전달하고 Banners.getBanner
을(를) 사용하여 Banners
광고 개체를 가져오는 데 사용합니다. 마지막으로 addView
메서드를 호출하여 컨테이너를 배너 광고와 연결합니다.
private RelativeLayout bannerContainer = findViewById(...);
// Check for banner ad availability and display
if (Banners.canPlayAd("BANNER_ID", AdConfig.AdSize.BANNER)) {
VungleBanner vungleBanner = Banners.getBanner("BANNER_ID", AdConfig.AdSize.BANNER, vunglePlayAdCallback);
bannerContainer.addView(vungleBanner);
}
배너 광고 닫기
배너 광고 뷰는 컨테이너 뷰에 추가되어 있으므로 광고 뷰가 화면에서 사라지거나 활동 또는 조각이 삭제되거나 상위 뷰 컨테이너가 재사용 또는 삭제되는 경우 반드시 제거되어야 합니다. 이전 광고를 닫지 않고 다른 배너를 재생하면 앱에서 예상치 못한 동작이 발생할 수 있습니다.
vungleBanner.destroyAd();
4단계. 고급 제어를 위한 당사 VungleBanner
API 사용 (선택)
대부분의 경우 위에서 설명한 통합으로 충분히 VungleBanner
을(를) 관리할 수 있습니다. 그러나 VungleBanner
뷰가 목록 또는 RecyclerView
안에 있는 경우 관리되는 VungleBanner
이(가) 제대로 작동하지 않게 됩니다. 사용자가 광고 화면 밖으로 스크롤 했다가 다시 스크롤을 되돌리면, 광고는 종료되고 더 이상 존재하지 않게 됩니다. 이러한 경우 Vungle은 VungleBanner
을(를) 보다 세밀하게 제어할 수 있는 고급 API를 제공합니다.
VungleBanner
클래스 API
이러한 API를 통해 개발자는 개발자 어플리케이션에서 다양한 수명 주기 이벤트에 걸쳐 VungleBanner
를 세부적으로 제어할 수 있습니다. 대부분의 사용 사례에서 개발자는 이러한 메서드를 호출할 필요가 없습니다. VungleBanner
을(를) 상위 뷰에 추가하기만 하면 됩니다.
그러나 드물게 뷰가 재활용되거나 (RecyclerView
, ListView
등) 가시성을 수동으로 처리해야 하는 경우(일부 구형 Android 장치에서는 화면이 꺼질 때 WebView
가 자동으로 일시 중지되지 않음)가 있습니다.
이름 | 기능 | 참고 |
disableLifeCycleManagement(boolean disabled) |
배너 자동 관리를 비활성화하기 위해 호출 | renderAd 및 setAdVisibility를 작동시키려면 true로 설정되어야 합니다 |
renderAd* |
광고가 보이지 않는 경우 렌더링 | 새 광고를 로드할 수도 있습니다 |
setAdVisibility* |
배너가 화면에 표시되면 뷰 컨테이너에 알립니다 | 배너 일시 중지 및 재개 |
destroyAd |
더 이상 필요하지 않을 때 삭제를 호출하면, 뷰 컨테이너를 더 이상 사용할 수 없습니다 | 배너 리소스 해제 |
finishAd* |
현재 광고를 중지하고 보고서를 전송하며 이후에 다른 광고가 로드되도록 허용합니다 (RecyclerView 또는 ListView와 통합하는 특정한 경우에만 적용) | 배너 리소스 해제 |
*이 API를 사용하기 전에 vungleBannerAd.disableLifeCycleManagement(true)
을(를) 호출해야 합니다.
관리되는 및 관리되지 않는 VungleBanner
뷰
VungleBanner
은(는) 관리되는 VungleBanner
뷰가 기본 설정으로 되어있습니다. 즉,이 뷰를 상위 컨테이너에 추가하는 순간 Vungle이 광고 표시 시기, 광고 삭제 시기 및 보고서 전송 시기를 제어합니다. 가시성 이벤트도 관리되기 때문에, 개발자는 배너 뷰 개체가 화면에 있는지 여부를 SDK에 알릴 필요가 없습니다. 개발자에게 재활용 가능한 뷰 또는 ViewHolder
패턴 내부에 VungleBanner
뷰가 없는 경우 VungleBanner
사용이 선호됩니다.
VungleBanner
뷰가 ListView
또는 RecyclerView
안에 있는 경우, 관리되는 VungleBanner
은(는) 제대로 작동하지 않게 됩니다. 사용자가 광고 화면 밖으로 스크롤 했다가 다시 스크롤을 되돌리면, 광고는 종료되고 더 이상 존재하지 않게 됩니다.
이러한 경우 개발자가 VungleBanner
의 수명 주기를 수동으로 처리할 수 있도록, disableLifeCycleManagement(boolean disable)
API를 추가했습니다.
VungleBanner
를 뷰에 추가하거나 뷰를 바인딩하기 전에 다음을 설정합니다.
vungleBannerAd.disableLifeCycleManagement(boolean disabled)
다음을 호출해야 합니다.
- 뷰가 바인딩 된 경우
VungleBanner.renderAd()
- 광고가 재활용되거나 더 이상 표시되지 않는 경우
VungleBanner.setAdVisibility(true|false)
-
VungleBanner
개체가 더 이상 필요하지 않을 경우VungleBanner.destroyAd()
5단계. 배너형 광고 맞춤 설정 (선택)
새 adConfig
개체를 playAd
에 추가하여 재생하는 광고를 개별적으로 사용자 지정할 수 있는 옵션이 있습니다. AdConfig
개체가 null이 되는 경우, 광고가 기본 구성으로 재생될 수 있습니다. 또는 개체가 null이 아닌 경우, AdConfig
setter에서 설정을 재지정할 수도 있습니다. 다음은 AdConfig
사용 방법에 대한 예입니다.
Vungle.playAd(placementReferenceID, adConfig, vunglePlayAdCallback);
위의 예에서는 맞춤형 구성 옵션이 포함된 adConfig
개체를 사용합니다. 다음과 같이 AdConfig
개체를 설정합니다.
AdConfig adConfig = new AdConfig();
adConfig.setAdOrientation(AdConfig.AUTO_ROTATE);
adConfig.setMuted(true);
Vungle.playAd(placementReferenceID, adConfig, vunglePlayAdCallback);
다음 목록은 배너 광고에 사용 가능한 AdConfig
옵션을 보여줍니다.
옵션 | 설명 |
|
동영상이 주변의 어플리케이션의 설정 중 일치하는 오디오 설정으로 시작되어야 하는 경우 'false', 음소거로 시작되어야 하는 경우 'true' |
|
동일한 세션에서 재생되는 광고의 수를 추적하려면 서수의 정수 값을 사용합니다 |
참고: 여러 광고에 대해 동일한 AdConfig
개체를 사용할 수 있습니다.
모범 사례
- 항상
VungleBanner
을(를) 뷰에 바인딩하기 이전에 상위 활동이 완료되었는지 배너 광고를 표시하려 하기 전에 확인는 습관을 들이시기 바랍니다.if (activity != null && activity.isFinishing()) { return; }
-
VungleBanner
의LayoutParams
을(를) 변경하지 마십시오. 이는 배너가 표시되는 방식에 부정적인 영향을 미치고 광고가 보이지 않게 될 수 있습니다. - 요청된 광고보다 작은 크기의 컨테이너에 광고를 넣지 마십시오. 일반 배너(320x50)를 요청하는 경우 상위 컨테이너가 320dp x 50dp 이상인지 확인하여야 합니다.