Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents
exclude다음 단계|주의사항

개요

본 가이드는 BuzzAdBenefit SDK의 피드 타입 광고를 연동하는 방법을 다루는 문서입니다. Feed는 여러 광고를 리스트 형식으로 볼 수 있는 지면입니다.

그림1. Feed
Note

Feed 타입을 연동하기 전, 공통 가이드의 연동 사항을 모두 적용했는지 확인해주세요.

 Feed 초기화

Application Class의 onCreate에 아래 코드를 추가합니다.

Code Block
public class App extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        final FeedConfig feedConfig = new FeedConfig.Builder(context, "YOUR_FEED_UNIT_ID")
          .feedHeaderViewAdapterClass(DefaultFeedHeaderViewAdapter.class)
          .build();
        final BuzzAdBenefitConfig buzzAdBenefitConfig = new BuzzAdBenefitConfig.Builder(context)
            .setFeedConfig(feedConfig)
            .build();
        BuzzAdBenefit.init(this, new BuzzAdBenefitConfig.Builder(context).build());
        ...(생략)...
    }
}

Expand
titleBenefit SDK 2.21 미만

PopConfig와 FeedConfig를 추가하는 interface가 다르니 주의해주세요

Code Block
final BuzzAdBenefitConfig buzzAdBenefitConfig = new BuzzAdBenefitConfig.Builder(context)
        .add(feedConfig)
        .build();
BuzzAdBenefit.init(this, buzzAdBenefitConfig);

Feed 보여주기

FeedHandler 클래스를 이용하여 피드를 사용자에게 보여줍니다. 피드를 보여주는 시점은 사용자가 앱내의 특정 버튼을 탭했거나 BuzzAdBenefit SDK에서 제공하는 다양한 EntryPoint(진입경로)가 될 수 있습니다. 여기서는 사용자가 매체사에서 구현한 버튼이나 배너 등을 탭했을때 피드를 보여주는 방법을 안내합니다.

  1. FeedConfig를 설정할 때 사용한 Feed unit id("YOUR_FEED_UNIT_ID")로 FeedHandler를 생성합니다.

  2. startFeedActivity()를 호출하여 Feed 액티비티를 실행합니다.

Code Block
languagejava
final FeedHandler feedHandler = new FeedHandler(context, "YOUR_FEED_UNIT_ID");
feedHandler.startFeedActivity(this);

SDK에서 제공하는 Activity가 아닌 다른 형태로 Feed를 보여주고 싶다면 고급 설정을 참고하세요.

Feed의 진입 전 광고 할당 받기

바로 startFeedActivity를 호출하는 경우 Feed 액티비티가 실행되면서 광고를 로드하게 되어, 유저에게 보여줄 수 있는 광고가 없어 빈 화면이 보이게 될 수도 있습니다. 이에 Feed 액티비티를 실행하기 전에 preload()를 호출한 뒤 onPreloaded() 콜백을 호출하여 상태를 확인한 후 광고가 있을때만 피드로 진입할 수 있도록 하는 것을 추천합니다.

  • feedHandler.getSize() : 광고의 개수

  • feedHandler.getTotalReward() : 적립 가능한 총 포인트 금액

Code Block
languagejava
final FeedHandler feedHandler = new FeedHandler(getFeedConfig());
feedHandler.preload(new FeedHandler.FeedPreloadListener() {
    @Override
    public void onPreloaded() {
        int feedAdSize = feedHandler.getSize();
        int feedTotalReward = feedHandler.getTotalReward();
        feedHandler.startFeedActivity(context);
    }

    @Override
    public void onError(AdError error) {
        // 광고가 없을 경우 호출됩니다. error를 통해 발생한 error의 원인을 알 수 있습니다
    
}
 
});
Note

유의사항

  • 프리로드한 FeedHandler와 동일한 인스턴스에서 startFeedActivity()를 호출해야 합니다.

    • 주의사항 : 하나의 FeedHandler 인스턴스에서 광고를 load/preload 한 경우, 그 인스턴스는 계속 같은 광고를 들고 있게 됩니다. 그래서 유저가 Activity에서 이탈하더라도 같은 객체로 startFeedActivity를 호출하는 경우 같은 광고 리스트를 보게 됩니다. 만약 피드에 진입할 때마다 새로 광고가 로드되는 것을 원하는 경우 새로운 FeedHandler 인스턴스를 만들어서 startFeedActivity()를 호출해야 합니다.

  • FeedHandler를 일회성으로 객체를 생성하여 preload 기능을 사용할 경우, preload에 대한 결과를 받지 못할 수 있습니다. Memory Leak 방지를 위해 feedHandler에 weakReference를 적용하고 있기 때문입니다. FeedHandler의 변수 선언을 지역변수가 아닌 Class 변수로 하는 등 일회적이지 않은 방식으로 객체를 생성하셔야 합니다.

Code Block
languagejava
// 일회성 사용의 예 private void preloadFeed() {
   //
WeakReference가 적용된 FeedHandler가
 
지역변수로서 선언이 되어서, 메모리에서 지워져 아래의 Listener 코드가 실행되지 않을 수 있습니다 final FeedHandler feedHandler = new FeedHandler(getFeedConfig()); feedHandler.preload(new FeedHandler.FeedPreloadListener() { @Override public void onPreloaded() { // 실행되지 않을 수 있습니다 } @Override public void onError(AdError error) { // 실행되지 않을 수 있습니다 } }); }
feedHandler.startFeedActivity(context); 를 호출하더라도, Nofill UI 보여집니다.
    }
});

개인정보 취급 방침

개인정보 보호법과 구글 정책에 에 따라, 개인정보 수집 및 사용에 대한 유저의 동의가 필요합니다. 별도의 지면 이동 없이, 동일 지면에서 개인정보 사용 정책을 확인할 수 있습니다. 미동의시 버즈빌 제품을 사용할 미동의시 Feed 지면을 이용할 수 없으며, 유저가 개인정보 수집 및 사용에 대한 동의를 한 이후부터 버즈빌의 유저 데이터 수집 및 광고 참여가 가능합니다.

버즈빌의 개인정보 취급 방침 UI 를 사용하면 별도의 지면 이동 없이, 동일 지면에서 개인정보 사용 정책을 확인할 수 있습니다.

개인정보 수집 동의는 bottom-sheet 형태로 보여주며, API로 호출 가능합니다.

<개인정보

개인정보 수집 동의 bottom-

sheet>

sheet

<미동의

미동의

Feed>

Feed

개인정보 취급 방침과 관련해서 다음과 같은 API를 사용할 수 있습니다.

Code Block
// 개인정보 취급 방침 UI를 보여주는 API
BuzzAdBenefit.getPrivacyPolicyManager().showContentUI(context, listener);

// 개인정보 취급 방침에 대해 `동의함`을 표시
BuzzAdBenefit.getPrivacyPolicyManager().grantConsent();
// 개인정보 취급 방침에 대해 `동의하지 않음`을 표시
BuzzAdBenefit.getPrivacyPolicyManager().revokeConsent();
// 개인정보 취급 방침에 `동의함` 여부를 확인
BuzzAdBenefit.getPrivacyPolicyManager().isConsentGranted();
(중요) 만약 위 API를 사용하지 않는 경우, 다음과 같은 상황에 Buzzvil의 개인정보 취급 방침에 대한 동의를 받는 UI를 퍼블리셔에서 직접 구현해야합니다
Note

동의를 받지 않은 상태에서 Feed의 preload() 기능을 사용할 경우, 항상 에러가 발생하게 됩니다.

이미 자체적으로 개인정보취급방침에 대한 동의를 받았다면 다음과 같은 코드를 통해 버즈빌 UI가 안보이도록 설정할 수 있습니다.

BuzzAdBenefit.getPrivacyPolicyManager().grantConsent();

자체적으로 동의를 받을 때는 다음과 같은 경우를 고려해야 합니다.

  • 미동의 상태에서 Feed 진입 시

  • 미동의 상태에서 Pop Icon 클릭 시

  • 그 외, 버즈빌 프로덕트

노출을 동의하는 단계
Note
주의 사항
  • 노출 전단계

Expand
title버즈빌 SDK에서 구현한 “개인정보 취급 방침에 대한 동의 UI”를 사용하지 않고 직접 구현하고자 할 경우

BuzzAdBenefit.getPrivacyPolicyManager()

는 BuzzAdBenefit

.

init

grantConsent(

...) 호출 이후에 사용이 가능합니다.
  • 이미 자체적으로 개인정보취급방침에 대한 동의를 받았다면 다음과 같은 코드를 통해 Buzzvil UI가 안보이도록 설정할 수 있습니다.

    Code Block
    BuzzAdBenefit.getPrivacyPolicyManager().grantConsent();
  • 동의를 받지 않은 상태에서 Feed의 preload() 기능을 사용할 경우, 항상 에러가 발생하게 됩니다.

    ); 를 초기화 시점에 호출해 준 후에 다음과 같은 상황을 고려하여 직접 구현해 주어야 합니다.

    만약 위 API를 사용하지 않는 경우, 다음과 같은 상황에 버즈빌의 개인정보 취급 방침에 대한 동의를 받는 UI를 퍼블리셔에서 직접 구현해야합니다.

    • 미동의 상태에서 Feed 진입 시

    • 미동의 상태에서 Pop Icon 클릭 시

    • 그 외, 버즈빌 프로덕트 노출을 동의하는 단계