...
Code Block |
---|
<resources> ... <color name="benefit_native_bg_cta_button_normal">#1290FF</color> <color name="benefit_native_bg_cta_button_pressed">#0072E1</color> <color name="benefit_native_bg_cta_button_disabled">#DDDEDF</color> </resources> |
말풍선 (MessagePreview) 기능
Pop 의 말풍선(MessagePreview) 기능을 이용해서 원하는 메세지를 노출 할 수 있습니다.
...
Step 1. MessagePreviewOption 설정
...
Parameter
...
Value
...
Description
...
message: String
...
1 ~ 30 character
...
말풍선에 보여질 메세지
...
icon: Int
...
drawable resource id
...
(Optional) 말풍선에서 사용할 Icon drawable resource id. 설정하지 않으면 메세지만 보여집니다.
...
startTimeMillis: Long
...
millisecond
...
말풍선 노출 시작 시간
...
endTimeMillis: Long
...
millisecond
...
말풍선 노출 끝나는 시간
...
intervalMillis: Long
...
millisecond
...
말풍선이 노출 될 최소 간격 (ex: 30 * 60 * 1000L = 30분이 지나야 말풍선이 다시 보입니다.)
...
version: Int
...
1 ~ 2,147,483,647
...
현재 말풍선의 version. 같은 version 을 사용해서 setMessagePreview 함수를 호출해도 재설정 되지 않으며, version 을 올려서 사용하면 재설정 됩니다.
Step 2. setMessagePreview(@NonNull MessagePreviewOption messagePreviewOption)
호출
...
CustomPreviewMessage
CustomPreviewMessage 는 6시간 간격으로 서버에 설정된 CustomPreviewConfig 를 받아와서 frequency capping 후 PreviewMessage 를 보여주는 기능입니다. 따라서 서버에 CustomPreviewConfig 설정하는 작업이 선행되어야합니다. (frequency capping 에 의해 CustomPreviewMessage 가 보여져야 할 경우 AdPreview 와 ArticlePreview 보다 우선적으로 보여집니다.)
서버에서 클라이언트로 전달되는 CustomPreviewMessageConfig 는 다음과 같은 정보를 가지고 있습니다.
Code Block |
---|
{
"id": 5,
"unit_id": 1234567890,
"message": "오늘도 아케이드 게임하고 최대 90P 팡팡!",
"landing_url": "deeplink://landing?activity=arcade",
"start_date": "2020-03-01T00:00:00Z",
"end_date": "2020-03-31T23:59:59Z",
"start_hour_minute": "21:00",
"end_hour_minute": "23:00",
"dipu": 2,
"tipu": 60,
"dcpu": 1,
"tcpu": 30,
"icon": "http://imagelocation/arcade_icon.png"
} |
이름 | 내용 |
---|---|
| configId (messageId), 서버에서 자동 할당합니다 |
| pop unitId |
| 랜딩 url or deeplink |
| config 시작 일 (UTC, 시간은 무시됩니다) |
| config 종료 일 (UTC, 시간은 무시됩니다) |
| config 시작 시간 (분은 무시됩니다) |
| config 종료 시간 (분은 무시됩니다) |
| Frequency capping: daily impression per user |
| Frequency capping: total impression per user |
| Frequency capping: daily click per user |
| Frequency capping: total click per user |
| icon url |
CustomPreviewMessage 는 두가지 영역에 표시됩니다.
Pop 의 CustomPreviewMessage 영역 (그림1)
설정된 기간, 시간 내에 dipu, tipu, dcpu, tcpu 에 따라 frequency capping 됩니다.
frequency capping 에 의해 CustomPreviewMessage 가 보여져야 할 경우 AdPreview 와 ArticlePreview 보다 우선적으로 보여집니다.
PopFeedHeader 의 CustomPreviewMessage 영역 (그림2)
frequency capping 되지 않고 설정된 기간, 시간내 라면 보여집니다.
FeedConfig 를 customize 가능합니다
FeedConfig 를 사용하면서 header 를 설정하지 않으면 CustomPreviewMessage 를 안보이게 설정 가능합니다
...
그림1. Pop 에 CustomPreviewMessage 가 표시된 모습
...
그림2. PopFeedHeader 에 CustomPreviewMessage 가 표시된 모습
Step 1. (Optional) PopFeedHeader Customize
DefaultPopHeaderViewAdapter
를 상속받아CustomPopHeaderViewAdapter
를 만들고getMessagePreviewLayout
를 오버라이드 합니다.getMessagePreviewLayout
의 파라미터인MessagePreview
안에 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 getMessagePreviewLayout(Context context, ViewGroup parent, MessagePreview messagePreview) { final LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); newif MessagePreviewOption(inflater == null) { return null; } getString View viewMessagePreview = inflater.inflate(R.stringlayout.pop_preview_messsage), view_custom_preview_message, parent, false); final TextView messagePreviewText = viewMessagePreview.findViewById(R.id.textCustomPreviewMessageTitle); messagePreviewText.setText(messagePreview.getMessage()); viewMessagePreview.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startDeeplinkActivity(context, messagePreview.getLandingUrl()); } }); return viewMessagePreview; } } startTimeInMillis, final FeedConfig popFeedConfig = new FeedConfig.Builder(getApplicationContext(), UNIT_ID_POP) ... .feedHeaderViewAdapterClass(CustomPopHeaderViewAdapter.class) endTimeInMillis, ... .build(); final PopConfig popConfig = intervalInMillis,new PopConfig.Builder(getApplicationContext(), UNIT_ID_POP) ... .feedConfig(popFeedConfig) version ... ) .build(); |
Step 2. (Optional)
...
기존에 설정 된 말풍선을 제거하고 싶을 때 아래의 함수를 호출 하면 MessagePreview 가 더 이상 노출되지 않습니다.
말풍선을 제거해도 Article Preview 와 Ad Preview 는 정상적으로 표시됩니다.
말풍선 제거 후에는 말풍선 정보가 전부 삭제되므로, version 은 1 부터 재설정 가능합니다.
...
FeedConfig 사용 설정
- PopFeedHeader 에 CustomPreviewMessage 보이지 않도록 설정
PopConfig.feedConfig
설정시 FeedConfig.feedHeaderViewAdapterClass
를 설정 하지 않으면 PopFeedHeader 의 CustomPreviewMessage 를 보이지 않게 설정할 수 있습니다.
- PopFeedHeader 에 DefaultPreviewMessage 보이도록 설정
PopConfig.feedConfig
설정시 FeedConfig.feedHeaderViewAdapterClass(DefaultPopHeaderViewAdapter.class)
를 설정 하면 기본 제공하는 DefaultPreviewMessage 를 사용할 수 있습니다. (그림 2 참조)
Step 3. (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(); |
PopConfig Advanced
PopAdMessageViewClass
...