Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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"
}

이름

내용

id

configId (messageId), 서버에서 자동 할당합니다

unit_id

pop unitId

landing_url

랜딩 url or deeplink

start_date

config 시작 일 (UTC, 시간은 무시됩니다)

end_date

config 종료 일 (UTC, 시간은 무시됩니다)

start_hour_minute

config 시작 시간 (분은 무시됩니다)

end_hour_minute

config 종료 시간 (분은 무시됩니다)

dipu

Frequency capping: daily impression per user

tipu

Frequency capping: total impression per user

dcpu

Frequency capping: daily click per user

tcpu

Frequency capping: total click per user

icon

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

  1. DefaultPopHeaderViewAdapter 를 상속받아 CustomPopHeaderViewAdapter 를 만들고

  2. getMessagePreviewLayout 를 오버라이드 합니다.

  3. getMessagePreviewLayout 의 파라미터인 MessagePreview 안에 message, landingUrl, iconUrl 정보가 담겨있습니다.

  4. line 9~17 3번에서 받아온 정보를 토대로 직접 layout 을 구성하고, clickEvent 처리할 수 있습니다.

  5. line 24 FeedConfig.feedHeaderViewAdapterClass를 통해 1번에서 생성한 CustomPopHeaderViewAdapter 를 설정합니다.

  6. 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

...