이 문서에서 가이드 하는 내용은 BuzzAd SDK의 Feed 지면 이용 시 기획에 따라 선택적으로 적용할 수 있습니다.
개인정보 보호법과 구글 정책에 따라, 개인정보 수집 및 사용에 대한 유저의 동의가 필요합니다. 미동의 시 Feed 지면을 이용할 수 없습니다. 버즈빌 SDK에서는 개인정보 수집 동의 UI를 제공하고 있으며 아래 그림에서 UI를 확인할 수 있습니다.
개인정보 수집 동의 UI와 관련한 API는 다음과 같습니다.
// 개인정보 수집 동의 UI를 보여주는 API BuzzAdBenefit.getPrivacyPolicyManager().showContentUI(context, listener); // 개인정보 수집 동의에 대해 `동의함`을 표시 BuzzAdBenefit.getPrivacyPolicyManager().grantConsent(); // 개인정보 수집 동의에 대해 `동의하지 않음`을 표시 BuzzAdBenefit.getPrivacyPolicyManager().revokeConsent(); // 개인정보 수집 동의에 `동의함` 여부를 확인 BuzzAdBenefit.getPrivacyPolicyManager().isConsentGranted(); |
동의를 받지 않은 상태에서는 Feed 지면을 이용할 수 없습니다. |
앱에서 자체적으로 개인정보 수집 동의를 받고 있다면, 아래의 API를 통해 버즈빌의 개인정보 취급방침 동의 UI를 숨길 수 있습니다.
|
기본적으로 제공되는 FeedActivity
를 사용하는 방식을 권장하지만, Fragment로도 Feed 지면을 연동할 수 있습니다.
1. layout xml 에 다음과 같이 추가합니다.
<fragment android:id="@+id/feed_fragment" android:name="com.buzzvil.buzzad.benefit.presentation.feed.FeedFragment" android:layout_width="match_parent" android:layout_height="match_parent" /> |
2. XML에 추가 후 코드에서 아래와 같이 init을 호출해야 합니다.
class MyActivity extends Actvity { private FeedHandler feedHandler; @Override public void onCreate() { super.onCreate(); ...생략... // 광고를 새로 받기 위해 필요한 부분입니다. feedHandler = new FeedHandler(context, "YOUR_FEED_UNIT_ID"); final FeedFragment feedFragment = (FeedFragment) getSupportFragmentManager().findFragmentById(R.id.feed_fragment); if (feedFragment != null) { feedFragment.init(YOUR_FEED_CONFIG); } } ...생략... } |
|
마지막 광고까지 스크롤이 된 경우, 더 많은 광고를 보여줄 수 있도록 추가로 광고를 할당합니다. 이 기능을 원치 않는 경우에는 아래 코드를 통해 비활성화할 수 있습니다.
final FeedConfig feedConfig = new FeedConfig.Builder(context, "YOUR_FEED_UNIT_ID") ...생략... .autoLoadingEnabled(false) .build(); |
많은 광고 속에서 사용자가 보고 싶은 광고를 분류하여 볼 수 있도록, Tab과 Filter 기능이 기본으로 제공됩니다. Tab은 일반 광고와 쇼핑 적립형 광고를 구분하는 역할을 합니다. Filter는 보다 광고를 카테고리 별로 세분화하여 볼 수 있게 합니다. 이 기능들을 원하지 않는 경우, 이 문서에서 설명하는 방식으로 설정하여 사용하지 않게 할 수 있습니다.
FeedConfig
를 생성할 때 tabUiEnabled(false)
를 호출하여 Tab을 사용하지 않게 할 수 있습니다.
final FeedConfig feedConfig = new FeedConfig.Builder(context, "YOUR_FEED_UNIT_ID") ...생략... .tabUiEnabled(false) // tab UI를 사용하고 싶지 않을 때, false로 설정합니다. .build(); |
Tab은 커스터마이징이 가능합니다. 이에 대해서는 다음 링크를 참조해 주세요. |
Tab을 비활성화하면 Filter도 비활성화됩니다. |
Tab은 사용하지만 Filter는 사용하고 싶지 않은 경우, FeedConfig
를 생성할 때 filterUiEnabled(false)
를 호출하면 됩니다.
final FeedConfig feedConfig = new FeedConfig.Builder(context, "YOUR_FEED_UNIT_ID") ...생략... .filterUiEnabled(false) // Filter UI를 사용하고 싶지 않을 때, false로 설정합니다. .build(); |
Filter는 커스터마이징이 가능합니다. 이에 대해서는 다음 링크를 참조해 주세요. |
Feed 지면에 진입한 시점에 노출할 광고가 없다면 광고 미할당 안내 UI가 표시됩니다. 미할당 안내 디자인은 자체 구현하여 변경할 수 있습니다.
광고 미할당 안내 디자인을 직접 구현하려면 다음의 절차를 따르세요.
Feed 지면에 광고가 할당되지 않았을 때의 화면에 추가할 에러 이미지(feedErrorImageView
), 타이틀(feedErrorTitle
), 상세 설명(feedErrorDescription
) 레이아웃을 작성하세요.
<!-- custom_feed_error_view.xml --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="vertical" android:padding="40dp"> <ImageView android:id="@+id/feedErrorImageView" android:layout_width="match_parent" android:layout_height="wrap_content"/> <TextView android:id="@+id/feedErrorTitle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="32dp" android:textColor="@color/bz_text_emphasis" android:textSize="16sp" /> <TextView android:id="@+id/feedErrorDescription" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="8dp" android:textAlignment="center" android:textColor="@color/bz_text_description" android:textSize="14sp" /> </LinearLayout> |
FeedErrorViewHolder
를 구현하는 커스텀 클래스 CustomErrorView
를 새로 생성하고, 자동 완성되는 GetView()
메소드를 다음과 같이 구현하세요.
public class CustomErrorView extends FeedErrorViewHolder { @NonNull @Override public View getErrorView(@NonNull Activity activity) { // TODO: 1번에서 생성한 custom_feed_error_view 레이아웃을 inflate View errorView = activity.getLayoutInflater().inflate(R.layout.custom_feed_error_view, null, false); final ImageView errorImageView = errorView.findViewById(R.id.feedErrorImageView); final TextView errorTitle = errorView.findViewById(R.id.feedErrorTitle); final TextView errorDescription = errorView.findViewById(R.id.feedErrorDescription); errorImageView.setImageResource(R.drawable.bz_ic_feed_profile_coin); // 에러 이미지 설정 errorTitle.setText("타이틀: 광고가 없습니다. "); // 에러 타이틀 텍스트 설정 errorDescription.setText("디스크립션: 할당된 광고가 없습니다!"); // 에러 상세 텍스트 설정 return errorView; } } |
FeedConfig
의 feedErrorViewHolderClass
속성에 이전 단계에서 생성한 CustomErrorView
클래스를 추가하세요.
// Feed 지면 초기화 // TODO: feedErrorViewHolderClass 속성에 2번에서 생성한 CustomErrorView 클래스를 설정합니다. final FeedConfig feedConfig = new FeedConfig.Builder(YOUR_FEED_UNIT_ID) .feedErrorViewHolderClass(CustomErrorView.class) .build(); |
사용자의 출생년도와 성별 정보를 설정하지 않으면 Feed 상단에 프로필 정보 입력을 권장하는 배너가 표시됩니다. 이 배너를 원하지 않는 경우, 이 문서에서 설명하는 방법을 통해 비활성화할 수 있습니다.
사용자의 출생년도와 성별 정보를 입력하는 방법은 이 문서를 참고하시기 바랍니다. |
FeedConfig
를 생성할 때 profileBannerEnabled(false)
를 호출하여 프로필 입력 배너가 보이지 않게 할 수 있습니다.
final FeedConfig feedConfig = new FeedConfig.Builder(context, "YOUR_FEED_UNIT_ID") ...생략... .profileBannerEnabled(false) // 프로필 배너를 노출하고 싶지 않을 때 false로 설정합니다. .build(); |
Feed에 광고 지면을 추가하여 매출 증가를 노릴 수 있습니다.
액션형 광고가 랜딩되는 BottomSheet에 배너 광고를 추가할 수 있습니다.
배너 광고는 애드 네트워크(ADN)에서 내려오는 광고만 보여줍니다. |
배너 광고 지면은 피드와 다른 별도의 지면이므로, 이를 사용하기 위해서는 별도의 Unit ID가 필요합니다. 버즈빌 담당자를 통해 BottomSheet의 배너 광고를 위한 Unit ID의 발급을 요청하시기 바랍니다. |
아래 FeedConfig
를 생성하는 코드에서 YOUR_FEED_BOTTOM_SHEET_UNIT_ID
부분에 발급 받은 배너 전용 Unit ID를 넣어줍니다.
private void initializeBuzzAdBenefit(Context context) { final FeedConfig feedConfig = new FeedConfig.Builder(context, YOUR_FEED_UNIT_ID) ...생략... .bottomSheetUnitId(YOUR_FEED_BOTTOM_SHEET_UNIT_ID) .build(); final BuzzAdBenefitConfig buzzAdBenefitConfig = configBuilder .setFeedConfig(feedConfig) .build(); BuzzAdBenefit.init(context, buzzAdBenefitConfig); } |
Feed 종료 시 인터스티셜 광고 지면이나 액션형 광고의 랜딩 BottomSheet에 배너 지면에 사용하는 광고는 애드 네트워크 광고 입니다. 애드 네트워크를 이용하기 위해서는 다음의 종속성 설정이 필요합니다.
dependencies { implementation("com.buzzvil.mediation:sdk-adfit:3.4.0.1") implementation("com.buzzvil.mediation:sdk-outbrain:3.9.2.1") implementation("com.buzzvil.mediation:sdk-five:1.1.0") } |
아래 코드와 같이 FeedConfig
를 생성할 때 Pop을 사용하도록 설정하면 Pop을 이용할 수 있습니다.
FeedConfig feedConfig = new FeedConfig.Builder(getApplicationContext(), YOUR_FEED_UNIT_ID) ...생략... .optInFeatureList(Collections.singletonList(OptInFeature.Pop)) .build(); final BuzzAdBenefitConfig buzzAdBenefitConfig = new BuzzAdBenefitConfig.Builder(context) ...생략... .setFeedConfig(feedConfig) .build(); BuzzAdBenefit.init(this, buzzAdBenefitConfig); |
이를 적용하면 Feed 지면에 Pop 옵트인 버튼이 노출됩니다. 자세한 사항은 여기에서 확인할 수 있습니다.