...
Parameters | Description |
---|---|
| snackbar나 toast를 사용할 때 인자로 넘겨주는 context입니다. |
| snackbar를 사용할 때 인자로 넘겨주는 view입니다. |
| snackbar를 사용할 수 있는 상태인지를 알려주는 flag입니다. |
| 적립된 리워드 포인트 양을 나타내는 인자입니다. 해당 인수를 사용해서 커스텀 메시지를 formatting 하면 유저에게 좀 더 구체적인 피드백을 제공할 수 있습니다. |
Preview Message 커스터마이징
CustomPreviewMessage
CustomPreviewMessage 는 6시간 간격으로 서버에 설정된 CustomPreviewConfig 를 받아와서 frequency capping 후 PreviewMessage 를 보여주는 기능입니다. 따라서 서버에 CustomPreviewConfig 설정하는 작업이 선행되어야합니다. (frequency capping 에 의해 CustomPreviewMessage 가 보여져야 할 경우 AdPreview 와 ArticlePreview 보다 우선적으로 보여집니다.)
CustomPreviewMessage 는 두가지 영역에 표시됩니다.
Pop 의 CustomPreviewMessage 영역 (그림1)
설정된 기간, 시간 내에 dipu, tipu, dcpu, tcpu 에 따라 frequency capping 됩니다.
frequency capping 에 의해 CustomPreviewMessage 가 보여져야 할 경우 AdPreview 와 ArticlePreview 보다 우선적으로 보여집니다.
PopFeedHeader 의 CustomPreviewMessage 영역 (그림2)
frequency capping 되지 않고 설정된 기간, 시간내 라면 보여집니다.
PopConfig 를 통해 customize 가능합니다
header 를 설정하지 않으면 CustomPreviewMessage 를 안보이게 설정 가능합니다
그림1. Pop 에 CustomPreviewMessage 가 표시된 모습
...
그림2. PopFeedHeader 에 CustomPreviewMessage 가 표시된 모습
...
PopFeedHeader Customize (그림 2)
DefaultPopHeaderViewAdapter
를 상속받아CustomPopHeaderViewAdapter
를 만들고getCustomPreviewMessageLayout
를 오버라이드 합니다.getCustomPreviewMessageLayout
의 파라미터인CustomPreviewMessage
에 message, landingUrl, iconUrl 정보가 담겨있습니다.line 9~17
3번에서 받아온 정보를 토대로 직접 layout 을 구성하고, clickEvent 처리할 수 있습니다.PopConfig.feedHeaderViewAdapterClass
를 통해CustomPopHeaderViewAdapter
를 설정합니다.
Code Block | ||
---|---|---|
| ||
public class CustomPopHeaderViewAdapter extends DefaultPopHeaderViewAdapter {
@Nullable
@Override
protected View getCustomPreviewMessageLayout(Context context, ViewGroup parent, CustomPreviewMessage customPreviewMessage) {
final LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (inflater == null) {
return null;
}
View viewCustomPreviewMessage = inflater.inflate(R.layout.view_custom_preview_message, parent, false);
final TextView textCustomPreviewMessageTitle = viewCustomPreviewMessage.findViewById(R.id.textCustomPreviewMessageTitle);
textCustomPreviewMessageTitle.setText(customPreviewMessage.getMessage());
viewCustomPreviewMessage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startDeeplinkActivity(context, customPreviewMessage.getLandingUrl());
}
});
return viewCustomPreviewMessage;
}
}
final PopConfig popConfig = new PopConfig.Builder(getApplicationContext(), UNIT_ID_POP)
...(생략)...
.feedHeaderViewAdapterClass(CustomPopHeaderViewAdapter.class)
.build(); |
...
title | 2.17 미만 버전 |
---|
DefaultPopHeaderViewAdapter
를 상속받아CustomPopHeaderViewAdapter
를 만들고getCustomPreviewMessageLayout
를 오버라이드 합니다.getCustomPreviewMessageLayout
의 파라미터인CustomPreviewMessage
에 message, landingUrl, iconUrl 정보가 담겨있습니다.line 9~17
3번에서 받아온 정보를 토대로 직접 layout 을 구성하고, clickEvent 처리할 수 있습니다.line 24
FeedConfig.feedHeaderViewAdapterClass
를 통해 1번에서 생성한CustomPopHeaderViewAdapter
를 설정합니다.line 29
PopConfig.feedConfig
를 통해 5번에서 설정한 FeedConfig 를 설정합니다.
Code Block | ||
---|---|---|
| ||
public class CustomPopHeaderViewAdapter extends DefaultPopHeaderViewAdapter {
@Nullable
@Override
protected View getCustomPreviewMessageLayout(Context context, ViewGroup parent, CustomPreviewMessage customPreviewMessage) {
final LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (inflater == null) {
return null;
}
View viewCustomPreviewMessage = inflater.inflate(R.layout.view_custom_preview_message, parent, false);
final TextView textCustomPreviewMessageTitle = viewCustomPreviewMessage.findViewById(R.id.textCustomPreviewMessageTitle);
textCustomPreviewMessageTitle.setText(customPreviewMessage.getMessage());
viewCustomPreviewMessage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startDeeplinkActivity(context, customPreviewMessage.getLandingUrl());
}
});
return viewCustomPreviewMessage;
}
}
final FeedConfig popFeedConfig = new FeedConfig.Builder(getApplicationContext(), UNIT_ID_POP)
...(생략)...
.feedHeaderViewAdapterClass(CustomPopHeaderViewAdapter.class)
.build();
final PopConfig popConfig = new PopConfig.Builder(getApplicationContext(), UNIT_ID_POP)
.feedConfig(popFeedConfig)
...(생략)...
.build(); |
(Optional) PopFeedHeader에 CustomPreviewMessage 사용 여부 설정
PopFeedHeader 에 CustomPreviewMessage 보이지 않도록 설정
PopConfig
설정시 PopConfig.feedHeaderViewAdapterClass
를 설정 하지 않으면 PopFeedHeader 의 CustomPreviewMessage 를 보이지 않게 설정할 수 있습니다.
PopFeedHeader 에 DefaultPreviewMessage 보이도록 설정
PopConfig
설정시 PopConfig.feedHeaderViewAdapterClass(DefaultPopHeaderViewAdapter.class)
를 설정 하면 기본 제공하는 DefaultPreviewMessage 를 사용할 수 있습니다. (그림 2 참조)
Expand | ||
---|---|---|
| ||
|
(Optional) Preview Interval 설정
PopConfig.previewIntervalInMillis
를 통해서 Preview interval 을 설정합니다. AdPreview, ContentPreview/CustomPreviewMessage 동일하게 interval 이 설정됩니다.
Code Block | ||
---|---|---|
| ||
final PopConfig popConfig = new PopConfig.Builder(getApplicationContext(), UNIT_ID_POP)
.previewIntervalInMillis(1 * 60 * 60 * 1000) // 1 hour
...(생략)...
.build(); |
PopAdMessageViewClass
...
광고가 있는 경우 PopAdMessageViewClass
를 이용하여 말풍선(preview)을 보여줍니다. 기본 클래스에서는 현재 적립가능한 포인트와 몇초후에 닫히는지 보여줍니다. 해당 클래스는 PopAdMessageView
를 상속받아서 작성해야 합니다. 다음 함수들을 오버라이드 할 수 있습니다.
updateView
: 매초마다 말풍선을 업데이트 하는데 업데이트 해야 할때마다 호출됩니다. 남은 시간(초)과 적립가능한 reward 값이 인자로 넘어옵니다.getDurationInSeconds
몇초동안 유지될 지 return해 줘야 합니다. 5초를 권장합니다.
...
title | 예제 코드 |
---|
Code Block | ||
---|---|---|
| ||
public class MyPopAdMessageView extends PopAdMessageView {
private TextView textTitle, textDescription;
public MyPopAdMessageView(@NonNull Context context) {
super(context);
LayoutInflater.from(context).inflate(R.layout.view_my_pop_ad_message, this);
this.textTitle = findViewById(R.id.textTitle);
this.textDescription = findViewById(R.id.textDescription);
}
@Override
public void updateView(int reward, int remainSeconds) {
textTitle.setText(reward + "포인트 적립 가능합니다.");
textDescription.setText(remainSeconds + "초 후에 닫힙니다.");
}
@Override
public int getDurationInSeconds() {
return 5;
}
} |
사용법
Code Block | ||
---|---|---|
| ||
new PopConfig.Builder(getApplicationContext(), "POP_UNIT_ID")
.popAdMessageViewClass(MyPopAdMessageView.class) |
PopArticleMessageViewClass
광고가 없는 경우 PopArticleMessageViewClass
를 이용하여 말풍선(preview)을 보여줍니다. 기본 클래스에서는 로드된 첫번째 기사의 제목과 몇초후에 닫히는지를 보여줍니다. 해당 클래스는 PopArticleMessageView
를 상속받아서 작성해야 합니다. 다음 함수들을 오버라이드 할 수 있습니다.
updateView
: 매초마다 말풍선을 업데이트 하는데 업데이트 해야 할때마다 호출됩니다. 남은 시간(초)과 기사의 제목이 인자로 넘어옵니다.getDurationInSeconds
: 몇초동안 유지될 지 return해 줘야 합니다. 5초를 권장합니다.getNativeArticleView
:NativeArticleView
클래스의 인스턴스를 반환합니다.NativeArticleView
는 LinearLayout을 상속받아 Impression과 Click을 처리합니다.PopArticleMessageViewClass
의 뷰를 다음과 같이 설정합니다.Code Block language xml <?xml version="1.0" encoding="utf-8"?> <com.buzzvil.buzzad.benefit.presentation.article.NativeArticleView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/my_pop_message_native_article" android:layout_width="wrap_content" android:layout_height="wrap_content" android:clipToPadding="false"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:maxWidth="210dp" android:maxLines="2" android:text="Article preview title here."/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="disappearing..." /> </LinearLayout> </com.buzzvil.buzzad.benefit.presentation.article.NativeArticleView>
Expand | |||||
---|---|---|---|---|---|
| |||||
|
사용법
Code Block | ||
---|---|---|
| ||
new PopConfig.Builder(getApplicationContext(), "POP_UNIT_ID")
.popArticleMessageViewClass(MyPopArticleMessageView.class) |