Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

목차

개요

BuzzAd Android용 SDK가 제공하는 Feed 진입 경로 이외에도 앱 화면의 아이콘, 버튼, 배너 등 레이아웃 UI에 뷰를 직접 구현하여 Feed로 진입하는 경로를 만들 수 있습니다.

진입 경로를 생성할 수 있는 UI 컴포넌트의 예시는 아래 다이어그램을 참고하세요. 또한 샘플 앱에서 제공하는 다양한 커스텀 진입 경로들의 샘플 코드를 확인해 보세요.

준비 사항

진입 경로의 정상적인 동작을 위해서는 Feed 지면 초기화 토픽의 설명에 따라 반드시 BuzzAdBenefitConfigFeedConfig를 추가해야 합니다.

진입 경로 추가하기

액티비티, 프래그먼트, 뷰 내부 등에 Feed 진입 경로를 생성할 수 있습니다. Feed 진입 경로를 UI 레이아웃에 추가하려면 UI 레이아웃을 구현한 후 FeedEntryView ViewGroup을 추가하세요.

사용자 반응 추적하기

진입 경로를 생성한 후 buzzvilFeedEntryViewName을 추가해 뷰의 노출 수와 사용자 클릭 수를 추적할 수 있습니다. 사용자 반응 추적 기능을 사용하려면 buzzvilFeedEntryViewName을 구성하는 내용을 버즈빌 매니저에게 전달하세요.

  • 사용자 반응 추적 기능을 추가하기 전 데이터 관리 설정을 위해 버즈빌 매니저에게 연락하세요.

  • buzzvilFeedEntryViewName으로 들어가는 your_custom_entry_point_1 값으로는 icon, icon_message, banner 등 뷰를 설명할 수 있는 내용을 권장합니다.

XML로 진입 경로 구현하기

다음은 your_image를 눌렀을 때 Feed 지면이 열리도록 XML로 진입 경로를 구현한 예시입니다.

<?xml version="1.0" encoding="utf-8"?>
<!--  FeedEntryView을 추가합니다. -->
<com.buzzvil.buzzad.benefit.presentation.feed.entrypoint.FeedEntryView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:buzzvilFeedEntryViewName="your_custom_entry_point_1"> // 뷰에 대한 사용자 반응 추적
    
<!--  직접 UI를 구현합니다.  -->
   <ImageView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:src="@drawable/your_image"
      />

</com.buzzvil.buzzad.benefit.presentation.feed.entrypoint.FeedEntryView>

액티비티에 동적으로 진입 경로 구현하기

레이아웃

다음은 res/layout 하위의 레이아웃 파일(feed_entry_point.xml)에 진입 경로를 동적으로 구현한 예시입니다.

<?xml version="1.0" encoding="utf-8"?>
<!--  FeedEntryView를 추가합니다. -->
<com.buzzvil.buzzad.benefit.presentation.feed.entrypoint.FeedEntryView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:buzzvilFeedEntryViewName="your_custom_entry_point_1"> // 뷰에 대한 사용자 반응 추적

<!--  직접 UI를 구현합니다.  -->
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/your_image" 
        />

</com.buzzvil.buzzad.benefit.presentation.feed.entrypoint.FeedEntryView>

액티비티 레이아웃

다음은 res/layout 하위의 액티비티 레이아웃 파일에 진입 경로를 동적으로 구현한 예시입니다.

...
    <FrameLayout
        android:id="@+id/entryPointPlaceholder"
        ... />
...

액티비티 코드

다음은 액티비티 소스 코드 파일에 진입 경로를 동적으로 구현한 예시입니다.

    final ViewGroup parent = findViewById(R.id.entryPointPlaceholder);
    final FeedEntryView entryView = (FeedEntryView) getLayoutInflater().inflate(R.layout.feed_entry_point, null);
    entryView.setFeedEntryViewName("your_custom_entry_point_1"); // 뷰에 대한 사용자 반응 추적
    parent.addView(entryView);

적립 가능한 포인트 표시하기

Feed 진입 경로를 추가한 UI에 아래 그림과 같이 적립 가능한 포인트를 표시해 아직 Feed에 진입하지 않은 사용자의 참여율을 높일 수 있습니다.

적립 가능한 포인트를 사용자에게 미리 보여 주려면, 광고 할당 받기 토픽의 설명을 참고해 FeedHandler에 preload()를 호출한 후 onPreloaded() 콜백이 호출되면 getTotalReward()를 호출하세요.

다음은 onResume()을 실행할 때마다 Feed를 새로고침하고 뷰를 업데이트하는 예시입니다.

  • 사용자가 광고를 참여하여 리워드를 받거나, 피드를 아래로 스크롤하여 적립 가능한 새로운 광고를 불러올 경우 피드 진입 뷰에 표시된 적립 가능한 포인트 값이 정확하지 않을 수 있습니다.

  • 사용자가 개인 정보 제공에 동의하지 않거나 다른 이유로 인해 해당 기능을 구현해도 UI에 적립 가능 포인트가 표시되지 않는 경우, FeedHandler.FeedPreloadListeneronError에서 문제를 해결할 수 있습니다.

    ...
    private FeedHandler feedHandler;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity);
        feedHandler = new FeedHandler(this, YOUR_FEED_UNIT_ID);
    }

    @Override
    protected void onResume() {
        super.onResume();

        feedHandler.preload(new FeedHandler.FeedPreloadListener() {
            @Override
            public void onPreloaded() {
                updateMessages(feedHandler.getTotalReward());
            }

            @Override
            public void onError(AdError adError) {
                updateMessages(0); // 적립 가능 포인트의 표시 오류 처리
            }
        });
    }
    
    private void updateMessages(final int points) {
      // 적립 가능한 포인트 안내 문구
    }
    ...
  • No labels